本篇博客主要列出了单片机的主要指令,供开发人员参考。作为一个单片机初学者,记住指令特别的痛苦,不过主要还是要理解,多练习指令,写多了就记住了,这是一个很自然的过程。
目录
一、寻址方式
寻址方式有七种:
1.立即寻址
如:MOV A,#3AH
2.直接寻址
如:MOV A,3AH
3.寄存器寻址
如:MOV A,R2
4.寄存器间接寻址
如:MOV A,@R0
5.变址寻址
如:MOVC A,@A+DPTR
6.相对寻址
如:JC 03H
7.位寻址
如:SETB 3DH
二、指令分类
对于刚接触指令的人来说,记住指令是非常痛苦的,其实只需要记住两个图就OK了。
上述两个图全面的展示了指令的操作,箭头所指的方向表示某一值或某一地址里面的值可以送入。
下面分类介绍指令:
1 数据传送类指令
1.1 内部RAM数据传送指令
(1)累加器为目的操作数的指令
MOV A,Rn ;(Rn)->A
MOV A,dir ;(dir)->A
MOV A,@Ri ;((Ri))->A
MOV A,#data ;data->A
(2)以寄存器Rn为目的操作数的指令
MOV Rn,A ;(A)->Rn
MOV Rn,dir ;(dir)->Rn
MOV Rn,#data ;data-.Rn
(3)以直接地址为目的操作数的指令
MOV dir,A ;(A)->dir
MOV dir,Rn ;(Rn)->dir
MOV dir,dir ;(dir)->dir
MOV dir,@Ri ;((Ri))->dir
MOV dir,#data ;data->dir
(4)以间接地址为目的操作数的指令
MOV @Ri,A ;(A)->(Ri)
MOV @Ri,dir ;(dir)->(Ri)
MOV @Ri,#data ;data->(Ri)
(5)16位数据传送指令
MOV DPTR,#data16 ;dataH->DPH,dataL->DPL
1.2 外部数据传送指令
MOVX A,@DPTR ;((DPTR))->A
MOVX @DPTR,A ;(A)->(DPTR)
MOVX A,@Ri ;((Ri))->A
MOVX @Ri,A ;(A)->(Ri)
1.3 查表指令
MOVC A,@A+PC ;(PC)+1->PC,((A)+(PC))->A
MOVC A,@A+DPTR ;((A)+(DPTR))->A
1.4 堆栈操作指令
PUSH dir ;(SP)+1->SP,(dir)->(SP)
POP dir ;((SP))->dir,(SP)-1->SP
1.5 交换指令
XCH A,Rn ;(A)<->(Rn)
XCH A,dir ;(A)<->(dir)
XCH A,@Rn ;(A)<->((Rn))
XCHD A,@Ri ;(A3~0)<->((Ri3~0))
SWAP A; ;(A3~0)<->(A7~4)
2 算术运算类指令
2.1 加法指令
ADD A,Rn ;(A)+(Rn)->A
ADD A,dir ;(A)+(dir)->A
ADD A,@Ri ;(A)+((Ri))->A
ADD A,#data ;(A)+data->A
2.2 带进位加法指令
ADDC A,Rn ;(A)+(Rn)+CY->A
ADDC A,dir ;(A)+(dir)+CY->A
ADDC A,@Ri ;(A)+((Ri))+CY->A
ADDC A,#data ;(A)+data+CY->A
2.3 带借位减法指令
SUBB A,Rn ;(A)-(Rn)-CY->A
SUBB A,dir ;(A)-(dir)-CY->A
SUBB A,@Ri ;(A)-((Ri))-CY->A
SUBB A,#data ;(A)-data-CY->A
2.4 乘法指令
MUL AB ;(A)X(B)->BA,B15~8,A7~0
2.5 除法指令
DIV AB ;A/B->A,A%B->B
2.6 减1指令
DEC A ;(A)-1->A
DEC Rn ;(Rn)-1->Rn
DEC dir ;(dir)-1->dir
DEC @Ri ;((Ri))-1->(Ri)
2.7 十进制调整指令
DA A
(by:CHENYUNHE 2018-12-6 https://blog.csdn.net/CHENYUNHE/ )