汇编学习笔记:标志寄存器(flag)

[[Assembly|汇编笔记系列]]

flag寄存器的每一位都表示单独的含义,记录特定的信息。这种信息通常称作程序状态字(PSW)。

该寄存器长2字节,结构如下所示。

1
2
15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
OF DF IF TF SF ZF AF PF CF

下面逐个解释。

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位,进位标志位。一般在进行无符号数运算的时候,它记录了运算结果的最高有效位向更高位的进位值,或从更高位的借位值。

OF标志

作者

xeonds

发布于

2021-09-27

更新于

2024-11-07

许可协议

评论