LMC 中的输出和复位列表

问题描述

我正在处理这个编码挑战:

为 Little Man Computer 编写一个程序,允许用户管理值列表。它应该以一个空列表开始,然后按如下方式处理输入:

如果输入是:

  • 小于 100:将此值添加到列表中,除非列表已有 10 个值,在这种情况下该值将被忽略
  • 995:将列表清空
  • 996:输出列表当前具有的值的数量
  • 997:按照添加到列表中的顺序输出列表当前具有的每个值
  • 998:以相反的顺序输出列表当前具有的每个值
  • 999:结束程序
  • 忽略任何其他值

只要输入值不是 999,输入值的处理就会继续。

当输入 997 时,我在获取代码以按正向顺序打印存储的列表时遇到问题。我想我可能混淆了 ADDSUB 指令。当输入 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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)