首页 > 解决方案 > 保持输入 LMC 的数字总数

问题描述

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

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

代码:

START   INP    
        ADD TOTAL
        OUT
        BRA START
        HLT

TOTAL   DAT 000

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

标签: assemblylittle-man-computer

解决方案


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

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

  • 每次计算总和时更新总和。目前,一旦输出总和,您就会“忘记”总和,因此在下一个周期中,总和仍将为零。只需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>


推荐阅读