1

8 ビットの 2 進加算を実行するとき、3 ビット目から 4 ビット目への桁上げがある場合、補助フラグが 1 に設定されることを知っています。しかし、2 つの 16 ビット数の加算はどうでしょうか? 私はウェブ上で明確な答えを見ることができません。

Intel 8086 マイクロプロセッサを勉強しています...

たとえば、0x30a2 と 0xf1ac の 2 つの数字を追加すると、

0011 0000 1010 0010 + 1111 0001 1010 1100

CF=1
ZF=0
PF=1
SF=0
OF=1
AF=? 

どこで確認すればいいのかわからない

4

3 に答える 3

4

James W. Coffron による「8086/8088 のプログラミング」より:

AF補助キャリーフラグ。このフラグが設定されている場合は、下位ニブルから上位ニブルへのキャリー、または上位ニブルから下位ニブルへの借用が行われています。上位ニブルまたは下位ニブルは、16 ビット値の下位バイトを指します。

私の時代は、プロセッサの動作を観察するために短いコードを書きました。2 つの 16 ビット数値を加算または減算し、その後にpushfpop axを付けることで、状態フラグを自由に調べることができます。

編集。

(フラグを取得するもう 1 つの方法は、 with フラグLAHFの 5 ビットをロードし、ビット 4 に移動することです。)AHAF

SoAFは、オペランドのサイズに関係なく、ビット 3 からビット 4 へのキャリーアウトを表します。

に依存する分岐命令はありませんAFDAAこれは、命令の直後に小数点以下の調整を行うために命令によって内部的に使用されます。ADD通常は を使用しALます。

于 2016-04-08T08:07:30.837 に答える
0

キャリーフラグの「位置」はオペレーターの命令に依存し、常に最上位ビットになります。

例 add ax,bx : オペラントは 16 ビットであるため、ax (値 3) と 9 (これらの値は 0000000000000011 および 0000000000000101 として扱われます) を追加しても、キャリーは 16 番目のビットの追加のキャリーを表します。 )

于 2016-04-08T06:14:51.333 に答える