汇编语言阅读笔记【特殊寄存器】

一、参考

汇编语言-王爽

二、正文

2.1 标志寄存器

CPU内部的寄存器中,有一种特殊的寄存器,具有下面的3种作用:
(1)用来存储相关指令的某些执行结果
(2)用来为CPU执行相关指令提供行为依据;
(3)用来控制CPU的相关工作方式
这种特殊的寄存器,称之为标志寄存器flag,存储的信息通常称为程序状态字PSW

flag和其他寄存器不一样,其他寄存器用来存放数据,都是整个寄存器具有一个含义,但是flag寄存器是按照位起作用,每一位都有不同含义,记录特定的信息

image.png

flag的1,3,5,12,13,14,15位在8086CPU中没有使用,不具有任何含义,但是其他位具有特殊含义

2.1.1 ZF标志

flag的第6位是ZF,零标志位,记录相关的指令执行后,其结果是否为0,如果结果为0,那么zf=1, 如果不为0,那么zf=0

在8086CPU的指令集中,有的指令的执行是影响标志寄存器的,例如:
add, sub, mul, div, inc, or, and等等,大都是运算指令(进行逻辑或者算术运算),有的指令的执行对于标志寄存器没有影响,例如:mov, push, pop等等,大都是传送指令,在使用一条指令时候,需要注意这条指令的全部功能,包括,执行结果对于flag的哪些标志位造成影响。

2.1.2 PF标志

flag的第2位是PF,奇偶标志位,记录相关指令执行后,其结果所有的bit位中1的个数是否位偶数,如果1的个数为偶数,则pf=1, 如果为奇数,那么pf=0

2.1.3 SF标志

flag的第7位是SF, 符号标志位,记录相关指令执行后,其结果是否位负数,如果结果为负数,sf=1, 如果结果为非负数,sf=0
计算机中通常使用补码来表示有符号数据,计算机中y一个数据可以看作是有符号数,也可以看成是无符号数
SF标志,CPU对有符号数运算结果的一种记录,记录数据的正负,如果将数据当作有符号数来运算,可以通过SF得知结果的正负,如果将数据当作无符号数来运算,SF的值没有意义,虽然相关的指令影响了它的值。

2.1.4 CF标志

flag的第0位是CF,进位标志位,一般情况下,在进行无符号数运算时候,CF记录运算结果的最高有效位向更高位的进位值,或者从更高位的借位值。
image.png

2.1.5 OF标志

flag的第11位是OF,溢出标志位,一般情况下,OF记录了有符号数运算的结果是否发生了溢出,OF=1, 如果没有,OF=0

CF和OF的区别,CF是对无符号数运算有意义的标志位,而OF是对有符号数运算有意义的标志位

你可能感兴趣的:(寄存器,unix,asm)