当前位置 博文首页 > HWP:一个奇葩的标志寄存器 flag寄存器

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

    作者:[db:作者] 时间:2021-07-08 21:40

    注意:

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

    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

    cs