AX=8FFEおよびBX=0FFFと仮定し
ます。
Cmp ax,bx
この時点で、ソース(bx)が宛先(ax)から差し引かれ、適切なフラグが更新されます。コンピューターは各数値を2の補数形式で表すため、8FFEはある数値の2の補数であり、同様に0FFFはある数値の2の補数です。
2の補数のように、減算は加算によって実装されるため、これら2つの数値を2進数に変換して加算します。
8FFE----------> 1000 1111 1111 1110
0FFF----------> 0000 1111 1111 1111
--------------------------------
1001 1111 1111 1101
これが16進数で9FFDの結果です。
ご覧のとおり、オーバーフローは発生しておらず、符号ビットは結果の1です。
質問:サインフラグを設定し、オーバーフローフラグを0のままにするというこの想像力で
、デバッガーでこれをチェックアウトしましたが、反対に
、サインフラグは0のままで、オーバーフローフラグは1であることがわかりました。なぜ
それが起こるのですか?