在 x86 架構的基石中,Intel 8086/8088 處理器擁有一個 16 位元的旗標暫存器,它是反映微處理器當前狀態與控制行為的核心中樞。這個暫存器內含 9 個旗標位,劃分為兩大陣營:狀態旗標與控制旗標。狀態旗標由 CPU 依據運算結果自動設定,記錄算術邏輯單元(EU)執行運算後的特徵,常用於影響後續指令(如條件跳轉)的執行流程;控制旗標則由系統或使用者程式透過指令主動設定或清除,用以掌控 CPU 的特定操作模式。
CF 旗標專司偵測運算結果最高位是否產生進位(加法)或借位(減法)。若字操作的第 15 位或位元組操作的第 7 位產生進位/借位,CF 置 1,否則清 0。此外,在循環移位與移位指令中,CF 還擔任暫存從最高位或最低位移出之 0 或 1 的角色。
PF 旗標反映運算結果低 8 位中「1」的個數奇偶性。若「1」的個數為偶數,PF 置 1,否則置 0。這為資料傳輸過程中可能發生的錯誤提供了基礎的校驗機制。
AF 旗標專注於運算結果低 4 位(第 3 位向第 4 位)是否產生進位或借位。若發生則置 1,否則置 0。AF 僅反映低 8 位狀態,與操作數長度無關,主要用於十進制運算調整(如 DAA、DAS 指令)中的 BCD 碼修正。
邏輯最直觀的旗標:若運算結果為 0,ZF 置 1;否則置 0。它是判斷兩值相等(減法結果為 0)或結果為空的關鍵依據。
將運算結果視為帶符號數(補碼表示)時,SF 旗標與結果的最高位(符號位)保持一致。結果為負數(最高位為 1)時 SF=1,正數則為 0。它是判斷運算結果正負的直接指標。
OF 旗標用於檢測帶符號數運算是否超出補碼表示範圍。8 位帶符號數範圍為 -128 至 +127,16 位為 -32768 至 +32767。若兩正數相加得負數,或兩負數相加得正數,即發生溢出,OF 置 1。這對於帶符號數運算的正確性至關重要。
又稱追蹤旗標。當 TF=1 時,CPU 進入單步執行模式,每執行完一條指令即產生一個單步中斷(INT 1)。這是除錯器實現「單步執行」與「逐行除錯」功能的核心機制。
IF 控制 CPU 是否響應外部可屏蔽中斷請求(INTR 引腳)。IF=1 時開放中斷響應(STI 指令設定);IF=0 時屏蔽可屏蔽中斷(CLI 指令清除)。不可屏蔽中斷(NMI)不受 IF 影響。
DF 決定串操作指令(如 MOVS、CMPS、SCAS、LODS、STOS)執行時,源/目的索引暫存器(SI/DI)的調整方向。DF=0 時正向處理(地址遞增,由低向高);DF=1 時反向處理(地址遞減,由高向低)。對應指令 CLD(清零)與 STD(置 1)。
本文整理自技術文獻,旨在提供清晰的架構參考。