一个奇葩的标志寄存器 flag寄存器

注意:

mov,push,pop等传送指令,执行结果对标志寄存器并无影响!

一个奇葩的标志寄存器 flag寄存器

ZF标志:结果为0,则ZF为1;不为0,ZF为0;(zero flag)

PF标志:如果1的个数为偶数,pf=1;如果为奇数,那么pf=0;

SF标志:结果为负,则SF为1;结果非负数,SF为0

CF标志:是对无符号数运算有意义的标志位【看有无进位】

OF标志:对有符号数运算有意义的标志位【看有无溢出】

监测点11.1:

sub al,al      al=0h        ZF=1        PF=1        SF=0        

al为0h,结果为0所以ZF为1代表真,有0个偶数所以PF为1,结果为非负,所以SF为0。当我们把数据当做无符号数来计算,SF位的值没有意义。

mov al,1      al=1h        ZF=1        PF=1        SF=0       

 mov是传送指令对标志寄存器没有影响,标志寄存器不发生改变。

push ax       ax=1h        ZF=1        PF=1        SF=0      

push是传送指令对标志寄存器没有影响,标志寄存器不发生改变。

pop bx        bx=1h        ZF=1        PF=1        SF=0      

pop是传送指令对标志寄存器没有影响,标志寄存器不发生改变。

add al,bl     al=2h        ZF=0        PF=0        SF=0      

2h的二进制为0010 ,结果不为0则ZF为0,奇数个1则PF为0,SF为0

add al,10     al=12h       ZF=0        PF=1        SF=0    

 12h的二进制为10010,这是8位寄存器所以值为0010,结果不为0则ZF为0,偶数个1则PF为1,SF为0

mul al        ax=144h      ZF=0        PF=1        SF=0    

 144h的二进制为101000100,这是16位寄存器所以值为01000100,结果部位0则ZF为0,偶数个1则PF为1,SF为0

监测点11.2

一个奇葩的标志寄存器 flag寄存器