狀態暫存器

狀態暫存器（status register）或旗標暫存器（flag register）是中央处理器中集合許多狀態旗標位元的暫存器。這類的暫存器像是X86架構的、透過的程序状态字（PSW），以及架構裡的應用程式狀態暫存器（application program status register, APSR）。

狀態暫存器是包括中央处理器狀態資訊的硬體暫存器。其個別位元可以直接用机器语言指令讀寫，或是用其他方式讀取或修改其值。狀態暫存器讓一個指令可以依照上一個指令動作後的結果進行動作。

一般來說，有些狀態暫存器的位元會隨運算或是位元處理的結果而變化。例如，若輸出結果為0，會設定Z旗標，若輸出結果不為0，會清除Z旗標。其他指令也可能變更旗標的結果。一些條件判斷指令也會讀取位元狀態，以決定是否要執行後續動作（跳躍、呼叫副程式、副程式返回等）。

有些CPU架構（像是MIPS架構和DEC Alpha）沒有專用的狀態暫存器。有些架構不會隱式的讀寫旗標，有些則是用顯式指定的通用暫存器完成此工作。

狀態暫存器也會有其他的欄位，例如專用旗標、中斷始能旗標等。呼叫中斷時，會將目前執行緒的狀態暫存器、程式計數器和其他暂存器存到呼叫堆疊中，以記錄中斷前的狀態，中斷結束後再回到該位置繼續執行。
常用旗標
以下是最常見的CPU狀態旗標。

旗標名稱說明Z 零旗標 表示算術或邏輯運算的結果（也可能是載入值）是零C 進位旗標 表示數值相加後有進位，若較低的位元組有進位，後續處理加法時，需在目前位元組的最低有效位加1。在許多的處理器也會用此旗標來輔助位移動或位旋轉。S / N 符號旗標負旗標 說明運算的結果為負V / O / W 溢位旗標 表示運算的有號結果太大，超過二補數表示可以儲存的寬度。

其他旗標
以下是一些處理器要有的旗標：

旗標名稱說明H / A / DC  輔助旗標數位進位旗標十進制輔助旗標 表示在最後一次計算時，半字節（一般是4個位元）之間有進位。可用在在用二進制硬體處理BCD運算時P  表示最後運算完的數值是否是奇數I 中斷旗標 在一些處理器中，此位元是表示中斷有效或中斷已遮斷。若處理器有多重中斷優先權等級（例如）會用數個位元表示目前執行緒的中斷優先權。只有優先權更高的硬體才能中斷此執行緒。在其他架構下，此位元可能表示中斷目前有效，目前的執行緒是的一部份。S 監控旗標 在提供兩個或多個分级保护域的處理器中，狀態暫存器的一個或多個位元會表示目前執行緒的保護域等級，若此處理器只有兩個域，一個位元即可區分監管模式和使用者模式。

相關條目

 CPUID
 位段

參考資料

Category:控制流程
Category:中央處理器
Category:數位寄存器