汇编语言笔记7
汇编语言笔记7
标志寄存器
8086CPU的标志寄存器有16位,其中存储的信息称为程序状态字。
flag寄存器是按位起作用,每一位都有专门的含义。
ZF标志
ZF标志是零标志位。它记录相关指令执行之后,其结果是否为0。
- 如果结果为0,则ZF=1(逻辑真)
- 如果结果不为0,则ZF=0(逻辑假)
PF标志
PF标志是奇偶标志位。它记录相关指令执行后,结果的所有bit位中的1的个数是否为偶数个
- 如果1的个数为偶数个,则PF=1
- 如果1的个数为奇数个,则PF=0
例:
1 | mov al,1 |
SF标志
SF标志为符号标志位,记录相关指令执行后,其结果是否为负。
- 结果为负,则SF=1
- 结果不为负,则SF=0
SF标志是CPU对有符号数运算结果的一种记录。它记录数据的正负。我们将数据看成有符号数来计算的时候,可以通过SF标志来判断其结果正负。对无符号数,我们不用理会SF的值,虽然相关指令会影响SF的值。
CF标志
CF标志是进位标志位。一般情况下,在进行无符号数运算时,记录了运算结果最高有效位向更高位的进位值,或者向更高位的借位值
- 两个数据相加,可能产生进位。CPU并不会丢掉进位值,而是使CF=1来记录
- 两个数据相减,可能会产生借位,CF=1
- adc和sbb指令是带有借位的加减法指令,会受到CF值的影响
OF标志
在进行有符号数运算的时候,结果超出了机器所能表示的范围称为溢出
- 8位有符号数表示的范围为:-128~127
- 16为有符号数表示的范围为:-32768~32767
OF标志为溢出标志位。一般情况下,OF记录了有符号数运算是否发生了溢出
- 溢出,OF=1
- 没有溢出,OF=0
CF是针对无符号数的运算;OF是针对有符号数的运算。两者没有任何关系
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 星辰微光的博客!





