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

LMC程序改造需求:识别非整除并重新输入,保留整除停机功能

解决方案

你的核心问题是没在除法循环结束后判断被除数是否完全减为0,原程序不管整除与否都会直接输出商,所以我们要在循环结束后加一个判断分支:如果被除数为0,就输出商并停机;否则输出0,重置变量后重新要求输入。

修改后的完整代码如下:

RESTART INP 
        STA DIVIDEND
        INP
        STA DIVISOR
LOOP    LDA DIVIDEND
        BRZ CHECK_DIVISIBLE  ; 被除数减到0时,跳去判断是否整除
        SUB DIVISOR
        STA DIVIDEND
        LDA ANSWER
        ADD INC
        STA ANSWER
        BRP LOOP             ; 结果非负就继续减,负数说明不够减了

CHECK_DIVISIBLE
        LDA DIVIDEND
        BRZ OUTPUT_ANSWER    ; 被除数为0,说明整除,输出商

        ; 走到这里说明不能整除,输出0并重启
        LDA ZERO
        OUT
        ; 重置所有变量,避免上一次数据干扰
        STA DIVIDEND
        STA DIVISOR
        STA ANSWER
        BRA RESTART          ; 跳回输入环节

OUTPUT_ANSWER
        LDA ANSWER
        OUT
        HLT                  ; 整除后直接停机

DIVIDEND DAT 0
DIVISOR DAT 0
ANSWER  DAT 0
INC     DAT 1
ZERO    DAT 0

关键修改点

  • 新增RESTART标签:把输入逻辑移到这个标签下,方便不能整除时跳转回来重新输入。
  • 新增CHECK_DIVISIBLE判断分支:循环结束后先检查被除数是否为0,区分整除/非整除情况。
  • 非整除分支处理:输出0后,用ZERO变量重置所有存储单元(被除数、除数、商),然后通过BRA RESTART强制跳回输入步骤。
  • 整除分支处理:直接输出商然后停机,保留原有的停机功能。

逻辑说明

  1. 当输入的两个数能整除时,除法循环会把被除数减到0,触发BRZ CHECK_DIVISIBLE,再通过BRZ OUTPUT_ANSWER输出商后停机。
  2. 当不能整除时,除法循环会因为减到负数跳出,此时被除数不为0,进入非整除分支:输出0 → 重置变量 → 回到输入界面等待新数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 00:15:33