我有以下代码:
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代码中的理解,跳过400相当于如果y> 0.如果是这种情况,那么当x = 10时,y = 1并且它仍将通过跳秒从y中减去1,因此重新启动循环并再次向x添加1,这意味着当循环结束时x = 11且数据被淘汰了。
非常感谢有些帮助理解,谢谢。
答案 0 :(得分:1)
您的SKIPCOND
已“倒置”。条件400表示skip if AC==0。所以这段代码:
Load Y
Skipcond 400
Jump Q
实际上会这样做:
IF (Y != 0) GOTO Q
这似乎与你想做的相反。你可能想要的是SKIPCOND 800
(如果AC> 0则跳过)。