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 に答える