psw的定义
PSW即程序状态字(也叫程序状态寄存器)Program Status Word,可用于OS在管态(系统态)和目态(用户态)之间的转换。
程序状态寄存器PSW是计算机系统的核心部件——运算器的一部分,PSW用来存放两类信息:一类是体现当前指令执行结果的各种状态信息,称为状态标志,如有无借位进位(CY位)、有无溢出(OF位)、结果正负(SF位)、结果是否为零(ZF位)、奇偶标志位(PF位)等;另一类是存放控制信息,称为控制状态,如允许中断(IF位),跟踪标志(TF位),方向标志(DF)等。有些机器中将PSW称为标志寄存器FR(Flag Register)。
在8086/8088CPU中,PSW是一个16位寄存器,用于寄存单签指令执行后的某些状态,即反映指令执行结果的一些特征信息。在debug程序中,可以使用R命令来查看PSW的值,除了TF没有显示之外,其它8个标志的值显示方式如下:
psw的标志名
设置 nv(清除) ov(溢出)
方向 dn(减) up(增)
中断 ei(启用) di(禁用)
正负 ng(负) pl(正)
零 zr(0) nz(非0)
辅助进位 ac(进位) na(不进位)
奇偶校验 pe(偶校验) po(奇校验)
进位 cy(进位) nc(不进位)
如:
OV DN EI NG ZR AC PE CY依次表示OF DF IF SF ZF AF PF CF都为1;
NV UP DI PL NZ NA PO NC依次表示OF DF IF SF ZF AF PF CF都为0.
PSW各位的定义
CY:进位标志。8051中的运算器是一种8位的运算器,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误。通过它让最高位就进到这里来。这样就没事了。有进、借位,CY=1;无进、借位,CY=0 例:78H+97H(01111000+10010111)
AC:辅助进、借位(高半字节与低半字节间的进、借位)。
例:57H+3AH(01010111+00111010)
F0:用户标志位
由用户(编程人员)决定什么时候用,什么时候不用。
RS1、RS0:工作寄存器组选择位
通过修改PSW中的RS1、RS0两位的状态,就能任选一个工作寄存器区。这个特点提高了MCS-51现场保护和现场恢复的速度。对于提高CPU的工作效率和响应中断的速度是很有利的。若在一个实际的应用系统中,不需要四组工作寄存器,那么这个区域中多余单元可以作为一般的数据缓冲器使用。
0V:溢出标志位
运算结果按补码运算理解。有溢出,OV=1;无溢出,OV=0。什么是溢出我们后面的章节会讲到。
P:奇偶校验位
它用来表示ALU运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则P=1,否则为0。运算结果有奇数个1,P=1;运算结果有偶数个1,P=0。 例:某运算结果是78H(01111000),显然1的个数为偶数,所以P=0。
技术专区
- 睿赛德科技喜迁新址 ,RT-Thread进入新的加速发展阶段
- 可靠性高、控制灵活、低功耗可调速风扇散热系统
- 安防监控摄像头LED驱动解决方案
- 如何定制嵌入式Linux发行版
- 基于SoC实现的数据采集系统详解