【发布时间】:2022-01-04 02:23:25
【问题描述】:
我正在尝试编写一个 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 模拟器中运行代码时,它不会产生结果,而是无限期地继续计算。我怎样才能让它工作?有一个更好的方法吗?非常感谢任何帮助。
【问题讨论】:
标签: assembly multiplication integer-division little-man-computer