单片机系统指令的功能指令

如题所述

第1个回答  2016-06-03

一、字节交换指令
XCH A, Rn
若(A)=80H,(R7)=08H,执行后(A)=08H,(R7)=80H
XCH A, direct
若(A)=80H,(40H)=F0H,执行后(A)=F0H ,(40H)= 80H
XCH A, @Ri
若(A)=80H , (R0)=6AH, (6AH)=0FH ,
执行后(A)=0FH,(6AH)=80H
二、半字节交换指令
XCHD A, @Ri 累加器的低4位与内部RAM低4位交换
三、累加器半字节交换指令
SWAP A
将累加器A的高半字节和低半字节互换。
四、算术运算指令
加、减、乘、除指令,都是针对8位二进制无符号数。执行
的结果对Cy、Ac、OV等标志位有影响,但增1和减1指令不影
响上述标志。
1、加法指令,目的操作数均为ACC。
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”,否则清0;
(2)、如果位3有进位,则辅助进位标志Ac置“1”,否则清0;
(3)、溢出标志位OV:
如果位6有进位,而位7没有进位;或者位7有进位,而位6 没有,则溢出标志位OV置“1”,否则清0。
OV状态,只有在带符号数加法运算时才有意义。
当两个带符号数相加时,OV=1,表示加法运算超出了累加器A所能表示的带符号数的有效范围。
2、带进位加法指令
标志位Cy参加运算,因此是三个数相加。共4条:
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、增1(加1)指令(C语言的++ )
INC A
INC Rn ;n=0~7
INC direct
INC @Ri ;i=0,1
INC DPTR (除立即数以外)
(1)、不影响PSW中的任何标志(除了INC A 外)。
(2)、INC DPTR
该指令是16位数增1指令。指令首先对低8位指针DPL的内容执行加1的操作,当产生溢出时,就对DPH的内容进行加1操作,不影响标志Cy的状态。
4、DA A,十进制调整指令
用于对BCD码加法运算结果的修正。
两个BCD码按二进制相加之后,必须经本指令的调整才能
得到正确的压缩BCD码的和数。
调整方法:十进制调整修正,即结果加6调整。具体为:
a) 累加器低4位大于9或辅助进位位Ac=1,则进行低4位加6修正;
b) 累加器高4位大于9或进位位Cy=1,则进行高4位加6修正;
c) 累加器高4位大于9, 低4位大于9, 则高4位和低4位分别加6修正;是否加6是通过执行指令 DA A 来自动实现的。
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
A的内容减去源操作数和进位标志Cy的值,结果存在A中。
1、如果位7需借位,则Cy置1,否则清0;
2、如果位3需借位,则Ac置1 ,否则清0;
3、如果位6需借位而位7不需要借位,或者位7需借位,位6
不需借位,则溢出标志位OV置1,否则清0。
6、减1指令(C语言的--)
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
1、减1指令不影响标志位。
2、增1/加1指令有INC DPTR,减1无DEC DPTR指令。
7、乘法指令
MUL AB ;A×B→BA
1、积的高字节在B中,低字节在A中;
2、如果积大于255,则置“1”溢出标志位OV
8、除法指令
DIV AB ;A/B→A(商),余数→B
如果B的内容为“0”(即除数为“0”),则存放结果的A、B中的内容不定,并置“1”溢出标志位OV。
五、左环移指令RL A
累加器A的内容向左环移一位,Acc.7移入Acc.0 ,不影响标志。
六、带进位左环移指令RLC A
累加器A的内容和进位标志位Cy一起向左环移一位,Acc.7移入进位位Cy,Cy移入Acc.0,不影响其它标志。
七、右环移指令RR A
累加器A的内容向右环移一位,Acc.0移入Acc.7,不影响标志。
八、带进位环移指令RRC A
累加器A的内容和进位标志Cy一起向右环移一位,Acc.0移入Cy,Cy移入Acc.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
十、逻辑或指令
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
十一、逻辑异或指令
XRL A, Rn ;(A) ⊕(Rn)→A
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
与1相与取反,与0相与不变。

相似回答