ASM16 5-6 汇编语言寄存器篇(标志寄存器)
标志寄存器
- 标志(Flag)用于反映指令执行结果或控制指令执行性形式
- 8086处理器的各种标志形成了一个16位的标志寄存器FLAGS(程序状态字PSW寄存器)
标志的分类
- 状态标志——用来记录程序运行结果的状态信息,许多指令的执行都将相应地设置它 CF ZF SF PF OF AF
- 控制标志——可由程序根据需要用指令设置,用于控制处理器执行指令的方式 DF IF TF
进位标志CF(Carry Flag)
- 当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF=1;否则CF=0.
零标志ZF(Zero Flag)
- 若运算结果为0,则ZF=1;否则ZF=0
符号标志SF(Sign Flag)
- 运算结果最高位为1,则SF=1;否则SF=0
奇偶标志PF(parity Flag)
- 当运算结果最低字节中“1”的个数为零或偶数时,PF=1;否则PF=0
溢出标志OF(Overflow Flag)
- 若算术运算的结果有溢出,则OF=1;否则OF=0
溢出和进位
- 溢出标志OF和进位标志CF是两个意义不同的标志
- 进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确
- 溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确
辅助进位标志AF(Auxiliary Carry Flag)
- 运算时D3位(低半字节)有进位或借位时,AF=1;否则AF=0。
方向标志DF(Direction Flag)
- 用于串操作指令中,控制地址的变化方向:
- 设置DF=0,存储器地址自动增加;
- 设置DF=1,存储器地址自动减少。
中断允许标志IF(Interrupt-enable Flag)
- 用于控制外部可屏蔽中断是否可以被处理器响应:
- 设置IF=1,则允许中断
- 设置IF=0,则禁止中断
陷阱标志TF(Trap Flag)
- 用于控制处理器进入单步操作方式:
- 设置TF=0,处理器正常工作
- 设置TF=1,处理器单步执行指令
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hexo!