キャリーフラグ#
キャリーフラグ(CF レジスタ):演算結果が負になるか、数値の上限を超える場合にトリガーされます。大まかな意味は、計算結果が範囲外になると CF フラグがトリガーされ、2 つの符号なし数値の差が負の場合も CF フラグがトリガーされるということです。
オーバーフローフラグ#
オーバーフローフラグは CF に似ていますが、符号付き数値に対して働きます。符号付き数値の計算が間違っている場合にオーバーフローフラグがトリガーされます。
符号フラグ#
任意の操作の結果が負の数である場合、SF がトリガーされます。SF は結果の符号を表すだけであり、結果が正しいかどうかを表すものではありません。
ゼロフラグ#
ZF は以下の条件でトリガーされます:内部的には減算の比較命令で、2 つのオペランドが同じである場合;増加または減少によって結果が 0 になる場合;差が 0 になる場合。
条件ジャンプとフラグ#
つまり、2 つのオペランドが同じ場合、JZ 命令がジャンプを実行します。最初の符号なしオペランドが 2 番目のオペランドよりも小さい場合、JB 命令がジャンプを実行します。最初の符号付きオペランドが 2 番目のオペランドよりも小さい場合、JL 命令がジャンプを実行します。通常、符号なし条件ジャンプと符号付き条件ジャンプの表の 3 番目の列を見るだけで十分です。
asm | 条件 | 操作 |
---|---|---|
JA | z=0 and c=0 | above の場合ジャンプ |
JAE | c=0 | above または equal の場合ジャンプ |
JB | c=1 | below の場合ジャンプ |
JBE | z=1 or c=1 | below または equal の場合ジャンプ |
JC | c=1 | carry の場合ジャンプ |
JECXZ | ecx=0 | ecx が 0 の場合ジャンプ |
JE | z=1 | equal の場合ジャンプ |
JZ | z=1 | zero の場合ジャンプ |
JNE | z=0 | not equal の場合ジャンプ |
JNZ | z=0 | not zero の場合ジャンプ |
JO | オーバーフロー | overflow の場合ジャンプ |
JP | 偶数の 1 ビット(操作結果の 2 進数表現での 1 の数、01110000) | parity の場合ジャンプ |
JPE | 偶数パリティ | parity even の場合ジャンプ |
JNP | 奇数の 1 ビットがない | not parity の場合ジャンプ |
JPO | 奇数パリティ | parity odd の場合ジャンプ |
JS | 符号ビットが 1 | sign の場合ジャンプ |
JNS | 符号ビットが 0 | not sign の場合ジャンプ |
JL/JNGE | 符号ビットとオーバーフロービットが同じ | less または not greater/equal の場合ジャンプ |
JLE/JNG | z=1 または符号ビットとオーバーフロービットが同じ | less または equal/not greater の場合ジャンプ |
JG/JNLE | z=0 かつ符号ビットとオーバーフロービットが同じ | greater または not less or equal の場合ジャンプ |