我正在尝试理解MARIE汇编语言。我不太明白skipcond
做<
或>
,或乘以或除。
我正在接受这个简单的程序:
x = 1
while x < 10 do
x = x +1
endwhile;
我不明白的是如何使用某些跳过条件:
Skipcond 800 if AC > 0,
Skipcond 400 if AC = 0,
Skipcond 000 if AC < 0
现在,我知道我会从10减去x并使用跳秒进行测试。
我不确定是哪一个以及为什么。我想如果我知道它们真的有用,也许它会更容易理解。为什么它用于比较为零?
这就是我所拥有的:
100 load one
101 store x
102 subt ten
103 skipcond400 if x-10 = 0? // or skpcond000 x -10 < 0??
答案 0 :(得分:1)
while x < 10 do
x = x + 1
一旦x等于10,就会跳出循环。如果从x中减去10,你将得到一个负值,直到x等于10(并且值为0)。因此使用skpcond000
会出错,因为它会很快跳出来。所以skpcond400
是正确的。
如果您更改C代码以便更接近汇编代码,也许更容易理解:
Original: while (x < 10) do
Subtract 10: while ((x - 10) < 0) do
Use != instead of <: while ((x - 10) != 0) do
另请注意,您必须在条件之后增加x
,才能重现与while
循环相同的行为。