所以,我在使用MARIE模拟器时遇到了一个问题。这是提示:
define a decimal variable X and set X = 0
define a decimal variable Y and set Y = 0
Input a number in decimal form from the keyboard
store the number in location X
Input a number in decimal form from the keyboard
store the number in location Y
If X > 0, then
X = X + 5
Else
X = Y - 2
Endif
Display X using the output instruction
编辑:当前代码:
org 100
input
store X
input
store Y
load X
skipcond 800
Jump Else
load X
Add A
store X
jump Endif
Else, load Y
Subt B
store X
Endif, Load X
Output
Halt
X, dec 0
Y, dec 0
A, dec 5
B, dec 2
我的问题来自这样一个事实:当你运行它时,数学运算不正确。例如,如果你为X输入4,答案是7,当它应该是9.有人能指出我出错的地方吗?
答案 0 :(得分:0)
您的错误是使用skipcond
的方式和时间。由于您在阅读Y之后立即使用它,因此无论用户输入的是什么,仍然在AC中,因此例如,如果输入4和10,则最终会得到15(10 + 5),然后向右跳到了结束。
您要做的是将X重新加载到AC中,然后使用skipcond
进行检查,然后进入逻辑的其余部分。您可能还想使用更多jump
来确保您正在执行正确的块。
答案 1 :(得分:0)
请告诉我这是否适合您:
org 100
input
store X
input
store Y
load X
skipcond 800
Jump Else
load X
Add Addr
store X
jump Endif
Else, load Y
Subt Subtr
store X
Endif, Load X
Output
Halt
X, dec 0
Y, dec 0
Addr, dec 5
Subtr, dec 2