ステータスレジスタとは
ステータスレジスタ(フラグレジスタ、プログラムステータスワード、条件コードレジスタとも呼ばれる)は、プロセッサ内のフラグビットの集合として定義されます。 レジスターはプロセッサー回路であり、メモリー位置に非常に似ています。つまり、レジスターからデータを読み書きできます。 メモリ位置とは異なり、マイクロプロセッサが内部的に使用するため、ステータスレジスタにはアドレスが含まれないことがあります。 8ビットの中央処理装置(CPU)では、各種のプロセッサー操作の結果により、ステータスレジスタビットを1に設定するか、0に等しいクリアすることができます。 プロセッサはビット自体をセットまたはクリアする場合もありますが、特定のプログラム命令がビットをセットまたはクリアする場合もあります。
ステータスレジスタビットはフラグまたはフラグビットとも呼ばれ、特定のプログラミング目的でプログラマーによって使用されます。 ステータスレジスタの各フラグには、独自の目的があります。 キャリーフラグは、前の操作で7ビット目(負のフラグ)がオーバーフローしたか、キャリーフラグがアンダーフローしたかを設定します。 論理、比較、および算術のシフト中に設定されます。 最新の操作結果が0の場合、ゼロフラグが設定されます。
「割り込みディセーブル」と呼ばれるフラグは、割り込みの操作を許可または禁止することで動作します。割り込みは、特定の操作を一時的に停止して他の操作を実行できる命令です。 この特定のフラグが設定されている場合、割り込みは動作できませんが、クリアされている場合、割り込みは許可されます。 10進フラグと呼ばれる別のフラグを使用すると、プロセッサはより高度なバイナリモードに従い、完全な算術方程式を実行できます。 フラグが設定されると、この高度なバイナリモードが使用されます。 別のレジスタビットはブレークフラグビットで、強制割り込み(BRK)コマンドが実行されるタイミングを設定します。
演算の結果が無効な場合、算術演算中にオーバーフローフラグが設定されます。 負のフラグは、最新の操作の結果が1に設定されている場合に設定します。ビット5と呼ばれる最後のフラグは名前がなく、常に1に設定されます。プログラマーは基本的にこの特定のビットを使用しません。
FLAGSレジスタは、特定の中央処理装置で使用され、プロセッサの現在の状態を含むステータスレジスタの一例です。 これは16ビット幅で、EFLAGSとRFLAGS、それぞれ32ビットレジスタと64ビットレジスタが続きました。 ただし、FLAGSレジスタには、パリティフラグ、補助フラグ、トラップフラグなど、元の8ビットレジスタとは異なるフラグがいくつかありました。