次のコードがあります。
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 を減算するため、ループして x に 1 を追加します。これは、ループが終了してデータが出力されるときに x = 11 を意味します。
これを理解する助けがあれば大歓迎です、ありがとう。