You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复LMC除法程序无限循环问题并正确输出商和余数

LMC除法程序问题修复与优化方案

原有代码核心故障点

  • 商Q初始值错误:初始赋值为99而非0,导致商计算结果完全错误
  • 循环跳出条件缺失:第一个循环仅判断被除数NUM1为0时跳出,当NUM1减NUM2结果为负时没有跳出逻辑,直接触发无限循环
  • 执行路径断裂:第一个循环的无条件跳转BRA LOOP始终跳回循环开头,后续计算乘积、余数的代码永远无法被执行
  • 指令语法错误:使用了LMC指令集不存在的LOAD指令,正确加载指令为LDA;OUT指令无需操作数,仅会输出累加器当前存储的值,编写OUT Q属于语法错误
  • 逻辑冗余:额外增加乘法再求余数的步骤完全没有必要,减法循环结束后剩余的被除数本身就是余数

最简优化实现方案

直接通过减法循环同时计算商和余数,不需要额外的乘法步骤,代码如下:

INP         ; 输入被除数
        STA NUM1
        INP         ; 输入除数
        STA NUM2
        BRZ END     ; 除数为0直接结束,可根据需求补充异常输出
        LDA 0       ; 初始化商为0
        STA Q
LOOP    LDA NUM1
        SUB NUM2    ; 尝试减去除数
        BRP CONT    ; 结果非负说明可以继续减
        BRA OUTPUT  ; 结果为负,跳出循环输出
CONT    STA NUM1    ; 更新被除数为减后的值
        LDA Q
        ADD ONE     ; 商+1
        STA Q
        BRA LOOP
OUTPUT  LDA Q
        OUT         ; 输出商
        LDA NUM1
        OUT         ; 输出余数
END     HLT
NUM1    DAT
NUM2    DAT
Q       DAT
ONE     DAT 1

上述代码逻辑验证:以输入被除数5、除数2为例,循环结束后Q值为2,NUM1剩余值为1,输出结果符合预期,无冗余运算,不会出现无限循环问题。

内容的提问来源于stack exchange,提问作者Ian K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:15:08