我被要求做以下事情:
编写MARIE代码以执行以下程序摘录。
If (x < y + z) {
x = x – y; z=z+1;
}
else y=y-1;
说明: - 使用“ORG”指令在地址200处启动程序。 - 程序结束时应包含以下标签和指令:
X, Dec 4
Y, Dec 2
Z, Dec 5
One, Dec 1
我写了这个:
ORG 200
Load X
Subt Y
Subt Z
Skipcond 000
Jump Else
If, Load X
Subt Y
Output
Load Z
Add One
Output
Else, Load Y
Subt One
Output
Halt
X, DEC 4
Y, DEC 2
Z, DEC 5
One, DEC 1
我的代码可以执行if和else条件。这是为什么?我该如何解决?我写的代码是正确的吗?
答案 0 :(得分:0)
为什么? 代码执行if和else条件,因为在If块的末尾需要JUMP指令移动到if语句的末尾。
如何解决?
在:
If, Load X
Subt Y
Output
Load Z
Add One
Output
Else, Load Y
Subt One
Output
Halt
后:
If, Load X
Subt Y
Output
Load Z
Add One
Output
JUMP END
Else, Load Y
Subt One
Output
END, Halt
我写的代码是否正确? 您需要在内存中存储X Y和Z的值,因此您需要将OUTPUT指令替换为相应的STORE指令,如下所示:
/ Code Section
ORG 200
Load X
Subt Y
Subt Z
Skipcond 000
Jump Else
If, Load X
Subt Y
STORE X
Load Z
Add One
STORE Z
JUMP END
Else, Load Y
Subt One
STORE Y
END, Halt
/ Data Section
X, DEC 4
Y, DEC 2
Z, DEC 5
One, DEC 1
The result for the Marie simulator running the above program