2

LMC 是@http://gcsecomputing.org.uk/lmc/index.html 上的一个学习工具一组问题是“编写一个程序以升序输出数字 1 到 10。

编写一个程序,按降序输出数字 1 到 10。”

使用指令集http://gcsecomputing.org.uk/lmc/instruction_set.html我能够得到这个

loop LDA value1
OUT
SUB value2
STA value1
BRP loop

value1 DAT 10
value2 DAT 1

这从 10 计数到 0,但我不知道如何向上计数到 10 然后停止计数。非常感谢解决这两个问题的任何帮助。

4

1 回答 1

1

改变方向(SUB变成ADD),改变开始/结束值(value1, value2)并与10进行比较(通过做a SUBand BRP)来检测是否达到了结束值,并在递增之前执行此操作。

不要忘记将 a 添加HLT到您的程序中,因为您不希望在数据部分继续执行。

我还建议使用更有意义的变量名(DAT标签)。

start   LDA current
loop    OUT
        SUB until
        BRP exit
        LDA current
        ADD one
        STA current
        BRA loop
exit    HLT

current DAT 0
until   DAT 10
one     DAT 1

<script src="https://cdn.jsdelivr.net/gh/trincot/lmc@v0.6/lmc.js"></script>

于 2019-11-25T22:08:33.190 回答