单片微机原理与接口技术——8051汇编指令系统与编程基础(3)算术运算与逻辑运算指令

算术运算与逻辑运算指令

算术运算指令都是针对8位二进制无符号数的
影响PSW的进位Cy、辅助进位Ac、溢出OV标志。

一、算术运算指令

1.加法指令

ADD A,Rn ;(A)+(Rn)→A ,n=0~7
ADD A,direct ;(A)+(direct)→A
ADD A,@Ri ;(A)+((Ri))→A,i=0,1
ADD A,#data ;(A)+#data→A

(1)如果位7有进位,则Cy置1,否则Cy清0。
(2)如果位3有进位,则Ac置1,否则Ac清0。
(3)OV=位6进位⊕位7进位。
例1:

(A)=53H,(R0)=FCH,执行指令
ADD A,R0 在这里插入图片描述
结果:(A)=4FH,Cy=1,Ac=0,OV=0,P=1(A中奇数个1)。
**注意:**位6和位7同时有进位,所以OV=0。

只有带符号数运算,OV标志才有意义。
OV=1,表示运算结果超过有效范围(-128~+127),运算结果是错误的。

例2:

(A)= 85H,(R0)=20H,(20H)=AFH,执行指令
ADD A,@R0
在这里插入图片描述
结果:(A)=34H,Cy=1,Ac=1,OV=1,P=1。
**注意:**由于位7有进位,而位6无进位,所以标志位OV=1

2.带进位加法指令

ADDC A,Rn ;(A)+(Rn)+C→A ,n =0~7
ADDC A,direct ;(A)+(direct)+C→A
ADDC A,@Ri ;(A)+((Ri))+C→A,i =0,1
ADDC A,#data ;(A)+#data+C→A

例3:

(A)=85H,(20H)=FFH,Cy=1,执行指令
ADDC A,20H
在这里插入图片描述
结果: (A)=85H,Cy=1,Ac=1,OV=0,P=1。、

3.增1指令

INC A
INC Rn ;n=0~7
INC direct
INC @Ri ;i =0,1
INC DPTR

不影响PSW中的任何标志。

4.十进制调整指令

DA A
两个压缩BCD码按二进制相加后,对A中的加法结果进行十进制调整,得到正确的压缩BCD码的和。
十进制调整方法:
① 累加器低4位大于9或辅助进位Ac=1,则加06H修正。
② 累加器高4位大于9或进位Cy=1,则加60H修正。
例4:

(A)=56H,(R5)=47H,把它们看作两个压缩的BCD数。
执行指令:
ADD A,R5
DA A在这里插入图片描述
低4位大于9,先加06H对结果修正。
之后高4位大于9,再加60H对结果修正。
结果为(A)=03H,Cy=1。
验证56+47=103,结果正确。

5.带借位的减法指令

SUBB A,Rn ; (A)-(Rn)-Cy→A,n =0~7
SUBB A,direct ; (A)-(direct)-Cy→A
SUBB A,@Ri ; (A)-((Ri))-Cy→A, i =0,1
SUBB A,#data ; (A)-#data-Cy→A

如果位7需借位则Cy置1,否则Cy清0;
如果位3需借位则Ac置1,否则Ac清0;
OV=位6借位⊕位7借位。
例5:

(A)=C9H,(R2)=54H,Cy=1,执行指令
SUBB A,R2
在这里插入图片描述
结果: (A)=74H,Cy=0,Ac=0,OV=1。

6.减1指令

DEC A ;(A)-1→A
DEC Rn ;(Rn)-1→Rn,n=0~7
DEC direct ;(direct)-1→direct
DEC @Ri ;((Ri))-1→(Ri),i =0,1

不影响标志位(P标志除外)。
例6:

(A)=0FH,(R7)=19H,(30H)=00H,(R1)=40H,(40H)=0FFH,执行指令
DEC A ;(A)=0EH
DEC R7 ;(R7)=18H
DEC 30H ;(30H)=0FFH
DEC @R1 ;(40H)=0FEH ,P=1。

7.无符号整数乘法指令

MUL AB ;A×B→BA
积的低字节在A中,高字节在B中。
如果积>255,则OV置1,否则OV清0。Cy标志总是清0。

8.无符号整数除法指令

DIV AB ;A/B商→A,余数→B
Cy和OV清0。如果B=0(即除数为0),则OV置1。
例7:

(A)=FBH,(B)=12H,执行指令
DIV AB
结果: (A)=0DH,(B)=11H,Cy=0,OV=0。

二、逻辑运算指令

1.累加器A 清0指令

CLR A
不影响Cy、Ac、OV等标志位。

2.累加器A求反指令

CPL A
按位逻辑取反,不影响标志位。

3.左循环移位指令

RL A
A向左循环移位,位7循环移入位0,不影响标志位。
在这里插入图片描述

4.带进位左循环移位指令

RLC A
将A的内容和Cy位一起向左环移一位。
在这里插入图片描述

5.右环移指令

RR A
A的内容向右环移一位,不影响其他标志位。
在这里插入图片描述

6.带进位右环移指令

RRC A
A的内容和Cy标志一起向右环移一位。
在这里插入图片描述

7.逻辑与指令

ANL A,Rn ;(A)∧(Rn)→A,n=0~7
ANL A,direct ;(A)∧(direct)→A
ANL A,#data ;(A)∧#data→A
ANL A,@Ri ;(A)∧((Ri))→A,i =0~1
ANL direct,A ;(direct)∧(A)→direct
ANL direct,#data ;(direct)∧#data→direct

8.逻辑或指令

ORL A,Rn ;(A)∨(Rn)→A ,n =0~7
ORL A,direct ;(A)∨(direct)→A
ORL A,#data ;(A)∨ #data→A
ORL A,@Ri ;(A)∨((Ri))→A,i =0,1
ORL direct,A ;(direct)∨(A)→direct
ORL direct,#data ;(direct)∨#data→direct

9.逻辑异或指令

XRL A,Rn ;(A)⊕(Rn)→A,n=0~7
XRL A,direct ;(A)⊕(direct)→A
XRL A,@Ri ;(A)⊕((Ri))→A ,i =0,1
XRL A,#data ;(A)⊕#data→A
XRL direct,A ;(direct)⊕(A)→direct
XRL direct,#data ;(direct)⊕#data →direct
例8:

(A)=07H,(R0)=0FDH,执行指令
ANL A,R0在这里插入图片描述
结果: (A)=05H。

例9:

(P1)=05H,(A)=31H,执行指令
ORL P1,A在这里插入图片描述
结果:(P1)=35H。

例10:

(A)=90H,(R3)=73H,执行指令
XRL A,R3在这里插入图片描述
结果: (A)=E3H。

发布了10 篇原创文章 · 获赞 6 · 访问量 348

猜你喜欢

转载自blog.csdn.net/weixin_45367147/article/details/105500430
今日推荐