我正在尝试编写一个 LMC 程序,它接受两个整数输入,将它们相除,然后产生商和余数。首先,我将问题分解为 4 个阶段:
1.将 num1 除以 num2 得到商 q。
2.将q和num2相乘得到确切的乘数,并将其存储在num2中。
3.从num1中减去num2,并将答案存储在rem中。
4.输出q和rem。
这是我写的代码:
INP
STA NUM1
LDA NUM1
STA ORG
INP
STA NUM2
BRZ END
LDA 99
STA Q
LOOP LDA NUM1
BRZ END
LDA NUM1
SUB NUM2
STA NUM1
LDA Q
ADD ONE
STA Q
BRA LOOP
LDA Q
STA NUM3
LDA NUM2
SUB ONE
STA NUM2
LOOP LDA NUM2
BRZ END
LDA NUM3
ADD Q
STA NUM3
LDA NUM2
SUB ONE
STA NUM2
BRA LOOP
LOAD ORG
SUB NUM3
STA REM
END LDA Q
OUT Q
LDA REM
OUT REM
HLT
NUM1 DAT
NUM2 DAT
ORG DAT
Q DAT
ONE DAT 1
TOTAL DAT
NUM3 DAT
REM DAT
当我尝试在 LMC 模拟器中运行代码时,它不会产生结果,而是无限期地继续计算。我怎样才能让它工作?有一个更好的方法吗?任何帮助是极大的赞赏。