我正在尝试用MARIE汇编语言编写一个程序,它将使用重复减法来划分两个数字。我需要在达到零或负数之前计算所需的减法次数。我遇到了一些问题,到目前为止我的代码是:
Load A
Store A
Load, Load A
Subt B
Skipcond 800
Jump Endloop
Load C
Add One
Store C
Endloop, Output
Halt
A, DEC 10
B, DEC 2
C, DEC 0
One, DEC 1
任何帮助都会非常感激,因为我一直在努力解决这个问题
更新:
我已经改变了我的代码,但现在得到了一个无限循环 - 任何想法如何解决这个问题?
Input
Store A
Input
Store B
Load A
Skipcond 800
Jump Endloop
Loop, Subt B
Store A
Load X
Add One
Store X
Load A
Skipcond 400
Jump Loop
Load X
Endloop, Halt
A, DEC 0
B, DEC 0
X, DEC 0
One, DEC 1
答案 0 :(得分:1)
如果数字不能被分频器整除,请使用Skipcond 400
会有一个无穷循环,因为它会变为负数而不是零。
当余数不能被B整除时,需要注意不要使X递增。因此,要检查余数等于零,以便当A不再为正数时X可以递增。
Input
Store A
Input
Store B
Loop, Load A
Subt B
Store A
Skipcond 800
Jump Endloop / While X is positive it will continue
Load X
Add One
Store X
Jump Loop
IncrementX, Load X
Add One
Store X
Load A
Subt B
Store A
Endloop, Load A
Skipcond 000 /Skip if negative
Jump IncrementX
Load X
Output
Halt
A, DEC 0
B, DEC 0
X, DEC 0
One, DEC 1