トップ-> アセンブラ入門:3章.算術演算-> 3-4.フラグ

←前ページへ :  トップへ :  次ページへ→



3-4.フラグ

  フラグはCPUの状態などをビット単位で表しています。実際はフラグレジスタ という16bitで管理されているが、実際に使われているのは9つ分、すなわち9bit 分で、残りは使われていない。

CF(キャリーフラグ)
算術演算で繰り上がり(加算)、桁借り(減算)した場合などに「1」しなかった場合は「0」 になる。そのほか、「INT 21h」のシステムコールが正常に処理できなかった場合に「1」に、 正常に処理されれば「0」になることから、サブルーチンを作った際に、エラーフラグとして 用いる人も多い。

PF(パリティーフラグ)
演算結果の最下位バイト(例えばALやBL)を2進数で見たときに、「1」の数が、 偶数なら「1」、奇数なら「0」になる。ほとんど使われないフラグ。

AF(補助フラグ)
BCD演算に使用される詳しくは省略する

ZF(ゼロフラグ)
演算結果が0になった場合に「1」、それ以外なら「0」になる。 よく使うフラグの1つ。

SF(サインフラグ)
サインとは日本語に訳すと「符号」で、演算結果がマイナスになった場合に 「1」になる。アセンブラでマイナスとは、最上位ビットが「1」の時に、マイナス と見なし、「0」の時にプラスト見なす。したがって、このフラグは演算結果の 最上位ビットがそのまま反映されている。詳しくは後で述べる。

IF(割り込み許可フラグ)
ハードウエア割り込みを許可するときは「1」、許可したくない場合や割り込み処理中は 「0」になる。詳しくは10章参照

DF(ディレクションフラグ)
ストリング命令で使用します。詳しくは7章参照

OF(オーバーフローフラグ)
例えば、8bitレジスタALが7Fh(=127)で、さらに1を足すと、80h(=-128)になる。 これは8bitで表せる数は-128〜+127までであり、その範囲を超えた計算であるからで、 このような範囲を超えた計算を行った場合に「1」になる。符号付き演算で オーバーフローした際に「1」になる。詳しくは後で述べる。

  フラグは条件分岐で頻繁に使います。
  80286以上ではTSF(タスクスイッチフラグ)などが拡張されています。


←前ページへ :  トップへ :  次ページへ→