51單片機(jī)指令總結(jié)
A,Rn,@Rn,dir,#data,@DPTR
1.內(nèi)部RAM與SFR的傳送指令MOVdir為目的操作數(shù):A,Rn,@Ri,dir,#dataA為目的操作數(shù):Rn,@Ri,dir,#dataRn為目的操作數(shù):A,dir,#data@Ri為目的操作數(shù):A,dir,#dataDPTR為目的操作數(shù):#data
2.外部RAM只能與A進(jìn)行數(shù)據(jù)傳送,只能通過寄存器間接尋址,只有傳送類指令,并用MOVX表示MOVXA,@RiMOVXA,@DPTRMOVX@Ri,AMOVX@DPTR,A
3.ROM只能與A進(jìn)行數(shù)據(jù)傳送,只能通過變址尋址,只有讀操作,并用MOVC表示MOVCA,@A+PCMOVCA,@A+DPTR
4.交換指令XCH
只能以A為目的操作數(shù):Rn,@Ri,dir
低半字節(jié)交換指令XCHDA,Rn
高、低半字節(jié)交換指令SWAPA
5.加減指令A(yù)DD,ADDC,SUBB
只能以A為目的操作數(shù):Rn,@Ri,dir,#data
邏輯運(yùn)算指令A(yù)NL,ORL,XRLA為目的操作數(shù):Rn,@Ri,dir,#datadir為目的操作數(shù):A,#data
加1指令I(lǐng)NC
目的操作數(shù):A,Rn,@Ri,dir,DPTR
減1指令DEC
目的操作數(shù):A,Rn,@Ri,dir
零轉(zhuǎn)移JZ非零轉(zhuǎn)移JNZ減一非零轉(zhuǎn)移DJNZ目的操作數(shù)為Rn或dirCJNE
A為目的操作數(shù):#data、dirRn為目的操作數(shù):#data@Ri為目的操作數(shù):#data
擴(kuò)展閱讀:51單片機(jī)匯編指令總結(jié)
數(shù)據(jù)傳輸指令
一.片內(nèi)RAM數(shù)據(jù)傳輸指令
1.以累加器A為目的操作數(shù)的指令:MOVA,RnMOVA,directMOVA,@RiMOVA,#data
2.以寄存器Rn為目的操作數(shù)的指令:MOVRn,AMOVRn,directMOVRn,data
3.以直接地址為目的操作數(shù)的指令:MOVdirect,AMOVdirect,RnMOVdirect1,derect2MOVdirect,@RiMOVdirect,#data
4.間接地址為目的操作數(shù)的指令:MOV@Ri,AMOV@Ri,directMOV@Ri,#data5.十六位數(shù)據(jù)傳送指令:MOVDPTR,#data16
二.累加器A與片外RAM數(shù)據(jù)傳送指令: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.字節(jié)交換指令:
XCHA,RnXCHA,directXCHA,@Ri
2.半字節(jié)交換指令:XCHDA,@Ri3.累加器半字節(jié)交換指令:SWAPA五.棧操作指令:1.PUSH(入棧指令)PUSHdirect2.POP(出棧指令)POPdirect
算術(shù)運(yùn)算指令:
一.加法減法指令:
1.加法指令:
ADDA,RnADDA,directADDA,@RiADDA,#data2.帶進(jìn)位加法指令:
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)高字節(jié)放在B中,低字節(jié)放在A中2.除法指令:
DIVABA←(A)÷(B)的商,(B)←(A)÷(B)的余數(shù)三.加1減1指令:
1.加1指令:
INCAA←(A)+1INCRnRn←(Rn)+1
INCdirectdirect←(direct)+1INC@Ri(Ri)←((Ri))+1INCDPTRDPTR←(DPTR)+12.減1指令:DECADECRnDECdirectDEC@Ri四.十進(jìn)制調(diào)制指令:
DAA調(diào)整累加器A的內(nèi)容為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
三.循環(huán)位移指令:1.累加器A循環(huán)左移指令:RLA2.累加器A循環(huán)右移指令:RRA3.累加器A連同進(jìn)位位循環(huán)左移指令:RLCA4.累加器A連同進(jìn)位位循環(huán)右移指令:RRCA控制轉(zhuǎn)移指令:
一.無條件轉(zhuǎn)移指令:
1.絕對轉(zhuǎn)移指令:
AJMPaddr11(先PC+2,然后將addr11的低十位傳給PC,PC的高六位不變)
2.長轉(zhuǎn)移指令:
LJMPaddr16(用addr16的值替換PC的值)3.相對轉(zhuǎn)移(短轉(zhuǎn)移)指令:
SJMPrel(帶符號(hào)的偏移字節(jié)數(shù))(PC+2,再加rel賦值給PC)4.間接轉(zhuǎn)移指令:
JMP@A+DPTR(A)+(DPTR)→(PC)
二.條件轉(zhuǎn)移指令:
1.累加器判零轉(zhuǎn)移指令:
JZrel先PC+2;后判斷,A為0時(shí)轉(zhuǎn)移,PC+rel賦值給PC;否則順序執(zhí)行
JNZrel先PC+2,后判斷,A不為0時(shí)轉(zhuǎn)移,PC+rel賦值給PC;否則順序執(zhí)
行2.比較轉(zhuǎn)移指令:CJNE目的操作數(shù),源操作數(shù),relCJNEA,direct,rel先PC+3傳回PC,再比較目的操作數(shù)和原操作數(shù)CJNEA,#data,rel目>源時(shí),程序轉(zhuǎn)移,PC+rel傳回PC且CY=0CJNERn,#data,rel目=源時(shí),程序順序執(zhí)行CJNE@Ri,#data,rel目ORLC,bitORLC,bit
三.位清零、置一、取反指令:
1.位清零指令:
CLRCCLRbit2.位置一指令:
SETBCSTEBbi3.位取反指令:
CPLCCPLbit
這類指令的功能執(zhí)行的結(jié)果不影響標(biāo)志位,當(dāng)直接尋址位地址為端口P0~P3中的某一位時(shí),具有“讀-改-寫”的功能。
四.位條件轉(zhuǎn)移指令:
1.位累加器C判斷轉(zhuǎn)移指令
JCrel先pc+2后判斷,(C)=1時(shí),則PC+rel賦值給PC,反之順序執(zhí)行JNCrel先pc+2后判斷,(C)=0時(shí),則PC+rel賦值給PC,反之順序執(zhí)行2.判位變量轉(zhuǎn)移指令:
JBbit,rel先PC+3,判斷,若(bit)=1,PC+rel賦值給PC,反之順序
往下執(zhí)行
JNBbit,rel先PC+3,判斷,若(bit)=0,PC+rel賦值給PC,反之順
序往下執(zhí)行
3.判位變量轉(zhuǎn)移指令:
JBCbit,rel先PC+3,判斷,若(bit)=0,PC+rel賦值給PC,且bit
←0,反之順序往下執(zhí)行
友情提示:本文中關(guān)于《51單片機(jī)指令總結(jié)》給出的范例僅供您參考拓展思維使用,51單片機(jī)指令總結(jié):該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時(shí)刪除。