NEG 命令がオーバーフロー フラグにも影響するかどうかを知りたいです。変数の値を無効にすることは知っていますが、Overflow フラグに影響するかどうかはわかりませんでした。
質問する
2455 次
2 に答える
5
命令が何をするかを知りたい場合は、リファレンス マニュアルを参照してください。
重要なリファレンス、つまり Intel 命令セットのマニュアルには、NEG 命令について次のように書かれています。
Flags Affected
The CF flag set to 0 if the source operand is 0; otherwise it is set to 1.
The OF, SF, ZF, AF, and PF flags are set according to the result.
したがって、NEG 命令が O フラグを設定することは明らかです。したがって、OPの元の質問であるOフラグに影響します。そして、実行されるたびにそうします。(「変更されていない」と「設定されていない」を混同しないでください)。
その特定のリファレンス マニュアルでは、O がいつゼロまたは 1 に設定されるかを示す特定のアルゴリズムを提供していません。ただし、Intel CPU は 2 の補数のマシンです。Subtract 命令の言い回しはまったく同じです。NEG X は (0 SUBTRACT X) と同等です。したがって、NEG は (0 SUBTRACT X) の「オーバーフロー」に従って O ビットを設定する必要があります。これにより、X が 0x8000000 の場合に O が設定されます。
Intel Basic Archiecture Manualを調べると、OF ビットの説明が次のように見つかります。
OF (bit 11) Overflow flag
— Set if the integer result is too large a positive number or too small a
negative number (excluding the sign-bit) to fit in the destination operand;
cleared otherwise. This flag indicates an overflow condition for signed-integer
(two’s complement) arithmetic
私たちの理解を確認します。
于 2014-10-18T14:35:52.307 に答える