标志寄存器又称程序状态字(外语缩写:PSW、外语全称:Program Status Word)。 这是一个16位的存放条件标志、控制标志寄存器,主要用于反映处理器的状态和ALU运算结果的某些特征及控制指令的执行。

1.标志寄存器有哪些标志位

 

ZF标志(ZeroFlag):
零位标志位,它记录相关指令执行后的结果是否为0,如果是0,那么ZF=1,如果结果不为0,那么ZF=0。

PF标志(ParityFlag):
奇偶标志位,它记录相关指令执行后,其结果的所有二进制位中1个个数是否为偶数,如果是偶数,PF=1,反之为0。

SF标志(SignFlag):
符号标志位,它记录相关指令执行后,其结果是否为负,如果结果为负,SF=1,如果非负,SF=0。

CF标志(Carry进位,Flag标志):
进位标志位,一般情况,进行无符号运算时,它记录运算结果的最高位向更高位的进位值,或从更高位的借位值,如果运算结果的最高位产生了一个进位或借位,那么其值为1,否则其值为0。

OF标志(Overflow溢出,Flag标志):
溢出标志位,在进行有符号数运算的时候,如果结果超出了机器所能表示的范围称为溢出,OF的值被置为1,否则OF的值为0。

标志寄存器有哪些标志位

(图片来源于互联网)

 

2.标志寄存器的作用

 

标志寄存器有一个很大的用处,那就是它能够利用上面的标志来让用户了解此时cpu所处的状态。如果标志是of的话,这就是溢出标志,如果符号的加减运算结果超出了所能运算的范围的话,就是溢出了,而且此时of的值就是固定的,也就是1,不是的话,就是0了。标志df是方向标志,这个标志能够指导寄存器指针调整的方向。

if是中断允许的标志,这个标志的主要用处就在于当cpu的外部有中断请求的话,它能够决定是否针对这一情况予以反应。但是实际运行过程中,对于这种中断要求的反应是不会受到标志值的影响的。tf是状态控制标志,这个标志作用非常重要,因为它主要用来控制cpu,而且它本身非常的稳定,除非会有专门的指令,它才会有所变化。sf是符号的标志,这个标志就是用来反应运算的结果的,但是它也就只能反应运算结果的正负而已,如果是正的话,就为0,如果是负的话,就为1。

总的来说,标志寄存器的作用主要有三个,分别是存储计算机执行之后的一些结果,提供一些依据给cpu的运行,对于cpu的一些工作的方式给予一定的控制等等。在标志寄存器中有很多的指令,要想了解并且很好的运用标志寄存器,必须要真正的了解这些指令的含义。

指令中中的pushf、popf,虽然它们很相似,但是功能却大不相同,pushf主要是把值压栈,但是popf主要是将数据从栈中弹出,然后把它们输入寄存器之中,两者可以说是完全相反的。寄存器中还有一类条件转移指令,条件的话,是指是否有需要修改ip的条件,而转移的话,就是修改ip的一个过程,两者结合,才能完成。

标志寄存器的作用

(图片来源于互联网)