gpt4 book ai didi

assembly - `Skipcond` 在 MARIE 汇编语言中是如何工作的?

转载 作者:行者123 更新时间:2023-12-04 16:01:52 34 4
gpt4 key购买 nike

我正在尝试理解 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??

最佳答案

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 相同的行为的条件之后环形。

关于assembly - `Skipcond` 在 MARIE 汇编语言中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5136860/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com