汇编学习笔记:标志寄存器(flag)
[[Assembly|汇编笔记系列]]
flag寄存器的每一位都表示单独的含义,记录特定的信息。这种信息通常称作程序状态字(PSW)。
该寄存器长2字节,结构如下所示。
1 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 |
下面逐个解释。
ZF标志
第6位,零位标志。它记录相关指令执行后,结果是否为零。为零则zf=1
,否则zf=0
。
这里的相关指令包含add,sub,mul,div,inc,or,and
等,它们大多都是运算指令。因此,使用指令时,要注意它的全部功能,包括执行结果对标志寄存器的影响。
PF标志
第2位,奇偶标志位。它记录相关指令执行后,其结果的所有bit位中1的个数是否为偶数。若是则是1,否则为0。
SF标志
第7位,符号标志位。它记录相关指令执行后,其结果是否为负(即存储单元最高位bit是否为1)。若是则是1,否则为0。只有将数据当做有符号数来运算的时候,其值才有意义。
换句话说,算数运算必然影响SF的值,是否需要此值则看我们如何看待指令所进行的运算。
CF标志
第0位,进位标志位。一般在进行无符号数运算的时候,它记录了运算结果的最高有效位向更高位的进位值,或从更高位的借位值。