如何在LMC中统计输入数字总数?代码问题求助
LMC代码修正:统计非0输入数量
原代码存在的问题
- 语法错误:
INP antall不符合LMC指令规范,INP指令不需要操作数,输入值直接存入累加器;antall标签下的STA、LDA指令缺少操作数,属于无效指令 - 逻辑错误:当前代码是累加输入的数值,而非统计输入的非0数字的数量
修正后的代码
开始 LDA 计数器 ; 初始化累加器为计数器初始值0 循环 INP ; 接收输入值到累加器 BRZ 输出结果 ; 如果输入为0,跳转到输出步骤 LDA 计数器 ; 取出当前计数 ADD 增量 ; 计数器加1 STA 计数器 ; 保存更新后的计数 BRA 循环 ; 回到输入循环 输出结果 LDA 计数器 ; 取出最终计数 OUT ; 输出计数结果 HLT ; 停止程序 计数器 DAT 0 ; 存储计数的变量,初始为0 增量 DAT 1 ; 用于每次加1的常量
代码说明
- 先初始化计数器为0,确保起始计数正确
- 每次输入后用
BRZ判断是否为0,是则跳出循环 - 非0输入时,将计数器加1并保存,然后回到输入循环
- 最后输出计数器的值,就是输入的非0数字总数
内容的提问来源于stack exchange,提问作者ali03
相关产品推荐
相关产品推荐

