我有以下代码:
ORG 100
LOOP, Load X
Add Z
Store X
Load Y
Skipcond 400
Jump Q
Subt Z
Store Y
Jump LOOP
Q, Output X
Halt
X, Dec 0
Y, Dec 10
Z, Dec 1现在,如果我理解正确的话,它在某种程度上等同于以下Python代码:
x = 0
y = 10
z = 1
while True:
x += z
if y > 0:
y -= 1
else:
exit(0)如果是这样的话,我搞不懂为什么在循环过程完成后,MARIE中的X= 10,Python中的X= 11。根据我在MARIE代码中的理解,skipcond 400等同于如果y> 0。如果是这样,那么当x= 10,y=1时,它仍然会传递skipcond,以从y中减去1,因此重新启动循环,并再次将1加到x,这意味着当循环结束并输出数据时,x= 11。
如果能帮助理解这一点,我们将不胜感激,谢谢。
发布于 2013-04-03 16:50:35
你的SKIPCOND是“倒置的”。条件400意味着skip if AC==0。所以这段代码:
Load Y
Skipcond 400
Jump Q实际上会这样做:
IF (Y != 0) GOTO Q这似乎与你想要做的相反。您可能需要的是SKIPCOND 800 (如果AC >0则跳过)。
https://stackoverflow.com/questions/15781015
复制相似问题