运算器的功能是进行算术运算、逻辑运算和位运算。可对半字节(4位)、单字节等数据进行操作,操作结果的状态信息送至状态寄存器。主要包括算术逻辑运算单元ALU、累加器A、位处理器、程序状态字寄存器PSW和BCD码修正电路等。
1.算术逻辑运算单元ALU
ALU的功能很强,可对8位变量进行逻辑与、或、异或、循环、求补和清0等逻辑操作,还可进行加、减、乘、除、加1、减1、BCD码十进制调整和比较等基本算术运算。
ALU还有一个布尔处理器,用来处理位操作。它以进位标志位C为累加器,可执行置位、复位、取反、等于1转移、等于0转移、等于1转移且清0,以及进位标志位与其他可位寻址的位之间进行数据传送等操作,也可执行进位标志位与其他可位寻址的位之间的逻辑与、或操作。
2.累加器A和寄存器B
累加器A是一个8位特殊功能寄存器,是CPU中使用最频繁的一个寄存器,编程时也可用Acc表示。累加器有如下作用:
1)数据传送来源。进入ALU作算术和逻辑运算的操作数大多来自于A,运算结果也送回A中保存。
2)数据中转站。CPU中的数据传送大多通过A进行,故累加器A相当于数据中转站。由于CPU数据传送量大,仅靠累加器A传送数据容易产生“堵塞”现象或形成数据传送“瓶颈”。为此,单片机增加了一些可以不经过累加器的传输指令,这样既可加快了CPU数据的传输速度,也可减少累加器的瓶颈、堵塞现象。
寄存器B是为ALU作乘、除法设置的。在执行乘法运算指令时,用于存储其中一个乘数和乘积的高8位;执行除法运算指令时,用于存储除数和余数。若不进行乘、除运算时,也可用作通用寄存器。
3.程序状态字寄存器PSW
程序状态字寄存器(Program Status Word,PSW)是一个8位可读/写的标志寄存器,位于单片机片内特殊功能寄存器区,字节地址为D0H。PSW中保存了指令执行结果的8位特征信息,每一位都包含了程序运行状态信息,以供程序查询和判断。PSW的格式及含义如下:(www.xing528.com)
Cy(PSW.7):进位标志位。Cy也可写成C,在执行算术运算和逻辑指令时,Cy可以被硬件或软件置位或清0;在用于位处理器时,它是位累加器。
Ac(PSW.6):辅助进位(或称为半进位)标志位。它表示2个8位数运算时,低4位是否有进位或借位的情况。当低4位相加或相减时,若D3位向D4位有进位或借位,则Ac=1,否则Ac=0。Ac用于BCD码运算时,用作十进制调整,与DA指令结合使用该标志。
F0(PSW.5):由用户自定义的标志位。用户可以根据自己的编程需要用软件对F0赋予一定的含义,可用软件使它置1或清0,也可由指令来测试F0标志位的值,用以控制程序的流向。编程时,用户可以充分利用这个标志位来实现程序的循环分支。
RS1、RS0(PSW.4、PSW.3):4个工作寄存器组选择位。2位有4种组合,可用软件使它置1或清0,用以设定4个寄存器组中当前使用哪一组工作寄存器,每组有8个工作寄存器,寄存器名用R0~R7表示,对应单片机片内RAM区的00~1FH地址。RS1、RS0与4个工作寄存器区的对应关系见表2-1。
表2-1 RS1、RS0与4个工作寄存器区的对应关系表
OV(PSW.2):溢出标志位。当执行算术指令时,由硬件置1或清0,以反映运算结果是否溢出(即运算结果的正确性)。溢出时OV=1,表明运算结果不正确;否则OV=0,表示运算没有发生溢出。溢出标志OV和进位标志Cy是两种不同性质的标志。溢出是指有符号的两个数进行运算时,运算结果超出了累加器用补码所能表示的一个有符号数的范围(-128~+127);而进位则表示两个数运算时最高位(D7)相加或相减,有无进位或借位。因此使用时应注意区分。
PSW.1:未定义位。
P(PSW.0):奇偶标志位。在执行指令后,单片机根据累加器A中为“1”的位的个数的奇偶性自动地给该标志置1或清0。若累加器A中“1”的个数为奇数,则P=1;若累加器A中“1”的个数为偶数,则P=0。在串行通信中常用奇偶校验的办法来检验数据传输的可靠性。因此,该标志在串行口通信中可作数据传输的校验码。通过奇偶校验可检验通信数据传输的可靠性。实际应用时,在发送端可根据P的值对数据的奇偶位置位或清0。若在通信协议中规定采用奇校验的办法,则P=0时,应对数据(假定由A取得)的奇偶位置位;否则就清0。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。