ASM16-5、6 --标志寄存器
ASM16
高低位:
AX为16位寄存器,AH和AL分别为AX的高八位和低八位
AX=AH+AL
低8位寄存器位AL、BL、CL和DL,高8位为AH、BH、CH和DH,它们只能用来存放8位数据,不能用来存放地址信息
而SP、BP等用于存放地址没有高低位之分
标志寄存器
标志(Flag)用于反映指令执行结果或控制指令执行性形式
8086处理器的各种标志形成了一个16位的标志寄存器FLAGS(程序状态字PSW寄存器)
标志的分类
- 状态标志——用来记录程序运行结果的状态信息,许多指令的执行都将相应地设置它 CF ZF SF PF OF AF
- 控制标志——可由程序根据需要用指令设置,用于控制处理器执行指令的方式 DF IF TF
状态标志:
进位标志CF(Carry Flag)
- 如果运算结果的最高位产生了一个进位或错位,那么,其值为1,否则其值为0
奇偶标志PF(Parity Flag)
- 由于反应运算结果中(转化为二进制),”1”的奇偶性,也就是个数。”1”的个数为偶数,PF为1。个数为奇数,PF为0.
补充:只包含最低位的一个字节(二进制的后八位)
- 由于反应运算结果中(转化为二进制),”1”的奇偶性,也就是个数。”1”的个数为偶数,PF为1。个数为奇数,PF为0.
辅助进位标志AF(Auxiliary Carry Flag)
- 在发生下列情况时,AF的值为1,否则其值为0
(1)、在字操作时,发生低字节向高字节进位或错位时;
(2)、在字节操作时,发生低4位向高4位进位或错位时;
- 在发生下列情况时,AF的值为1,否则其值为0
零标志ZF(Zero Flag)
- ZF用来反映运算结果是否为0
如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可用此标志位
- ZF用来反映运算结果是否为0
符号标志SF(Sign Flag)
- SF用来反映运算结果的符号位,它与运算结果的最高位相同
溢出OF(Overflow Flag)
OF用于反映有符号数加减运算所得结果是否溢出
如果运算结果超过当前运算所能表示的范围,则为溢出,OF的值为1,否则,OF为0
控制标志:
方向标志DF(Direction Flag)
用于串操作指令中,控制地址的变化方向:
设置DF=0,存储器地址自动增加;
设置DF=1,存储器地址自动减少。
中断允许标志IF(Interrupt-enable Flag)
- 用于控制外部可屏蔽中断是否可以被处理器响应:
设置IF=1,则允许中断
设置IF=0,则禁止中断
陷阱标志TF(Trap Flag)
用于控制处理器进入单步操作方式:
设置TF=0,处理器正常工作
设置TF=1,处理器单步执行指令
最高位进位与溢出的区别:
进位标志表示无符号数运算结果是否超出范围
溢出标志表示有符号数运算结果是否超出范围
指令指针IP
指令指针寄存器IP,指示代码段中指令的偏移地址
它与代码段寄存器CS联用,确定下一条指令的物理地址
计算机通过CS:IP寄存器来控制指令序列的执行流程
IP寄存器是一个专用寄存器
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 翻斗花园!