首页 理论教育 单片机算术运算指令-单片机原理与应用技术

单片机算术运算指令-单片机原理与应用技术

时间:2023-10-28 理论教育 版权反馈
【摘要】:算术运算类指令共24条,作8位无符号数的加减乘除算术运算。2)第6位进位而第7位无进位,或两者情况互换,则标志OV置位,否则清零。ADDC带进位加指令(4条)注:运算结果对PSW中标志位的影响与不带进位的加法指令相同。没有16位数据指针DPTR的减1指令。*指令执行后,A装入乘积低8位,B装入乘积高8位。

单片机算术运算指令-单片机原理与应用技术

算术运算类指令(Arithmetic Instructions)共24条,作8位无符号数的加减乘除算术运算(没有16位数运算指令)。结果会影响到程序状态字PSW中的进位标志CY、半进位标志AC、溢出标志OV的置位或复位状态。

1.加法指令(目的操作数只能是累加器A)

(1)ADD不带进位加指令(4条)

注:相加过程中各标志变化的判断依据为:

1)第3、7位向高位有进位,则标志AC和标志CY置位,否则清零。

2)第6位进位而第7位无进位,或两者情况互换,则标志OV置位,否则清零。

3)若A中“1”的个数为偶数则奇偶检验位P清零;若“1”的个数为奇数则P置位。

例:设(A)=65H,#data=BAH,执行ADD A,#data

相加结果:978-7-111-49886-5-Chapter02-23.jpg

(ACC)=3FH,(CY)=1,(AC)=0,(OV)=0,(P)=0

(CY)=1; 依据1),第7位有进位。

(AC)=0; 依据1),第3位无进位但第7位有进位。

(OV)=0; 依据2),第6位有进位,且第7位也有进位。

(P)=0; 依据3),ACC中有6个“1”,为偶数。

(2)ADDC带进位加指令(4条)

注:运算结果对PSW中标志位的影响与不带进位的加法指令相同。通常用于多字节的加法运算,从低字节开始相加,执行之前需把进位标志清零。

例:设两个16位的无符号数35E8H和5A64H,在片内RAM单元23H~20H中存放的次序为:(23H)=35H,(22H)=E8H;(21H)=5AH,(20H)=64H。把两数相加的结果按照从高字节到低字节的次序存放到21H和20H单元中,指令执行语句如下:

低字节相加的计算过程为:

高字节相加的计算过程(有来自低字节相加的进位“1”)为:

最后结果为904CH,其中存放的情况为:(21H)=90H,(20H)=4CH。

(3)INC增1指令(5条)

例:设(R1)=3EH,(3FH)=FEH,依次执行下述程序:

(4)DA十进制调整指令(1条)

DA A ;对累加器A中BCD码加法运算结果进行十进制调整

BCD码加法只采用4位二进制数的0~9表示十进制数字,相加值在10~15之间则属无效码,故需把结果加6来修正。该指令应跟在加法指令ADD和ADDC之后使用(对减法运算不适用)。(www.xing528.com)

十进制调整指令属单字节指令,所实现的操作为:

例:用BCD码正确表示85+46=131

2.减法指令

(1)SUBB带借位减法指令(4条)

注:*第7位有借位,则进位位CY置“1”,否则清“0”。

*第3位需借位,则半进位AC置“1”,否则清“0”。

*第6位需借位第7位不借位,或两者情况互换,则标志OV置“1”,否则清“0”。

例:(A)=95H,(R1)=63H,(CY)=1

执行指令SUBBA,R0,

结果为:(ACC)=31H,(CY)=0,(AC)=0,(OV)=1,(P)=1

(2)DEC 减1指令(4条)

注:后三条指令操作不影响标志。没有16位数据指针DPTR的减1指令。

3.乘法指令

MUL AB ;(A)←(A)×(B)取乘积低8位,(B)←(A)×(B)取乘积高8位

*A、B都是无符号整数,A装入被乘数,B装入乘数。

*指令执行后,A装入乘积低8位,B装入乘积高8位。

*乘积若大于255,则溢出标志OV置位,否则清为零。

*进位标志CY总是零。

4.除法指令

DIV AB ;(A)←(A)÷(B)取除法的商,(B)←(A)÷(B)取除法的余数

*A、B都是无符号整数,A装入被除数,B装入除数。

*指令执行后,A装入所得的商,B装入余数。

*若除数为“0”,则A和B内容不确定,且溢出标志OV置位;否则OV清为零。

*进位标志CY总是零。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈