汇编语言标志位

1、 ZF(zero flag)

零标志位。当运算结果等于0时为1,否则为0。如执行完 sub ax,ax 这条命令后,运算结果为0,ZF为1。

2、SF(sign Flag)

符号标志位。当运算结果的符号位为0是SF为0,结果的符号位为1时为1,即结果为负数时SF为1,但是也有可能两个正数相加得到符号位为1的数,如 90H+1H=91H,结果的二进制为1001 0001B,如果按照无符号数来看,这个数为145D,按照有符号数看则为-17D,但是无论按照有符号数看还是无符号数看,SF都为1,因此对于“ 结果为负数时SF为1 ”这句话,更准确的说法是“结果按照有符号数看是负数时SF为1”。

3、PF(parity flag)

奇偶标志位。运算结果二进制形式下所有1的个数为偶数时为1,为奇数时为0。如运算结果为1001 0000B时,PF为1,运算结果为1001 0001B时,PF为0。

4、OF (overflow flag)

OF (overflow flag)溢出标志位。运算结果按照有符号数表示时超出寄存器能表示的范围则为溢出,发生溢出时OF为1。OF主要针对有符号数的运算,因为有符号数的运算结果可能超出有符号时能表示的数字范围。例如5FH+21H=80H,运算结果二进制为1000 0000B,此时OF为1,因为按照有符号数计算,有效数位只有后7位,显然结果已经超出7位,所以OF为1。

5、CF(carry flag)

进位标志位。最高有效位产生进位时为1,否则为0 。例如98H+99H, 98H是十进制下的152,99H是十进制下的153,相加后为131H,十进制下是305,超出8位能表示的最大数255,所以CF为1。
对于98D+99D=197D,按照无符号运算的话,没有发生进位,CF=0,按照有符号运算的话,发生了溢出,OF=1。

一条留言

发表评论