質問

ax = fffeおよびbx = 1234と仮定します
今、私たちが書くなら cmp ax,bx
(BXはAXから差し引かれ、AppRute Flagesが更新されます)AXおよびBXの数字のバイナリ表現はによって与えられます

    AX =    1111    1111    1111    1110
   BX=     0001    0010    0011    0100


bxがaxから差し引かれるため、bx(result = ax+( - bx)として否定する必要があるため、否定されたBx(2のBXの補体)が与えられます。

BX=    1110    1101    1100    1100

次に、AXとBXの両方を追加します(減算はコンピューターに追加することで実装されています)

    AX=   1111    1111    1111    1110
   BX=   1110    1101    1100    1100
    ------------------------------------
      1  1110    1101    1100    1010 

結果がわかるように、結果は17ビットです。17ビットはキャリーフレージに入る必要がありますが、キャリーフラグは0です。

役に立ちましたか?

解決

ここにリンクを見つけました:http://oopweb.com/assembly/documents/artofassembly/volume/chapter_6/ch06-2.html

予想通りです。キャリーフラグは、「借り」が必要な場合にのみ設定されます。減算を行うときは、「減算」を行う前にキャリーフラグを設定し、新しいキャリーフラグは借りなければならないかどうかを示します。あなたの例は、ビット17のプレセットキャリーフラグに1の追加を省略しました。

他のヒント

キャリーフラグを、減算が実行されたときに、ビットを借りると考えてください。操作は1に初期化されます a−b−C, 、つまり、 a + not(b) + C それ以外の a + not(b) + 1 あなたが説明したように。言い換えれば、キャリーは減算のために反転しているため、複数の精度の減算を行うために使用できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top