2022年单片机算术运算指令[归 .pdf
1程序状态字PSWMCS 51有一个程序状态字寄存器PSW ,用来保存指令执行结果的标志,供程序查讯和判别。 PSW 是特殊功能寄存器中的一个,其格式如下:PSW7 既是布尔处理机的累加器C,又是进位标志CY,如果操作结果在最高位有进位输出(加法时)或借位输入(减法时),置位 CY,否则清 “ 0” CY。AC辅助进位(半进位)标志。如果操作结果的低4位有进位(加法时)或向高4位借位时(减法),置 AC,否则清 “ 0” AC, AC 主要用于二十进制数加法调整。OV溢出标志。如果操作结果有进位进入最高位,但最高位没有产生进位,或者最高位产生进位而低位没有向最高位进位,这时置位溢出标志位,否则OV 清“ 0” 。溢出标志位用于补码运算,当有符号的数运算结果不能用8位二进制数表示时,OV 将置位。P累加器A 的奇偶标志位,如果累加器A 的8位的模 2和为 1(奇),则 P1;否则 P0。由于 P 总是表示 A 的奇偶性, 随着 A 的内容变化的, 所以一个值写入PSW 的 P 位的值不变。RS1 、RS0 指示当前使用的工作寄存器区。F0用户标志位。可作为软件标志,它的作用和内部RAM 位寻址区的各位相似。PSW1 保留位,对它的操作无效。2加法指令1、不带进位加法指令ADD A,#data ADD A,data ADD A,Ri ADD A,Rn 工作寄存器、 内部 RAM 单元内容或立即数的8位无符号二进制数和累加器A 中数相加, 所得和存放于累加器A 中,当和的第 3、7位有进位时,分别将AC,CY 标志位置 1;否则为 0。上述指令的执行将影响标志位AC 、CY 、OV 、P。对于无符号数,进位标志位CY 1,表示溢出; CY0表示无溢出。带符号数运算的溢出取决于第 6、7位中有一位产生进位,而另一位不产生进位,溢出标志位OV 置“ 1” 否则被清 “ 0” 。OV1表示两个正数相加,和变为负数,或两个负数相加,和变为正数的错误结果。源操作数有四种寻址方式:寄存器、直接、间接和立即数。2、带进位加法指令:ADDC A,#data ADDC A,data ADDC A,Ri ADDC A,Rn 这是四条带进位的加法指令。将累加器A 内容加当前CY 标志位内容,再加无符号单字节的数,和存于累加器A 中。当运算结果第3、7位产生进位溢出时,则分别置位AC、CY 和 OV标志位。本指令执行将影响标志位AC、 CY、OV 、P。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 3 页 - - - - - - - - - 本指令常用于多字节加法。3、加 1指令:INC A INC data INC Ri INC Rn INC DPTR INC 指令将指定的内容加1,结果仍存放于原A 或原单元中。如原值为0FFH ,加 1运算后将变成 00H ,运算结果不影响标志位。本指令可对累加器A、工作寄存器RN 、RI 间址和直接寻址的单元内容进行加1运算。可见MCS 51加1指令是较丰富的。注意:当用本指令使输出并行IO 内容加 1时,用作输出口原始值,将从输出口的数据锁存器中读入,而不是从输出口的引脚上读入。4、二十进制调正指令:DA A 若(A0-3)9 或(AC)=1), 则 (A0-3)(A0-3)+06H 本指令是对A 的 BCD 码加法结果进行调正。两个压缩型BCD 码按二进制数相加之后,必须经本指令调正,才能得到压缩型BCD 码的和数。本指令的操作为:若累加器A 的低 4位数值大于 9或者第 3位向第 4位产生进位,即AC 辅助进位位为 1,则需将A 的低 4位内容加 6调正,以产生低4位正确的BCD 码值。如果加0调正后,低4位产生进位,且高4位均为 1时,则内部加法将置位CY,反之,它并不清“ 0” CY 标志位。若累加器 A 的高 4位值大于 9或最高进位位CY1,则高位 4位需加 6调正,以产生高4位的正确 BCD 码值。同样,在加6调正后产生最高进位,则置位CY,反之,不清 “ 0” CY 这时 CY的置位,表示和数BCD 码值大于等于 100 。这对多字节十进制加法有用。不影响OV 标志。由此可见, 本指令是根据累加器A 的原始数值和PSW 的状态,对累加器 A 进行加 O6H 、 60H或66H 的操作。必须注意:本指令不能简单地把累加器A 中的 16进制数交换成BCD 码,也不能用于十进制减法的调正。3减法指令MCS 51在 MCS 48 的基础上增加了带借位减法指令,加强了计算机的运算功能。1、带借位减法指令:SUBB A,#data SUBB A,data 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 3 页 - - - - - - - - - SUBB A,Ri SUBB A,Rn 带借位减法指令SUBB ,从累加器A 中减去进位标志位CY 和指定的变量,结果在累加器A中,若第七位有借位,则置位位CY,否则CY 清0。若第 3位有错位,则置位辅助进位标志AC,否则清 0 AC。若第7和第 6位中有一位需借位,而另一位不借位, 则置位溢出标志OV。溢出位 OV 用于带符号的整数减法,它表示(OV 1)一个正数减负数结果为负数;或一个负数减正数结果为正数的错误结果。源操作数允许有四种寻址方式:寄存器RN ,直接地址direct ,间址 Ri 或立即数。当在进行单字节或多字节减法前,不知道进位标志位CY 的值,则应在减法指令前先将CY清“ 0” 。4乘法指令MUL AB 乘法指令是MCS 51新增加的,运算速度只需4个机器周期。它大大增加了MCS 51单片机的运算功能,克服了MCS 48系列单片机的不足。本指令将累加器A 和寄存器 B 中二个 8位无符号整数进行相乘,16位乘积的低 8位存于 A 中,高8位存于 B 中,如果乘积大于255(0FFH ) ,即 B 的内容不为 0时,则置位溢出标志位OV,否则清 “ 0” OV。进位标志位CY 总是清 “ 0” 。5除法指令DIV AB MCS 51 系列单片机增加的除法指令,运算时间亦只需4个机器周期,同样也增强了MCS 51的运算功能, 使它能适用于复杂的且要求运算功能较强的控制系统。除法指令格式:本指令将累加器A 中8位无符号整数除以B 寄存器中 8位无符号整数, 所得结果商的整数部分存于 A 中,整数作数部分存于寄存器B 中。清 “ 0” CY 和 OV 标志位。当除数(B 中内容)为00H 时,则执行结果将为不定值,即执行结果送往A 和 B 中的为不定值,且置位溢出标志位OV。在任何情况下,均清“ 0” CY 。6减一指令DEC A DEC data DEC Ri DEC Rn DEC 指令把所指的寄存器内容减1,结果仍送回原寄存器,若原来寄存器的内容为00H ,则减 1后将为FFH ,运算结果不影响任何标志位,该组指令使用了直接、寄存器和寄存器间寻址。同加 1指令一样,在第二条指令中,若直接地址是IO 口,则进行 “ 读改写 ” 操作。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -