7

我正在尝试理解 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 并使用 skipcond 进行测试。

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

这就是我所拥有的:

100     load one
101     store x
102     subt ten
103     skipcond400  if x-10 = 0?   // or skpcond000 x -10 < 0?? 
4

1 回答 1

2
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循环相同的行为。

于 2011-02-28T01:32:23.860 回答