INP
STA A
INP
STA B
LDA 99
STA C
loop LDA A
SUB B
STA A
LDA C
ADD Y
STA C
LDA A
BRP loop
LDA C
OUT
HLT
A DAT
B DAT
C DAT
Y DAT 1
你好,我是一个新手,这个数字除法程序应该返回6,当A输入为24,B输入为4时,但是当我运行它时,它输出7,这是没有意义的。我知道它在while循环的开始和结束时将A加载到累加器中,所以我没有将它包括在跟踪表中。I'm not a credible user yet it makes me use links for pictures
1条答案
按热度按时间yjghlzjz1#
以下是一些问题:
BRP
也将分支,这解释了为什么您的测试用例得到7而不是6。HLT
为零,因此可以给予该行标记为zero
,并使用LDA zero
而不是LDA 99
numerator
、divisor
、quotient
和one
,来代替A、B、C和Y。BRP
的工作方式在不同的LMC仿真器上可能会有所不同。为了确保您有最大的兼容性,请在SUB
之后立即执行BRP
,因为在SUB
-溢出之后留在累加器中的值在不同的仿真器上可能会不同,其次,一些仿真器在执行LDA
时可能会重置negative-flag,使BRP
总是在LDA
之后分支。通过将BRP
放在SUB
之后,您也解决了第一个问题。下面是一个可运行的修正版本。它加载了示例输入,但小GUI允许您使用其他输入进行测试: