zjid520 发表于 2008-6-11 15:12:21

80x86汇编语言基础 之标志位(PSW,EFLAGS,RFLAGS)

80x86汇编语言基础 之标志位(PSW,EFLAGS,RFLAGS)8086/8088 的 PSW
PSW(Progarm Status Word)程序状态字寄存器由条件码标志和控制标志构成
---------------------------------------------------------------------------------
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    1413-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)。
页: [1]
查看完整版本: 80x86汇编语言基础 之标志位(PSW,EFLAGS,RFLAGS)