私は読んでいて、8086命令セットでは、CMP(比較)がキャリーフラグを設定できると言っています。比較によって 2 つのオペランドが減算されることは理解していますが、そのような場合に誰かが例を提供できるかどうか疑問に思っていました。
数値を追加するという考えを理解できず、負の数値はキャリーフラグを設定します。ボローフラグを読みましたが、比較命令の理解を明確にするために例が必要でした。
また、3 - 5 = -2 が負のフラグを設定する場合...キャリーが設定されるのはいつですか?
私は読んでいて、8086命令セットでは、CMP(比較)がキャリーフラグを設定できると言っています。比較によって 2 つのオペランドが減算されることは理解していますが、そのような場合に誰かが例を提供できるかどうか疑問に思っていました。
数値を追加するという考えを理解できず、負の数値はキャリーフラグを設定します。ボローフラグを読みましたが、比較命令の理解を明確にするために例が必要でした。
また、3 - 5 = -2 が負のフラグを設定する場合...キャリーが設定されるのはいつですか?
キャリー フラグは通常、符号なし演算を使用するときに設定されます。たとえば、2 つの符号なし (結果がレジスタに収まらない) の数値を加算すると、オーバーフロー フラグは発生せず、キャリー フラグのみが発生します。ただし、符号付き演算を使用する場合、このような場合にオーバーフロー フラグが設定されます。
関連する質問へのこの回答では、整数の加算または減算に続いて、キャリー フラグとオーバーフロー フラグが 0 と 1 に設定される例を見つけることができます。
また、8 ビット数値のキャリー付き加算命令とボロー付き減算命令をエミュレートするサンプル C コードも見つけることができます。
出力形式は次のようになります。
127( 127) - 255( -1) - 1 = 127( 127) CY=1 OV=0
各数値は、符号なしと括弧付きの符号付き (2 の補数) の両方で表されます。前の数字=は ADC/SBB の前のキャリー フラグです。ADC/SBB の後のキャリー フラグとオーバーフロー フラグを表示しますCY=。OV=
比較は、レジスタ/メモリ内の数値を変更せずにキャリー、オーバーフロー、符号、およびゼロフラグ (およびパリティと補助キャリーですが、ここでは重要ではありません) にのみ影響することを除いて、ボローなしの減算とほとんど同じことを行います。