ステータスレジスタ
68020のステータスレジスタは16ビットで、上位8ビットをシステムバイト、下位8ビットをユーザバイトまたはコンディション・コード・レジスタ(CCR)と呼ぶ。
Bit 15 - 14. トレースモードフラグ:デバッグ用制御フラグ
Bit 13. スーパバイザフラグ:特権モードを示す
Bit 12. マスタフラグ:マルチプロセッサ構成用のフラグ
Bit 11. 未使用
Bit 10 - 8. 割り込みマスク:3ビットで8レベルの割り込みマスクを表す。
Bit 7 - 5. 未使用
Bit 4. 拡張フラグ:キャリーフラグとほぼ同じ意味
Bit 3. ネガティブフラグ
Bit 2. ゼロフラグ
Bit 1. オーバーフローフラグ
Bit 0. キャリーフラグ
以下にいくつかのマイクロプロセッサでのステータスレジスタの例を挙げる。ビット位置はそれぞれのアーキテクチャでの慣例を無視し、LSBを0に統一している。「セット」は 1 の書き込み、「クリア」は 0 の書き込みである。説明がないフラグは既出の同じ名前のフラグと同じ働きである。フラグは一般にビット操作で扱う。マスクの記事も参照のこと。
また、命令とフラグの変化の仕方についてについての関係も、命令セットアーキテクチャ(ISA)ごとに異なる。各命令種について、一般に「フラグに影響を残さない命令の種類」「全てのフラグに影響を残す命令の種類」の2種類はほぼ全てのISAにあるが、他に「一部のフラグには影響し、残りのフラグには影響しない」という命令種があるISAも多い(しかし、そのような命令はOoO実行などを妨げるなど「悩みのタネ」になりやすく、Intel ADXのように拡張命令などで、従来の命令と基本的な動作は同じだがフラグへの影響範囲が異なる、といった命令が作られることもある)。
6502のステータスレジスタのサイズは8ビットであり、フラグバイトと呼ばれた。
Bit 7. ネガティブフラグ:演算結果の正負を示す。ただし、6502の演算結果は常にAレジスタに格納されるため、結局はAレジスタのMSBを示している。つまり、ロードのみでもその値によってセットされる。
Bit 6. オーバーフローフラグ:演算結果が符号付き8ビットで表せる範囲を超えたことを示す。
Bit 5. 未使用。常に1。
Bit 4. ブレークフラグ:BRK割り込み発生を示す。6502にはBRKとIRQの二種類の割り込みがあり、それを識別するためのフラグである。
Bit 3. デシマルフラグ:セットするとBCDモードで動作する。
Bit 2. インタラプトフラグ:セットすると割り込みが禁止される。
Bit 1. ゼロフラグ:演算結果が 0 の時にセットされる。さらに、ロードのみでもその値によってセットされる。
Bit 0. キャリーフラグ:キャリー発生時およびボローが発生しなかった時にセットされる。
一方オーバフローは「あふれ」という意味である。これは符号付数値の場合に意味を持つ。4ビットで表せる符号付整数は −8 から 7 までである。そこでたとえば 7 に 1 を加算すると次のようになる。
このようになり、符号付整数として解釈した場合、−8 という答えになる。これはもともと 8 という答えを4ビットの符号付整数では表せないために発生するもので、このようなときにオーバフローフラグがセットされる。これを符号なし整数と解釈すれば桁あふれは起きていないので、この演算ではキャリーフラグはセットされない。
最上位桁への繰り上がり(あるいは、最上位桁からの借り(ボロー))があり、かつ同時に、最上位桁より上の桁への繰り上がり(あるいは、最上位桁より上の桁からの借り)が無い時がオーバフローである(といったようにして、ALU等は設計すればよい)。
なお、プロセッサのビット幅以上の符号付整数の演算は、最上位桁だけ符号付と解釈して、それ以外は符号なしと解釈する、といったようにして扱えばよい。