首页 理论教育运算器与累加器在单片机基础及应用中的作用

运算器与累加器在单片机基础及应用中的作用

【摘要】:两个暂存器TMP1、TMP2对用户不开放,主要用来为加法器和布尔处理器暂存两个8位二进制操作数。2.累加器A累加器通常用A或ACC表示,是一个具有特殊用途的8位寄存器,用于存放操作数或运算结果。乘法中,ALU的两个输入分别为A、B,运算结果存放在B、A寄存器对中。表2-1PSW各标志位定义进位标志位CY:在执行某些算术运算、逻辑运算指令时,可被硬件或软件置位或清0。OV=1反映运算结果超出了累加器的数值范围。

运算器以算术逻辑单元(Arithmetic Logic Unit,ALU)为核心,包括累加器(Accumulator,ACC)、寄存器B、程序状态寄存器(Program Status Word,PSW)以及BCD码修正电路等,主要用来实现数据的算术逻辑运算、位运算和数据传送等操作。

1.算术逻辑单元ALU

MCS-51单片机的ALU功能很强,主要由一个加法器、两个8位暂存器(TMP1、TMP2)和一个性能优异的布尔处理器构成,不仅能完成8位二进制数的加、减、乘、除、加1、减1及BCD加法的十进制调整等算术运算,还能对8位变量进行逻辑与、或、异或、循环移位、求补、清0等逻辑运算,并具有数据传输、程序转移等功能。两个暂存器TMP1、TMP2对用户不开放,主要用来为加法器和布尔处理器暂存两个8位二进制操作数

布尔处理器(位处理器)是MCS-51单片机ALU所具有的一种功能。单片机指令系统中的位处理指令集(17条位操作指令)、存储器中的位地址空间以及程序状态寄存器PSW中的进位标志CY(作为位操作累加器)构成了MCS-51单片机的布尔处理器。它可对直接寻址的位(bit)变量进行位处理,如置位、清0、取反、测试转移以及逻辑与、或等位操作,使用户在编程时可以利用指令来完成原来单凭复杂的硬件逻辑所完成的功能,并可方便地设置标志等。

2.累加器A

累加器通常用A或ACC表示,是一个具有特殊用途的8位寄存器,用于存放操作数或运算结果。ALU做算术和逻辑运算时,一个操作数存放于A中,运算结束后,运算结果也保存于A中。CPU中的数据传送大多都通过累加器A,它又相当于数据的中转站,是CPU中使用最频繁的寄存器,在微处理器中占有非常重要的位置。

3.寄存器B

寄存器B也是一个二进制8位寄存器,是为ALU进行乘、除运算而设置的,可存放乘数、除数或结果。

乘法中,ALU的两个输入分别为A、B,运算结果存放在B、A寄存器对中。B中放乘积的高8位,A中放乘积的低8位。

除法中,被除数取自A,除数取自B,商存放于A中,余数存放于B中。

在不执行乘、除法运算时,可把它当成一个普通寄存器使用。

4.程序状态寄存器PSW(www.chuimin.cn)

程序状态寄存器PSW也称为标志寄存器,是一个8位寄存器,它保存指令执行结果的状态信息,以供程序查询和判别。其中,有些位的状态是根据程序执行结果由硬件自动设置的,而有些位的状态则是用户根据需要用软件设定的。PSW各标志位定义如表2-1所示。

表2-1 PSW各标志位定义

进位标志位CY(PSW.7):在执行某些算术运算(如加减运算)、逻辑运算(如移位操作)指令时,可被硬件或软件置位或清0。它表示在加减运算过程中最高位是否有进位或借位。如果在最高位有进位(加法时)或借位(减法时),则CY=1,否则CY=0。CY也可写为C。

辅助进位(或称半进位)标志位AC(PSW.6):用于表示两个8位数运算时,低4位向高4位有无进位(加法)或借位(减法),若D3位向D4位有进位(或借位),则AC=1,否则AC=0。AC位常作为计算机进行BCD码修正的判断依据。

用户自定义标志位F0(PSW.5):用户可根据自己的需要对F0赋予一定的含义,并通过软件根据程序执行的需要对其进行置位或清0,该标志位状态一经设定,可由用户程序直接检测,根据F0=1或F0=0决定程序的执行方式,或反映系统的某一种工作状态。

工作寄存区选择位RS1、RS0(PSW.4、PSW.3):可用软件置位或清0,用于选择4个工作寄存器区中的哪一个为当前工作寄存器区。

溢出标志位OV(PSW.2):做加法或减法运算时,由硬件置位或清0,以指示运算结果是否溢出。OV=1反映运算结果超出了累加器的数值范围(无符号数的范围为0~255,以补码形式表示有符号数的范围为-128~+127)。进行无符号数的加法或减法时,OV的值与进位位CY的值相同;进行有符号数的加法时,如最高位、次高位之一有进位,或做减法时,如最高位、次高位之一有借位,OV被置位,即OV的值为最高位和次高位进位异或(C7⊕C6)的结果。执行乘法指令MUL AB也会影响OV标志,乘积大于255时OV=1,否则OV=0;执行除法指令DIV AB也会影响OV标志,如B中存放的除数为0,则OV=1,否则OV=0。

用户自定义标志位F1(PSW.1):用法与F0相同。

奇偶标志位P(PSW.0):执行指令后,单片机根据累加器A的8位二进制数中“1”的个数的奇偶,自动给该标志置位或清零。若累加器A的8位二进制数中“1”的个数为奇数,则P=1;若累加器A中“1”的个数为偶数,则P=0。该标志对串行通信的数据传输非常有用,通过奇偶校验可检验传输的可靠性