我被要求做以下事情:
编写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条件。为什么会这样呢?我怎么才能修复它呢?我写的代码正确吗?
发布于 2017-05-16 22:09:27
为什么会这样呢?代码同时执行if和else条件,因为在If块的末尾需要跳转指令移动到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的值存储回内存中,因此需要将输出指令替换为相应的存储指令,如下所示:
/ 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 1The result for the Marie simulator running the above program
https://stackoverflow.com/questions/43662827
复制相似问题