51單片機(jī)匯編指令集(附記憶方法)_第1頁
51單片機(jī)匯編指令集(附記憶方法)_第2頁
51單片機(jī)匯編指令集(附記憶方法)_第3頁
51單片機(jī)匯編指令集(附記憶方法)_第4頁
51單片機(jī)匯編指令集(附記憶方法)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、51單片機(jī)匯編指令集一、數(shù)據(jù)傳送類指令(7種助記符)MOV(英文為Move):對內(nèi)部數(shù)據(jù)寄存器RAM和特殊功能寄存器SFR的數(shù)據(jù)進(jìn)行傳送;MOVC(MoveCode)讀取程序存儲器數(shù)據(jù)表格的數(shù)據(jù)傳送;MOVX(MoveExternalRAM)對外部RAM的數(shù)據(jù)傳送;XCH(Exchange)字節(jié)交換;XCHD(Exchangelow-orderDigit)低半字節(jié)交換;PUSH(PushontoStack)入棧;POP(PopfromStack)出棧;二、算術(shù)運(yùn)算類指令(8種助記符)ADD(Addition)加法;ADDC(AddwithCarry)帶進(jìn)位加法;SUBB(Subtractwit

2、hBorrow)帶借位減法;DA(DecimalAdjust)十進(jìn)制調(diào)整;INC(Increment)加1;DEC(Decrement)減1;MUL(Multiplication、Multiply)乘法;DIV(Division、Divide)除法;三、邏輯運(yùn)算類指令(10種助記符)ANL(ANDLogic)邏輯與;ORL(ORLogic)邏輯或;XRL(Exclusive-ORLogic)邏輯異或;CLR(Clear)清零;CPL(Complement)取反;RL(Rotateleft)循環(huán)左移;RLC(RotateLeftthroughttheCarryflag)帶進(jìn)位循環(huán)左移;RR(Ro

3、tateRight)循環(huán)右移;RRC(RotateRightthroughttheCarryflag)帶進(jìn)位循環(huán)右移;SWAP(Swap)低4位與高4位交換;四、控制轉(zhuǎn)移類指令(17種助記符)ACALL(AbsolutesubroutineCall)子程序絕對調(diào)用;LCALL(LongsubroutineCall)子程序長調(diào)用;RET(Returnfromsubroutine)子程序返回;RETI(ReturnfromInterruption)中斷返回;SJMP(ShortJump)短轉(zhuǎn)移;AJMP(AbsoluteJump)絕對轉(zhuǎn)移;LJMP(LongJump)長轉(zhuǎn)移;CJNE(Compar

4、eJumpifNotEqual)比較不相等則轉(zhuǎn)移;DJNZ(DecrementJumpifNotZero)減1后不為0則轉(zhuǎn)移;JZ(JumpifZero)結(jié)果為0則轉(zhuǎn)移;JNZ(JumpifNotZero)結(jié)果不為0則轉(zhuǎn)移;JC(JumpiftheCarryflagisset)有進(jìn)位則轉(zhuǎn)移;JNC(JumpifNotCarry)無進(jìn)位則轉(zhuǎn)移;JB(JumpiftheBitisset)位為1則轉(zhuǎn)移;JNB(JumpiftheBitisNotset)位為0則轉(zhuǎn)移;JBC(JumpiftheBitissetandClearthebit)位為1則轉(zhuǎn)移,并清除該位NOP(NoOperation)空操作;

5、五、位操作指令(1種助記符)CLR位清零;SETB(SetBit)位置1。8種常用偽指令1ORG16位地址;此指令用在原程序或數(shù)據(jù)塊的開始,指明此語句后面目標(biāo)程序或數(shù)據(jù)塊存放的起始地址。2 .標(biāo)號:DB字節(jié)數(shù)據(jù)項(xiàng)表;將項(xiàng)表中的字節(jié)數(shù)據(jù)存放到從標(biāo)號開始的連續(xù)字節(jié)單元中。例如:SEG:DB88H,100,“7”,“C”3 .標(biāo)號:DW雙字節(jié)數(shù)據(jù)項(xiàng)表;定義16位地址表,16地址按低位地址存低位字節(jié),高位地址存高位字節(jié)。例如:TAB:DW1234H,7BH4. 名字EQU表達(dá)式或名字二表達(dá)式;用與給一個(gè)表達(dá)式賦值或給字符串起名字。之后名字可用做程序地址,數(shù)據(jù)地址或立即數(shù)地址使用。名字必須是一字母開頭的

6、字母數(shù)字串。例如:COUNT=10或SPACEEQU10H5. 名字DATA直接字節(jié)地址;給8位內(nèi)部RAM單元起個(gè)名字,名字必須是一字母開頭的字母數(shù)字串。同一單元可起多個(gè)名字。例如:ERRORDATA80H6. 名字XDATA直接字節(jié)地址;給8位外部RAM起個(gè)名字,名字規(guī)定同DATA偽指令。例如:IO_PORTXDATA0CF04H7. 名字BIT位指令;給一可位尋址的位單元起個(gè)名字,規(guī)定同DATA偽指令。例如:SWTBIT30H8. 標(biāo)號:END;指出源程序到此結(jié)束,匯編對其后的程序語句不予理睬。源程序只在主程序最后使用一個(gè)END。指令集(111條)助記符說明字節(jié)周期代碼1.數(shù)據(jù)傳送指令(3

7、0條)MOVA,Rn寄存器送A11E8EFMOVA,data直接字節(jié)送A21E5MOVA,Ri間接RAM送A11E6-E7MOVA,#data立接數(shù)送A2174MOVRn,AA送寄存器11F8-FFMOVRn,data直接數(shù)送寄存器22A8-AFMOVRn,#data立即數(shù)送寄存器21787FMOVdata,AA送直接字節(jié)21F5MOVdata,Rn奇存器送直接字節(jié)21888FMOVdata,data直接字節(jié)送直接字節(jié)3285MOVdata,Ri間接Rn送直接字節(jié)2286;87MOVdata,#data立即數(shù)送直接字節(jié)3275MOVRi,AA送間接Rn12F6;F7MOVRi,data直接字節(jié)

8、送間接Rn11A6;A7MOVRi,#data立即數(shù)送間接Rn2276;77MOVDPTR,#data1616位常數(shù)送數(shù)據(jù)指針3190MOVC,bit直接位送進(jìn)位位21A2MOVbit,C進(jìn)位位送直接位2292MOVCA,A+DPTRA+DPTR尋址程序存貯字節(jié)送A3293MOVCA,A+PCA+PC尋址程序存貯字節(jié)送A1283MOVXA,Ri外部數(shù)據(jù)送A(8位地址)12E2;E3MOVXA,DPTR外部數(shù)據(jù)送A(16位地址)12E0MOVXRi,AA送外部數(shù)據(jù)(8位地址)12F2;F3MOVXDPTR,AA送外部數(shù)據(jù)(16位地址)12F0PUSHdata直接字節(jié)進(jìn)棧道,SP加122C0POP

9、data直接字節(jié)出棧,SP減122D0XCHA,Rn寄存器與A交換11C8CFXCHA,data直接字節(jié)與A父換21C5XCHA,Ri間接Rn與A交換11C6;C7XCHDA,Ri間接Rn與A低半字節(jié)父換11D6;D72邏輯運(yùn)算指令(35條)ANLA,Rn寄存器與到A11585FANLA,data直接字節(jié)與到A2155ANLA,Ri間接RAM與到A1156;57ANLA,#data立即數(shù)與到A2154ANLdata,AA與到直接字節(jié)2152ANLdata,#data立即數(shù)與到直接字節(jié)3253ANLC,bit直接位與到進(jìn)位位2282ANLC,/bit直接位的反碼與到進(jìn)位位22B0ORLA,Rn寄

10、存器或到A11484FORLA,data直接字節(jié)或到A2145ORLA,Ri間接RAM或到A1146;47ORLA,#data立即數(shù)或到A2144ORLdata,AA或到直接字節(jié)2142ORLdata,#data立即數(shù)或到直接字節(jié)3243ORLC,bit直接位或到進(jìn)位位2272ORLC,/bit直接位的反碼或到進(jìn)位位22A0XRLA,Rn寄存器異或到A11686FXRLA,data直接字節(jié)異或到A2165XRLA,Ri間接RAM異或到A1166;67XRLA,#data立即數(shù)異或到A2164XRLdata,AA異或到直接字節(jié)2162XRLdata,#data立即數(shù)異或到直接字節(jié)3263SETB

11、C進(jìn)位位置111D3SETBbit直接位置121D2CLRAA清011E4CLRC進(jìn)位位清011C3CLRbit直接位清021C2CPLAA求反碼11F4CPLC進(jìn)位位取反11B3CPLbit直接位取反21B2RLAA循環(huán)左移一位1123RLCAA帶進(jìn)位左移一位1133RRAA右移一位1103RRCAA帶進(jìn)位右移一位1113SWAPAA半字節(jié)父換11C43算術(shù)運(yùn)算指令(24條)ADDA,Rn寄存器加到A11282FADDA,data直接字節(jié)加到A2125ADDA,Ri間接RAM加到A1126;27ADDA,#data立即數(shù)加到A2124ADDCA,Rn寄存器帶進(jìn)位加到A11383FADDCA,

12、data直接字節(jié)帶進(jìn)位加到A2135ADDCA,Ri間接RAM帶進(jìn)位加到A1136;37ADDCA,#data立即數(shù)帶進(jìn)位加到A2134SUBBA,Rn從A中減去寄存器和進(jìn)位11989FSUBBA,data從A中減去直接字節(jié)和進(jìn)位2195SUBBA,Ri從A中減去間接RAM和進(jìn)位1196;97SUBBA,#data從A中減去立即數(shù)和進(jìn)位2194INCAA加11104INCRn寄存器加111080FINCdata直接字節(jié)加12105-6-INCRi間接RAM加11106;07INCDPTR數(shù)據(jù)指針加112A3DECAA減11114DECRn寄存器減111181FDECdata直接字節(jié)減12115

13、DECRi間接RAM減11116;17MULABA乘B14A4DIVABA被B除1484DAAA十進(jìn)制調(diào)整11D44轉(zhuǎn)移指令(22條)AJMPaddr11絕對轉(zhuǎn)移22*1LJMPaddr16長轉(zhuǎn)移3202SJMPrel短轉(zhuǎn)移2280JMPA+DPTR相對于DPTR間接轉(zhuǎn)移1273JZrel若A=0則轉(zhuǎn)移2260JNZrel若AH0則轉(zhuǎn)移2270JCrel若C=1則轉(zhuǎn)移2240JNCrel若CH1則轉(zhuǎn)移2250JBbit,rel若直接位=1則轉(zhuǎn)移3220JNBbit,rel若直接位=0則轉(zhuǎn)移3230JBCbit,rel若直接位=1則轉(zhuǎn)移且清除3210CJNEA,data,rel直接數(shù)與A比較,不

14、等轉(zhuǎn)移32B5CJNEA,#data,rel立即數(shù)與A比較,不等轉(zhuǎn)移32B4CJNERi,#data,rel立即數(shù)與間接RAM比較,不等轉(zhuǎn)移32B6;B7CJNERn,#data,rel立即數(shù)與寄存器比較不等轉(zhuǎn)移32B8BFDJNZRn,rel寄存器減1不為0轉(zhuǎn)移22D8DFDJNZdata,rel直接字節(jié)減1不為0轉(zhuǎn)移32D5ACALLaddr11絕對子程序調(diào)用22*1LCALLaddr16子程序調(diào)用3212RET子程序調(diào)用返回1222RETI中斷程序調(diào)用返回1232NOP空操作1100六. 記憶方法MCS51使用匯編語言指令,它共有44個(gè)操作碼助記符,33種功能,其操作數(shù)有廿data、di

15、rect、Rn、Ri等。這里先介紹指令助記符及其相關(guān)符號的記憶方法。一、助記符號的記憶方法1表格列舉法把44個(gè)指令助記符按功能分為五類,每類列表記憶。此處從略,請讀者自己總結(jié)。2英文還原法單片機(jī)的操作碼助記符是該指令功能的英文縮寫,將縮寫還原成英語原文,再對照漢語有助于理解其助記符含義,從而加強(qiáng)記憶。例如:增量INCIncremect減量DNCDecrement短轉(zhuǎn)移SJMPShortjump長轉(zhuǎn)移LJMPLongjump比較轉(zhuǎn)移CJNEComparejumpnotequality絕對轉(zhuǎn)移AJMPAbsolutejump空操作NOPNooperation交換XCHExchange加法ADDAd

16、dition乘法MULMultiplication除法DIVDivision左環(huán)移RLRotateleft進(jìn)位左環(huán)移RLCRotateleftcarry右環(huán)移RRRotateright進(jìn)位右環(huán)移RRCRotaterightcarry3功能模塊記憶法單片機(jī)的44個(gè)指令助記符,按所屬指令功能可分為五大類,每類又可以按功能相似原則為23組。這樣,化整為零,各個(gè)擊破,實(shí)現(xiàn)快速記憶。1)數(shù)據(jù)傳送組。2)加減運(yùn)算組MOV內(nèi)部數(shù)據(jù)傳送ADD加法MOVC程序存儲器傳送ADDC帶進(jìn)位加法MOVX外部數(shù)據(jù)傳送SUBB帶進(jìn)位減法3)邏輯運(yùn)算組。4)子程序調(diào)用組。ANL邏輯與LCALL長調(diào)用ORL邏輯或ALALL絕對

17、調(diào)用XRL邏輯異或RET子程序返回二、指令的記憶方法1指令操作數(shù)的有關(guān)符號MCS51的尋址方式共有六種:立即數(shù)尋址、直接尋址、寄存器尋址、寄存器間址、變址尋址、相對尋址。我們必須掌握其表示的方法。1) 立即數(shù)與直接地址。ata表示八位立即數(shù),#data16表示是十六位立即數(shù),data或direct表示直接地址。2) Rn(n=07)、A、B、CY、DPTR寄存器尋址變量。3) R0、R1、DPTR、SP表示寄存器間址變量。4) DPTR+A、PC+A表示變址尋址的變量。5) PC+rel(相對量)表示相對尋址變量。記住指令的助記符,掌握不同尋址方式的指令操作數(shù)的表示方法,為我們記憶匯編指令打下

18、了基礎(chǔ)。MCS51指令雖多,但按功能可分為五類,其中數(shù)據(jù)傳送類28條,算術(shù)運(yùn)算類24條,邏輯操作類25條,控制轉(zhuǎn)移類17條,布爾位操作類17條。在每類指令里,根據(jù)其功能,抓住其源、目的操作數(shù)的不同組合,再輔之以下方法,是完全能記住的。我們約定,可能的目的操作數(shù)按(廿data/direct/A/Rn/Ri)順序表示。對于MOV指令,其目的操作數(shù)按A、Rn、direct、Ri的順序書寫,則可以記住MOV的15條指令。例如以累加器A為目的操作數(shù),可寫出如下4條指令。MOVA,#data/direct/A/Rn/Ri以此類推,寫出其它指令。MOVRn,#data/direct/AMOVdirect,#data/direct/A/Rn/RiMOVRi,#data/direct/A2指令圖示記憶法圖示記憶法是把操作功能相同或相似、但其操作數(shù)不同的指令,用圖形和箭頭將目的、源操作數(shù)的關(guān)系表示出來的一種記憶方法。例如:由助記符MOV、MOVX、MOVC組成的送數(shù)組指令,可以用圖1、2幫助記憶。由助記符CJNE形成的四條指令,也可以用圖示法表示,如圖3。CJNEA,廿data,relCJNEA,direct,relCJNERn,廿data,relCJNERi,廿data,rel另外,對于由(ANL、ORL、ARL)形成的18條邏輯操作指令,有關(guān)A的四條環(huán)移指令,也可以用圖示法表示,請讀者自行畫

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論