标志寄存器

  • 标志(Flag)用于反映指令执行结果或控制指令执行性形式
  • 8086处理器的各种标志形成了一个16位的标志寄存器FLAGS(程序状态字PSW寄存器)

image-20240723123124775

标志的分类

  • 状态标志——用来记录程序运行结果的状态信息,许多指令的执行都将相应地设置它 CF ZF SF PF OF AF
  • 控制标志——可由程序根据需要用指令设置,用于控制处理器执行指令的方式 DF IF TF

进位标志CF(Carry Flag)

  • 当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF=1;否则CF=0.

image-20240723134201666

零标志ZF(Zero Flag)

  • 若运算结果为0,则ZF=1;否则ZF=0

image-20240723134424947

符号标志SF(Sign Flag)

  • 运算结果最高位为1,则SF=1;否则SF=0

image-20240723134545082

奇偶标志PF(parity Flag)

  • 当运算结果最低字节中“1”的个数为零或偶数时,PF=1;否则PF=0

image-20240722220048109

溢出标志OF(Overflow Flag)

  • 若算术运算的结果有溢出,则OF=1;否则OF=0

image-20240723134930376

  • 溢出和进位

    • 溢出标志OF和进位标志CF是两个意义不同的标志
    • 进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确
    • 溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确

    image-20240723135439547

辅助进位标志AF(Auxiliary Carry Flag)

  • 运算时D3位(低半字节)有进位或借位时,AF=1;否则AF=0。

image-20240723162346576

方向标志DF(Direction Flag)

  • 用于串操作指令中,控制地址的变化方向:
    • 设置DF=0,存储器地址自动增加;
    • 设置DF=1,存储器地址自动减少。

image-20240723162625987

中断允许标志IF(Interrupt-enable Flag)

  • 用于控制外部可屏蔽中断是否可以被处理器响应:
    • 设置IF=1,则允许中断
    • 设置IF=0,则禁止中断

image-20240723163125203

陷阱标志TF(Trap Flag)

  • 用于控制处理器进入单步操作方式:
    • 设置TF=0,处理器正常工作
    • 设置TF=1,处理器单步执行指令

image-20240723163422209