80x86彙編語言基礎標誌位篇

80x86彙編語言標誌位(PSW,EFLAGS,RFLAGS)

8086/8088 的 PSW

PSW(Progarm Status Word)程序狀態字寄存器計算機系統的核心部件——運算器的一部分。
PSW用來存放兩類信息:一類是體現當前指令執行結果的各種狀態信息,如有無進位(CY位),有無溢出(OV位),結果正負(SF位),結果是否爲零(ZF位),奇偶標誌位(P位)等;另一類是存放控制信息,如允許中斷(IF位),跟蹤標誌(TF位)等。有些機器中將PSW稱爲標誌寄存器FR(Flag Register)。
---------------------------------------------------------------------------------
  15   14   13   12   11   10    9    8    7    6    5    4    3    2    1    0
|    |    |    |    | OF | DF | IF | TF | SF | ZF |    | AF |    | PF |    | CF |

條件碼標誌
OF:(Overflow Flag)溢出標誌,在運算過程中,如操作數超出了機器能表示的範圍則稱爲溢出。此時OF標誌位爲1(OV),否則置0(NV)。
SF:(Sign Flag)符號標誌,記錄運算結果的符號,結果爲負時置1(NG),否則置0(PL)。
ZF:(Zero Flag)零標誌,運算結果爲0時置1(ZR),否則置0(NZ)。
CF:(Carry Flag)進位標誌,運算時,從最高有效位產生了進位值時0時置1(CY),否則置0(NC)。
AF:(Auxiliary carry Flag)輔助進位標誌,記錄運算時最低的4位(半個字節)產生的進位值。有進位值時置1否(AC),則置0(NA)。
PF:(Parity Flag)奇偶標誌,用來爲機器中傳送信息時可能產生的代碼出錯情況提供檢驗條件,當結果操作數中1的個數爲偶數時置1(PE),否則置0(PO)。

控制標誌
DF:(Direction Flag)方向標誌,在串處理指令中控制處理信息的方向用,當DF置1(DN)每次操作後,使變址寄存器SI和DI減量,這樣就使串處理從高地址向低地址方向處理。當DF置0(UP)時,則反之。
IF:(Interrupt Flag)中斷標誌,當IF爲1(EI)時,允許中斷,否則IF爲0(DI)關閉中斷。
TF:(Trap Flag)陷井標誌,用於單步方式操作,當TF爲1時,每條指令執行完後產生陷井,由系統控制計算機;當IF爲0時,CPU正常工作不產生陷井。

RFLAGS(64位)/EFLAGS(32位)

RFLAGS(64位)將EFLAGS(32位)擴展到64位,新擴展的高32位全部保留未用。
RFLAGS(32位)由3類(S: Status flag,C: Control flag,X: System flag)標誌位組成:

   63-32        31-22      21    20   19    18   17   16
| RFlags保留 | EFlags保留 | ID | VIP | VIF | AC | VM | RF |

  15    14  13-12   11   10    9    8    7    6    5    4    3    2    1    0
|     | NT | IOPL | OF | DF | IF | TF | SF | ZF |    | AF |    | PF |    | CF |

System flag:
ID:Identification(Pentium+)。
VIP:Virtual interrupt pending(Pentium+)。
VIF:Virtual interrupt flag (Pentium+)。
AC:Alignment check (486SX+ only)。
VM:Virtual 8086 mode flag (386+ only) 
RF:Resume flag (386+ only)。
IOPL:I/O privilege level (286+ only)。
NT:Nested task flag (286+ only)。
IF:(Interrupt Flag)中斷標誌,當IF爲1(EI)時,允許中斷,否則IF爲0(DI)關閉中斷。
TF:(Trap Flag)陷井標誌,用於單步方式操作,當TF爲1時,每條指令執行完後產生陷井,由系統控制計算機;當IF爲0時,CPU正常工作不產生陷井。

Control flag:
DF:(Direction Flag)方向標誌,在串處理指令中控制處理信息的方向用,當DF置1(DN)每次操作後,使變址寄存器SI和DI減量,這樣就使串處理從高地址向低地址方向處理。當DF置0(UP)時,則反之。

Status flag:
條件碼標誌有:
OF:(Overflow Flag)溢出標誌,在運算過程中,如操作數超出了機器能表示的範圍則稱爲溢出。此時OF標誌位爲1(OV),否則置0(NV)。
SF:(Sign Flag)符號標誌,記錄運算結果的符號,結果爲負時置1(NG),否則置0(PL)。
ZF:(Zero Flag)零標誌,運算結果爲0時置1(ZR),否則置0(NZ)。
CF:(Carry Flag)進位標誌,運算時,從最高有效位產生了進位值時0時置1(CY),否則置0(NC)。
AF:(Auxiliary carry Flag)輔助進位標誌,記錄運算時最低的4位(半個字節)產生的進位值。有進位值時置1否(AC),則置0(NA)。
PF:(Parity Flag)奇偶標誌,用來爲機器中傳送信息時可能產生的代碼出錯情況提供檢驗條件,當結果操作數中1的個數爲偶數時置1(PE),否則置0(PO)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章