单片机指令大全Word格式.docx
《单片机指令大全Word格式.docx》由会员分享,可在线阅读,更多相关《单片机指令大全Word格式.docx(10页珍藏版)》请在冰豆网上搜索。
2
direct,Rn
寄存器送直接寻址单元
Rn,direct
直接寻址单元送寄存器
direct,@Ri
内部RAM单元送直接寻址单元
@Ri,direct
直接寻址单元送内部RAM单元
direct2,direct1
直接寻址单元送直接寻址单元
DPTR,#data16
16位立即数送数据指针
MOVX
A,@Ri
外部RAM单元送累加器(8位地址)
@Ri,A
累加器送外部RAM单元(8位地址)
A,@DPTR
外部RAM单元送累加器(16位地址)
@DPTR,A
累加器送外部RAM单元(16位地址)
MOVC
A,@A+DPTR
查表数据送累加器(DPTR为基址)
A,@A+PC
查表数据送累加器(PC为基址)
XCH
A,Rn
累加器与寄存器交换
累加器与内部RAM单元交换
XCHD
A,direct
累加器与直接寻址单元交换
累加器与内部RAM单元低4位交换
SWAP
A
累加器高4位与低4位交换
POP
direct
栈顶弹出指令直接寻址单元
PUSH
direct
直接寻址单元压入栈顶
二、算术运算类指令
ADD
累加器加寄存器
A,@Ri
累加器加内部RAM单元
A,direct
累加器加直接寻址单元
A,#data
累加器加立即数
ADDC
A,Rn
累加器加寄存器和进位标志
A,@Ri
累加器加内部RAM单元和进位标志
A,#data
累加器加立即数和进位标志
A,direct
累加器加直接寻址单元和进位标志
INC
A
累加器加1
Rn
寄存器加1
直接寻址单元加1
@Ri
内部RAM单元加1
DPTR
数据指针加1
DA
十进制调整
SUBB
累加器减寄存器和进位标志
累加器减内部RAM单元和进位标志
累加器减立即数和进位标志
累加器减直接寻址单元和进位标志
DEC
累加器减1
寄存器减1
内部RAM单元减1
直接寻址单元减1
MUL
AB
累加器乘寄存器B
4
DIV
累加器除以寄存器B
三、逻辑运算类指令
ANL
累加器与寄存器
累加器与内部RAM单元
累加器与立即数
累加器与直接寻址单元
direct,A
直接寻址单元与累加器
direct,#data
直接寻址单元与立即数
ORL
累加器或寄存器
A,@Ri
累加器或内部RAM单元
A,#data
累加器或立即数
A,direct
累加器或直接寻址单元
直接寻址单元或累加器
直接寻址单元或立即数
XRL
累加器异或寄存器
累加器异或内部RAM单元
累加器异或立即数
累加器异或直接寻址单元
直接寻址单元异或累加器
直接寻址单元异或立即数
RL
累加器左循环移位
RLC
累加器连进位标志左循环移位
RR
累加器右循环移位
RRC
累加器连进位标志右循环移位
CPL
累加器取反
CLR
累加器清零
四、控制转移类指令类
ACCALLaddr11
2KB范围内绝对调用
AJMP
addr11
2KB范围内绝对转移
LCALL
addr16
2KB范围内长调用
3
LJMP
addr16
2KB范围内长转移
SJMP
rel
相对短转移
JMP
@A+DPTR
相对长转移
RET
子程序返回
RET1
中断返回
JZ
累加器为零转移
JNZ
rel
累加器非零转移
CJNE
A,#data,rel
累加器与立即数不等转移
A,direct,rel
累加器与直接寻址单元不等转移
Rn,#data,rel
寄存器与立即数不等转移
@Ri,#data,rel
RAM单元与立即数不等转移
DJNZ
Rn,rel
寄存器减1不为零转移
,rel
直接寻址单元减1不为零转移
NOP
空操作
五、布尔操作类指令
C,bit
直接寻址位送C
bit,C
C送直接寻址位
C
C清零
bit
直接寻址位清零
C取反
直接寻址位取反
SETB
C
C置位
bit
直接寻址位置位
C逻辑与直接寻址位
C,/bit
C逻辑与直接寻址位的反
C逻辑或直接寻址位
C逻辑或直接寻址位的反
JC
C为1转移
JNC
C为零转移
JB
bit,rel
直接寻址位为1转移
JNB
bit,rel
直接寻址为0转移
JBC
直接寻址位为1转移并清该位
[1].以累加器A为目的操作数类指令(4条)
这4条指令的作用是把源操作数指向的内容送到累加器A。
有直接、立即数、寄存器和寄存器间接寻址方式:
MOVA,data;
(data)→(A)直接单元地址中的内容送到累加器A
MOVA,#data;
#data→(A)立即数送到累加器A中
MOVA,Rn;
(Rn)→(A)Rn中的内容送到累加器A中
MOVA,@Ri;
((Ri))→(A)Ri内容指向的地址单元中的内容送到累加器A
[2].以寄存器Rn为目的操作数的指令(3条)
这3条指令的功能是把源操作数指定的内容送到所选定的工作寄存器Rn中。
有直接、立即和寄存器寻址方式:
MOVRn,data;
(data)→(Rn)直接寻址单元中的内容送到寄存器Rn中
MOVRn,#data;
#data→(Rn)立即数直接送到寄存器Rn中
MOVRn,A;
(A)→(Rn)累加器A中的内容送到寄存器Rn中
[3].以直接地址为目的操作数的指令(5条)
这组指令的功能是把源操作数指定的内容送到由直接地址data所选定的片内RAM中。
有直接、立即、寄存器和寄存器间接4种寻址方式:
MOVdata,data;
(data)→(data)直接地址单元中的内容送到直接地址单元
MOVdata,#data;
#data→(data)立即数送到直接地址单元
MOVdata,A;
(A)→(data)累加器A中的内容送到直接地址单元
MOVdata,Rn;
(Rn)→(data)寄存器Rn中的内容送到直接地址单元
MOVdata,@Ri;
((Ri))→(data)寄存器Ri中的内容指定的地址单元中数据送到直接地址单元
[4].以间接地址为目的操作数的指令(3条)
这组指令的功能是把源操作数指定的内容送到以Ri中的内容为地址的片内RAM中。
有直接、立即和寄存器3种寻址方式:
MOV@Ri,data;
(data)→((Ri))直接地址单元中的内容送到以Ri中的内容为地址的RAM单元
MOV@Ri,#data;
#data→((Ri))立即数送到以Ri中的内容为地址的RAM单元
MOV@Ri,A;
(A)→((Ri))累加器A中的内容送到以Ri中的内容为地址的RAM单元
[5].查表指令(2条)
这组指令的功能是对存放于程序存储器中的数据表格进行查找传送,使用变址寻址方式:
MOVCA,@A+DPTR;
((A))+(DPTR)→(A)表格地址单元中的内容送到累加器A中
MOVCA,@A+PC;
((PC))+1→(A),((A))+(PC)→(A)表格地址单元中的内容送到累加器A中
[6].累加器A与片外数据存储器RAM传送指令(4条)
这4条指令的作用是累加器A与片外RAM间的数据传送。
使用寄存器寻址方式:
MOVX@DPTR,A;
(A)→((DPTR))累加器中的内容送到数据指针指向片外RAM地址中
MOVXA,@DPTR;
((DPTR))→(A)数据指针指向片外RAM地址中的内容送到累加器A中
MOVXA,@Ri;
((Ri))→(A)寄存器Ri指向片外RAM地址中的内容送到累加器A中
MOVX@Ri,A;
(A)→((Ri))累加器中的内容送到寄存器Ri指向片外RAM地址中
[7].堆栈操作类指令(2条)
这4类指令的作用是把直接寻址单元的内容传送到堆栈指针SP所指的单元中,以及把SP所指单元的内容送到直接寻址单元中。
这类指令只有两条,下述的第一条常称为入栈操作指令,第二条称为出栈操作指令。
需要指出的是,单片机开机复位后,(SP)默认为07H,但一般都需要重新赋值,设置新的SP首址。
入栈的第一个数据必须存放于SP+1所指存储单元,故实际的堆栈底为SP+1所指的存储单元。
PUSHdata;
(SP)+1→(SP),(data)→(SP)堆栈指针首先加1,直接寻址单元中的数据送到堆栈指针SP所指的单元中
POPdata;
(SP)→(data)(SP)-1→(SP),堆栈指针SP所指的单元数据送到直接寻址单元中,堆栈指针SP再进行减1操作
[8].交换指令(5条)
这5条指令的功能是把累加器A中的内容与源操作数所指的数据相互交换。
XCHA,Rn;
(A)←→(Rn)累加器与工作寄存器Rn中的内容互换
XCHA,@Ri;
(A)←→((Ri))累加器与工作寄存器Ri所指的存储单元中的内容互换
XCHA,data;
(A)←→(data)累加器与直接地址单元中的内容互换
XCHDA,@Ri;
(A3-0)←→((Ri)3-0)累加器与工作寄存器Ri所指的存储单元中的内容低半字节互换
SWAPA;
(A3-0)←→(A7-4)累加器中的内容高低半字节互换
[9].16位数据传送指令(1条)
这条指令的功能是把16位常数送入数据指针寄存器。
MOVDPTR,#data16;
#dataH→(DPH),#dataL→(DPL)16位常数的高8位送到DPH,低8位送到DPL
MCS-51算术运算指令
算术运算指令共有24条,算术运算主要是执行加、减、乘、除法四则运算。
另外MCS-51指令系统中有相当一部分是进行加、减1操作,BCD码的运算和调整,我们都归类为运算指令。
虽然MCS-51单片机的算术逻辑单元ALU仅能对8位无符号整数进行运算,但利用进位标志C,则可进行多字节无符号整数的运算。
同时利用溢出标志,还可以对带符号数进行补码运算。
需要指出的是,除加、减1指令外,这类指令大多数都会对PSW(程序状态字)有影响。
这在使用中应特别注意。
[1].加法指令(4条)
这4条指令的作用是把立即数,直接地址、工作寄存器及间接地址内容与累加器A的内容相加,运算结果存在A中。
ADDA,#data;
(A)+#data→(A)累加器A中的内容与立即数#data相加,结果存在A中
ADDA,data;
(A)+(data)→(A)累加器A中的内容与直接地址单元中的内容相加,结果存在A中
ADDA,Rn;
(A)+(Rn)→(A)累加器A中的内容与工作寄存器Rn中的内容相加,结果存在A中
ADDA,@Ri;
(A)+((Ri))→(A)累加器A中的内容与工作寄存器Ri所指向地址单元中的内容相加,结果存在A中
[2].带进位加法指令(4条)
这4条指令除与[1]功能相同外,在进行加法运算时还需考虑进位问题。
ADDCA,data;
(A)+(data)+(C)→(A)累加器A中的内容与直接地址单元的内容连同进位位相加,结果存在A中
ADDCA,#data;
(A)+#data+(