"Skipcond"如何在MARIE汇编语言中工作?

6 assembly pseudocode marie

我想了解MARIE汇编语言.我不太明白skipcond做某些事情<,或者>,或者,或者乘法或分裂.

我正在采取这个简单的程序:

x = 1
while x < 10 do
x  = x +1
endwhile;
Run Code Online (Sandbox Code Playgroud)

我不明白的是如何使用某些跳过条件:

Skipcond 800 if AC > 0,
Skipcond 400 if AC = 0,
Skipcond 000 if AC < 0
Run Code Online (Sandbox Code Playgroud)

现在,我知道我会从10减去x并使用跳秒进行测试.

我不确定是哪一个以及为什么.我想如果我知道它们真的有用,也许它会更容易理解.为什么用它来比较为零?

这就是我所拥有的:

100     load one
101     store x
102     subt ten
103     skipcond400  if x-10 = 0?   // or skpcond000 x -10 < 0?? 
Run Code Online (Sandbox Code Playgroud)

sch*_*der 2

while x < 10 do
    x  = x + 1
Run Code Online (Sandbox Code Playgroud)

一旦 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
Run Code Online (Sandbox Code Playgroud)

另请注意,您必须在条件x 之后while增加才能重现与循环相同的行为。