2017-11-27 3 views
0

アセンブリの学習を始めたばかりです。異なるフラグの仕組みを理解しようとしています。 のは、私がこれを行うとしましょう:アセンブリx86フラグ - オーバーフローフラグ

mov ax, 0xBFE8h 
mov bx, 25DFh 
add ax, bx 

は、オーバーフローフラグがオンになりませんでしょうか?加算の値は58,823(基数10)で、32,767(符号付き16ビット値)以上です。 プログラムをチェックインし、フラグがオンにならない。どうしてこれなの?

ありがとうございました。

+0

http://teaching.idallen.com/dat2343/10f/notes/040_overflow.txt。あなたは署名されたOverFlowではなく、キャリーフラグ(符号なし)を探しています。 –

+0

符号付き数学(値の解釈)では、-16408 + 9695 =負+正の値が原則としてオーバーフローすることはありません。元の2つの値の間では必ず同じ結果になります。 OFは符号付き数学に関連しています。 – Ped7g

答えて

4

符号付きオーバーフローが発生すると、オーバーフローフラグがオンになります。しかし、これはあなたのコードでは当てはまりません。 0xbfe80x8000より大きく、したがって、2の補数で負であり、− 16408を表す。0x25DFは、これらの合計が− 32768〜+32767の範囲外でないため、符号付きオーバーフローは発生せず、オーバーフローフラグはクリアされました。

+1

確かにこの質問は何かの複製です。私は見てきましたが、まだ良い答えが見つかっていません。 –

+0

@PeterCordesこれは将来、正式な複製になるだろう。 – fuz

+0

最後に!私はしばらくの間、これを理解しようとしてきました、ありがとう! – eitanmayer

関連する問題