我正在努力理解玛丽汇编语言,但我不太理解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??
2条答案
按热度按时间kulphzqa1#
将在x等于10时跳出循环。如果从x中减去10,将得到一个负值,直到x等于10(值为0)。因此使用
skpcond000
是错误的,因为它会跳得太快。因此skpcond400
是正确的。如果您更改C代码,使其更接近汇编代码,可能会更容易理解:
另外请注意,您必须在条件 * 之后 * 增加
x
,才能重现与while
循环相同的行为。b1zrtrql2#
这可能会有帮助。有很多种方法可以写这个,但我认为这是理解循环中发生的事情的最简单的方法。注意:通常变量被放在程序的底部。
第一个