PSW

更新时间:2022-08-25 17:57

PSW是Program Status Word的缩写,即程序状态字(也叫程序状态寄存器),可用于OS在管态(系统态)和目态(用户态)之间的转换。

简介

程序状态寄存器PSW是计算机系统的核心部件——运算器的一部分,PSW用来存放两类信息:一类是体现当前指令执行结果的各种状态信息,称为状态标志,如有无借位进位(CY位)、有无溢出(OF位)、结果正负(SF位)、结果是否为零(ZF位)、奇偶标志位(PF位)等;另一类是存放控制信息,称为控制状态,如允许中断(IF位),跟踪标志(TF位),方向标志(DF)等。有些机器中将PSW称为标志寄存器FR(Flag Register)。

作用

程序状态字用来指示处理器状态、控制指令的执行顺序并且保留和指示与运行程序有关的各种信息,其主要作用是方便地实现程序状态的保护和恢复。每个正在执行的程序都有一个与其执行相关的PSW,而每个处理器都设置一个程序状态字寄存器。一个程序占有处理器执行,它的PSW将占有程序状态字寄存器。一般来说,程序状态字寄存器包括以下几类内容:

程序基本状态。包括:(1)程序计数器:指明下一条执行的指令地址;(2)条件码:表示指令执行的结果状态:(3)处理器状态位:指明当前的处理器状态,如目态或管态、运行或等待。

由于不同处理器中的控制寄存器组织方式不同,所以在大多数计算机的处理器现场中可能找不到一个称为程序状态字寄存器的具体寄存器,但总是有一组控制与状态寄存器实际上起到这一作用。

各状态字定义

P——奇偶标志位:该位反映累加器ACC内容的奇偶性。如果有奇数个“1”,则P为“1”,否则为“0”。在80C51指令中,凡是改变ACC中内容的指令均影响P。

0 V——溢出标志位:对于单字节的有符号数,若用最高位(b7)表示正、负号,则只有7位有效数位(b6~b0),能表示-128~+127之间的数。运算结果超出了这个数值范围,就会发生溢出,此时OV=1,否则OV=0。

此外,在执行乘法指令时,OV=1表示乘积超过255;在执行除法指令时,OV=1表示除数为0。

RSl、RSO——工作寄存器选择控制位:该两位用以选择指令当前使用的工作寄存器组。由用户用软件可以设置RSl、RSO的组合,以切换到当前选用的工作寄存器组。

单片机复位后,RSl-RS0-0,CPU自动选中第0组为当前工作寄存器。用户可通过指令改变RSl、RS0的状态,实现工作寄存器组的切换。这为调用子程序和中断服务程序中保护现场提供了方便。

F0——用户标志位:该位可由用户置1或清0,用于实现某些测控功能。

AC——半进位标志位:当CPU进行加法(或减法)运算时,如果低半字节(b3~b0)向高半字节(b7~b4)有进位(或借位),即b3向b4进位(或借位)时,AC置1,否则清0。AC可用于BCD码加法时的调整判别位。

CY——进位标志位: 当CPU进行加法(或减法)运算时,如果运算结果的最高位(b7)有进位(或借位),CY则置1,否则清0。

用法示例

在8086/8088CPU中,PSW是一个16位寄存器,用于寄存单签指令执行后的某些状态,即反映指令执行结果的一些特征信息。在debug程序中,可以使用R命令来查看PSW的值,除了TF没有显示之外,其它8个标志的值显示方式如下:

例如:

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}