標誌寄存器
標誌寄存器
標誌寄存器又稱程序狀態字(外語縮寫:PSW、外語全稱:Program Status Word)。
這是一個16位的存放條件標誌、控制標誌寄存器,主要用於反映處理器的狀態和ALU運算結果的某些特徵及控制指令的執行。
一覽:
標誌位(外語縮寫) | 標誌位名稱及外語全稱 | =1 | =0 |
CF | 進位標誌/Carry Flag | CY/Carry/進位 | NC/No Carry/無進位 |
PF | 奇偶標誌/Parity Flag | PE/Parity Even/偶 | PO/Parity Odd/奇 |
AF | 輔助進位標誌/Auxiliary Carry Flag | AC/Auxiliary Carry/進位 | NA/No Auxiliary Carry/無進位 |
ZF | 零標誌/Zero Flag | ZR/Zero/等於零 | NZ/Not Zero/不等於零 |
SF | 符號標誌/Sign Flag | NG/Negative/負 | PL/Positive/非負 |
TF | 跟蹤標誌/Trace Flag | ||
IF | 中斷標誌/Interrupt Flag | EI/Enable Interrupt/允許 | DI/Disable Interrupt/禁止 |
DF | 方向標誌/Direction Flag | DN/Down/減少 | UP/增加 |
OF | 溢出標誌/Overflow Flag | OV/Overflow/溢出 | NV/Not Overflow/未溢出 |
各標誌在標誌寄存器中的位置
• 進位標誌:用於反映運算是否產生進位或借位。如果運算結果的最高位產生一個進位或借位,則CF置1,否則置0。運算結果的最高位包括字操作的第15位和位元組操作的第7位。移位指令也會將操作數的最高位或最低位移入CF。
• 奇偶標誌:用於反映運算結果低8位中“1”的個數。“1”的個數為偶數,則PF置1,否則置0。
• 輔助進位標誌:算數操作結果的第三位(從0開始計數)如果產生了進位或者借位則將其置為1,否則置為0,常在BCD(binary-codedecimal)算術運算中被使用。
• 零標誌:用於判斷結果是否為0。運算結果0,ZF置1,否則置0。
• 符號標誌:用於反映運算結果的符號,運算結果為負,SF置1,否則置0。因為有符號數採用補碼的形式表示,所以SF與運算結果的最高位相同。
• 溢出標誌:反映有符號數加減運算是否溢出。如果運算結果超過了8位或者16位有符號數的表示範圍,則OF置1,否則置0。
控制標誌:
• 跟蹤標誌:當TF被設置為1時,CPU進入單步模式,所謂單步模式就是CPU在每執行一步指令后都產生一個單步中斷。主要用於程序的調試。8086/8088中沒有專門用來置位和清零TF的命令,需要用其他辦法。
• 中斷標誌:決定CPU是否響應外部可屏蔽中斷請求。IF為1時,CPU允許響應外部的可屏蔽中斷請求。
• 方向標誌:決定串操作指令執行時有關指針寄存器調整方向。當DF為1時,串操作指令按遞減方式改變有關存儲器指針值,每次操作后使SI、DI遞減。