我正在尝试用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
发布于 2018-11-17 22:25:32
使用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
https://stackoverflow.com/questions/36511069
复制相似问题