2.4.1 运算器
运算器对操作数进行算术、逻辑和位操作运算。主要包括算术逻辑运算单元ALU、累加器A、位处理器及程序状态字寄存器PSW等。
1.算术逻辑运算单元ALU
算术逻辑运算单元ALU可对8位变量进行逻辑运算(与、或、异或、循环、求补和清0)和算术运算(加、减、乘、除),还有位操作功能,对位变量进行位处理,如置“1”、清“0”、求补、测试转移及逻辑“与”“或”等。
2.累加器A
累加器是CPU中使用频繁的一个8位寄存器,在8051指令系统中,Acc的作用如下。
1)ALU单元的输入数据源之一,又是ALU运算结果存放单元。
2)数据传送大多都通过累加器A,相当于数据的中转站。
3.程序状态字寄存器(Program Status Word,PSW)
PSW是特殊功能寄存器,字节地址D0H。包含了程序运行状态的信息,其中4位保存当前指令执行后的状态,供程序查询和判断;2位用来选择内部的工作寄存器;1位为用户自定义标志。格式如图2-3所示。
图2-3 PSW格式
PSW中各位功能如下。
1)Cy(PSW.7)进位标志位。可写为C。在算术和逻辑运算时,若有进位/借位,Cy=1;否则,Cy=0。在位处理器中,它是位累加器。
2)Ac(PSW.6)辅助进位标志位。在BCD码运算时,用作十进位调整。即当D3位向D4位产生进位或借位时,Ac=1;否则,Ac=0。
3)F0(PSW.5)用户设定标志位。由用户自己定义的状态标志位,可用指令来使它置“1”或清“0”,表示某种控制的标志。
4)RS1、RS0(PSW.4、PSW.3)4组工作寄存器选择位。选择片内RAM区中的4组工作寄存器区中的某一组为当前工作寄存区,见表2-2。
表2-2 4组工作寄存器区选择
5)OV(PSW.2)溢出标志位。当执行有符号数算术指令时,用来指示运算结果是否产生溢出。如果结果产生溢出,OV=1;否则,OV=0。
6)PSW.1位:保留位。
7)P(PSW.0)奇偶标志位。指令执行后,P=1,表示累加器A中“1”的个数为奇数;P=0,表示累加器A中“1”的个数为偶数。