1

所以,我在使用 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。有人能指出我哪里出错了吗?

4

2 回答 2

1

让我知道这是否适合您:

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
于 2014-11-05T02:18:26.397 回答
0

你的错误是你如何以及何时使用skipcond. 由于您在读取 ​​Y 后立即使用它,因此用户输入的内容仍然在 AC 中,因此例如,如果您输入 4 和 10,您最终会得到 15 (10+5),然后直接跳到 endif。

您要做的是将 X 重新加载到 AC 中,然后使用 进行检查,然后skipcond进入其余的逻辑。您可能还想使用更多jumps 来确保您正在执行正确的块。

于 2014-11-04T19:36:23.703 回答