我正在应对这个编码挑战:
为 Little Man Computer 编写一个程序,允许用户管理值列表。它应该从一个空列表开始,然后按如下方式处理输入:
如果输入是:
- 小于 100:将此值添加到列表中,除非列表已经有 10 个值,在这种情况下,忽略该值
- 995:使列表为空
- 996:输出列表当前拥有的值的个数
- 997:输出列表当前具有的每个值,按照它们添加到列表中的顺序
- 998:以相反的顺序输出列表当前具有的每个值
- 999:结束程序
- 任何其他值都被忽略
只要输入值不是 999,就会继续处理输入值。
当输入 997 时,我在获取代码以正向打印存储列表时遇到问题。我想我可能对ADD
和SUB
指令感到困惑。输入 995 时,我也无法正确重置存储的列表。
我能够正确编程的所有其他内容。
下面是我的代码:
START INP
STA TEMP
SUB NINES
BRZ end
LDA TEMP
SUB EIGHT
BRZ PRIT
lda temp
sub seven
brz printf
LDA TEMP
SUB SIX
BRZ DOOUT
LDA TEMP
SUB FIVE
BRZ RESET
LDA COUNT
SUB TEN
BRZ START
LDA TEMP
SUB HUND
BRP START
SIT LDA SINST
ADD COUNT
STA SLOC
LDA TEMP
SLOC DAT 0
LDA COUNT
ADD ONE
STA COUNT
BRA START
PRIT LDA COUNT
BRZ END
PRINTR LDA LINST
ADD COUNT
SUB ONE
STA LDIT
LDIT DAT 0
OUT
LDA COUNT
SUB ONE
STA COUNT
BRZ END
BRA PRINTR
---PRINTF LDA LINST
ADD COUNT
add ONE
STA LDIT
LDIT DAT 0
OUT
LDA COUNT
SUB ONE
STA COUNT
BRZ END
BRA PRINTF
doout lda count
out
bra start
reset lda zero
sta count
bra start
END HLT
TEMP DAT 0
COUNT DAT 0
ONE DAT 1
TWO DAT 2
TEN DAT 10
HUND DAT 100
SINST DAT 380
LINST DAT 580
five dat 995
six dat 996
seven dat 997
eight dat 998
NINES DAT 999