51单片机指令总结
A,Rn,@Rn,dir,#data,@DPTR
1.内部RAM与SFR的传送指令MOVdir为目的操作数:A,Rn,@Ri,dir,#dataA为目的操作数:Rn,@Ri,dir,#dataRn为目的操作数:A,dir,#data@Ri为目的操作数:A,dir,#dataDPTR为目的操作数:#data
2.外部RAM只能与A进行数据传送,只能通过寄存器间接寻址,只有传送类指令,并用MOVX表示MOVXA,@RiMOVXA,@DPTRMOVX@Ri,AMOVX@DPTR,A
3.ROM只能与A进行数据传送,只能通过变址寻址,只有读操作,并用MOVC表示MOVCA,@A+PCMOVCA,@A+DPTR
4.交换指令XCH
只能以A为目的操作数:Rn,@Ri,dir
低半字节交换指令XCHDA,Rn
高、低半字节交换指令SWAPA
5.加减指令ADD,ADDC,SUBB
只能以A为目的操作数:Rn,@Ri,dir,#data
逻辑运算指令ANL,ORL,XRLA为目的操作数:Rn,@Ri,dir,#datadir为目的操作数:A,#data
加1指令INC
目的操作数:A,Rn,@Ri,dir,DPTR
减1指令DEC
目的操作数:A,Rn,@Ri,dir
零转移JZ非零转移JNZ减一非零转移DJNZ目的操作数为Rn或dirCJNE
A为目的操作数:#data、dirRn为目的操作数:#data@Ri为目的操作数:#data
扩展阅读:51单片机汇编指令总结
数据传输指令
一.片内RAM数据传输指令
1.以累加器A为目的操作数的指令:MOVA,RnMOVA,directMOVA,@RiMOVA,#data
2.以寄存器Rn为目的操作数的指令:MOVRn,AMOVRn,directMOVRn,data
3.以直接地址为目的操作数的指令:MOVdirect,AMOVdirect,RnMOVdirect1,derect2MOVdirect,@RiMOVdirect,#data
4.间接地址为目的操作数的指令:MOV@Ri,AMOV@Ri,directMOV@Ri,#data5.十六位数据传送指令:MOVDPTR,#data16
二.累加器A与片外RAM数据传送指令:MOVXA,@RiMOVXA,@DPTRMOVX@Ri,AMOVX@DPTR,A三.查表寻址:MOVCA,@A+DPTR(先PC←(PC)+1,后A←((A)+(DPTR)))+MOVCA,@A+PC(先PC←(PC)+1,后A←((A)+(PC)))四.交换指令:
1.字节交换指令:
XCHA,RnXCHA,directXCHA,@Ri
2.半字节交换指令:XCHDA,@Ri3.累加器半字节交换指令:SWAPA五.栈操作指令:1.PUSH(入栈指令)PUSHdirect2.POP(出栈指令)POPdirect
算术运算指令:
一.加法减法指令:
1.加法指令:
ADDA,RnADDA,directADDA,@RiADDA,#data2.带进位加法指令:
ADDCA,RnA←(A)+(Rn)+CYADDCA,directA←(A)+(direct)+CYADDCA,@RiA←(A)+((Ri))+CYADDCA,#dataA←(A)+(data)+CY3.带借位减法指令:
SUBBA,RnA←(A)-CY-(Rn)SUBBA,directA←(A)-CY-(direct)SUBBA,@RiA←(A)-CY-((Ri))SUBBA,#dataA←(A)-CY-#data二.乘法除法指令:
1.乘法指令:
MULABBA←(A)×(B)高字节放在B中,低字节放在A中2.除法指令:
DIVABA←(A)÷(B)的商,(B)←(A)÷(B)的余数三.加1减1指令:
1.加1指令:
INCAA←(A)+1INCRnRn←(Rn)+1
INCdirectdirect←(direct)+1INC@Ri(Ri)←((Ri))+1INCDPTRDPTR←(DPTR)+12.减1指令:DECADECRnDECdirectDEC@Ri四.十进制调制指令:
DAA调整累加器A的内容为BCD码
逻辑操作指令:
一.逻辑与、或、异或指令:1.逻辑与指令:ANLA,RnANLA,directANLA,@RiANLA,#data2.逻辑或这令:ORLA,RnORLA,directORLA,@RiORLA,#dataORLdirect,AORLdirect,#data3.逻辑异或指令:XRLA,RnXRLA,directXRLA,@RiXRLA,#dataXRLdirect,AXRLdirect,#data二.清零、取反指令:1.累加器A清零指令:CRLA2.累加器A取反指令:CPLA
三.循环位移指令:1.累加器A循环左移指令:RLA2.累加器A循环右移指令:RRA3.累加器A连同进位位循环左移指令:RLCA4.累加器A连同进位位循环右移指令:RRCA控制转移指令:
一.无条件转移指令:
1.绝对转移指令:
AJMPaddr11(先PC+2,然后将addr11的低十位传给PC,PC的高六位不变)
2.长转移指令:
LJMPaddr16(用addr16的值替换PC的值)3.相对转移(短转移)指令:
SJMPrel(带符号的偏移字节数)(PC+2,再加rel赋值给PC)4.间接转移指令:
JMP@A+DPTR(A)+(DPTR)→(PC)
二.条件转移指令:
1.累加器判零转移指令:
JZrel先PC+2;后判断,A为0时转移,PC+rel赋值给PC;否则顺序执行
JNZrel先PC+2,后判断,A不为0时转移,PC+rel赋值给PC;否则顺序执
行2.比较转移指令:CJNE目的操作数,源操作数,relCJNEA,direct,rel先PC+3传回PC,再比较目的操作数和原操作数CJNEA,#data,rel目>源时,程序转移,PC+rel传回PC且CY=0CJNERn,#data,rel目=源时,程序顺序执行CJNE@Ri,#data,rel目ORLC,bitORLC,bit
三.位清零、置一、取反指令:
1.位清零指令:
CLRCCLRbit2.位置一指令:
SETBCSTEBbi3.位取反指令:
CPLCCPLbit
这类指令的功能执行的结果不影响标志位,当直接寻址位地址为端口P0~P3中的某一位时,具有“读-改-写”的功能。
四.位条件转移指令:
1.位累加器C判断转移指令
JCrel先pc+2后判断,(C)=1时,则PC+rel赋值给PC,反之顺序执行JNCrel先pc+2后判断,(C)=0时,则PC+rel赋值给PC,反之顺序执行2.判位变量转移指令:
JBbit,rel先PC+3,判断,若(bit)=1,PC+rel赋值给PC,反之顺序
往下执行
JNBbit,rel先PC+3,判断,若(bit)=0,PC+rel赋值给PC,反之顺
序往下执行
3.判位变量转移指令:
JBCbit,rel先PC+3,判断,若(bit)=0,PC+rel赋值给PC,且bit
←0,反之顺序往下执行
友情提示:本文中关于《51单片机指令总结》给出的范例仅供您参考拓展思维使用,51单片机指令总结:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。