保留 运行 个输入 LMC 的总数

Keeping a running total of numbers entered LMC

我正在制作一个程序,允许用户无限期地输入数字,直到他们输入“0”。一旦他们输入 0,程序就会停止。但是,我想将输入的每个数字添加到 运行 总数中,并在每次用户输入新数字时输出总数。例如:

输入=2
总计 = 2
输入 = 2
总计 = 4
输入 = 3
总计 = 7
输入 = 0
程序停止

代码:

START   INP    
        ADD TOTAL
        OUT
        BRA START
        HLT

TOTAL   DAT 000

上面的代码无限期地接受用户输入但输出单个数字(不保留 运行 总数)。我想知道如何保留所有输入数字的总计 运行 并在用户在 LMC 中输入 0 时停止程序。提前致谢。

您的代码中只缺少两件事:

  • 测试输入是否为零并停止程序。您可以在输入完成后立即使用简单的 BRZ 指令执行此操作,然后让它分支到 HLT 指令——为此需要一个标签。

  • 总计的update每次你都计算了总和。目前,一旦输出总和,您就会“忘记”总和,因此在下一个周期中总和仍将为零。加完后直接加一个STA TOTAL就可以了。

这是一个可运行的片段:

START   INP
        BRZ STOP   # stop when user entered 0
        ADD TOTAL
        STA TOTAL  # save result, so it accumulates
        OUT
        BRA START
STOP    HLT

TOTAL   DAT 000



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