




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1.2 MCS-51單片機指令系統MCS-51單片機指令系統特點(1)指令執行時間快。)指令執行時間快。(2)指令短,約有一半的指令為單字節指令。)指令短,約有一半的指令為單字節指令。(3)用一條指令即可實現)用一條指令即可實現2個一字節的相乘或個一字節的相乘或相除。相除。(4)具有豐富的位操作指令。)具有豐富的位操作指令。 (5)可直接用傳送指令實現端口的輸入輸出操)可直接用傳送指令實現端口的輸入輸出操作。作。1.2.1 MCS-51指令系統的分類、格式及一般說明1.2.1.1 指令分類指令分類數據傳遞與交換數據傳遞與交換算術運算算術運算邏輯運算邏輯運算程序轉移程序轉移布爾處理操作布爾處理操
2、作(位操作指令位操作指令)1.2.1.2 指令格式指令格式在在MCS-51指令中,一般指令主要由操作碼、操指令中,一般指令主要由操作碼、操作數組成。作數組成。(1)操作碼指明執行什么性質和類型的操作。)操作碼指明執行什么性質和類型的操作。例如,數的傳送、加法、減法等。例如,數的傳送、加法、減法等。(2)操作數指明操作的數本身或者是操作數所)操作數指明操作的數本身或者是操作數所在的地址。在的地址。(3)指定操作結果存放的地址。)指定操作結果存放的地址。1.2.1.3 指令描述符號介紹Rn當前選中的寄存器區中的當前選中的寄存器區中的8個工作寄存器個工作寄存器R0R7(n=07)。)。Ri當前選中的
3、寄存器區中的當前選中的寄存器區中的2個工作寄存器個工作寄存器R0、R1(i=0,1)。)。direct8位的內部數據存儲器單元中的地址。位的內部數據存儲器單元中的地址。#data包含在指令中的包含在指令中的8位常數。位常數。#data16包含在指令中的包含在指令中的16位常數。位常數。addr1616位目的地址。位目的地址。addr1111位目的地址。位目的地址。rel8位帶符號的偏移字節,簡稱偏移量。位帶符號的偏移字節,簡稱偏移量。DPTR數據指針,可用作數據指針,可用作16位地址寄存器位地址寄存器指令描述符號介紹bit內部內部RAM或專用寄存器中的直接尋址位。或專用寄存器中的直接尋址位。A
4、累加器。累加器。B專用寄存器,用于乘法和除法指令中。專用寄存器,用于乘法和除法指令中。C進位標志或進位位,或布爾處理機中的累加進位標志或進位位,或布爾處理機中的累加器。器。間址寄存器或基址寄存器的前綴,如間址寄存器或基址寄存器的前綴,如Ri,DPTR。/ 位操作數的前綴,表示對該位操作數取反,位操作數的前綴,表示對該位操作數取反,如如/bit。片內片內RAM的直接地址或寄存器。的直接地址或寄存器。()由由尋址的單元中的內容。尋址的單元中的內容。 箭頭左邊的內容被箭頭右邊的內容所代替箭頭左邊的內容被箭頭右邊的內容所代替1.2.2 分類指令1.2.2.1 數據傳送類指令數據傳送類指令數據傳送類指令
5、共數據傳送類指令共28條,是將源操作數送到目的操條,是將源操作數送到目的操作數。指令執行后,源操作數不變,目的操作數作數。指令執行后,源操作數不變,目的操作數被源操作數取代。數據傳送類指令用到的助記符被源操作數取代。數據傳送類指令用到的助記符有有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP8種。種。源操作數可采用寄存器、寄存器間接、直接、立即、源操作數可采用寄存器、寄存器間接、直接、立即、變址變址5種尋址方式尋址,目的操作數可以采用寄種尋址方式尋址,目的操作數可以采用寄存器、寄存器間接、直接尋址存器、寄存器間接、直接尋址3種尋址方式。種尋址方式。1以A為目的操作數(
6、機器碼)MOV A,Rn;A Rn,(,(A)=(Rn)MOV A,direct;A(direct), (A)=(direct)MOV A,#data;A #data, (A)= #dataMOV A,Ri (重點重點);A(Ri), (A)=((Ri))以以Ri中的內容為地址,取該地址的內容送給中的內容為地址,取該地址的內容送給A。注意:是注意:是from、copy操作操作,2以Rn為目的操作數MOV Rn,A;Rn ( A)MOV Rn,direct;Rn (direct)MOV Rn,#data;Rn #data如如 MOV R6,#45H 注意:注意: Rn為為R0R73以直接地址為目
7、的操作數MOV direct ,A; direct ( A)MOV direct , Ri ; direct (Ri) MOV direct ,#data; direct #dataMOV direct , Rn ; direct ( Rn )MOV direct1 , direct2; direct 1 (direct2)如:如:MOV 30H,56H4以間接地址為目的操作數MOV Ri,A;(;(Ri) (A)MOV Ri,direct;(;(Ri) (direct)MOV Ri,#data;(;(Ri) #data以以Ri的內容為地址,把的內容為地址,把#data的送入該單元中。的送入該
8、單元中。例如:設(例如:設(30H)=6FH,R1=40H,(40H)=26H執執行行MOV R1,30H后,后,30H單元中數據取出送入單元中數據取出送入R1間接尋址的間接尋址的40H單元,單元,(40H)=6FH,而不是而不是26H=6FH.5以DPTR為目的操作數MOV DPTR,#data16 ;DPTR #data16例如執行例如執行 MOV DPTR,#2000H 后,(后,(DPTR)= 2000H。注意:其他注意:其他 MOV 指令均為指令均為1字節數。字節數。直接地址直接地址direct累加器累加器A直接地址直接地址direct間接地址間接地址Ri寄存器寄存器Rn立即數立即數
9、#data寄存器寄存器DPTR6訪問外部數據RAMMOVX A,DPTR ;A (DPTR)MOVX DPTR,A ;(;( DPTR ) AMOVX A,Ri;A (P2Ri)MOVX Ri,A;(;(P2Ri) A特點:雙向傳送,必須由特點:雙向傳送,必須由A傳送傳送,外地址由外地址由DPTR及及P2Ri確定確定把外部把外部ram單元單元3000h的內容寫入的內容寫入A中中(1) MOV DPTR,#3000H MOVX A, DPTR(2) MOV P2,#30H MOV R1,#00H MOVX A,R1(3) MOVX A,3000H (錯錯)7讀程序存儲器MOVC A,A+DPTR
10、;A (A)+(DPTR)MOVC A,A+PC;A (A)+(PC)注意:只有對注意:只有對ROM的讀(無寫)指令,的讀(無寫)指令, PC為當前為當前指令所在指令所在ROM空間的地址空間的地址+1例如已知例如已知A=30H,DPTR=3000H, 程序存儲器單程序存儲器單元(元(3030H)=50H,執行,執行MOVC A, A+DPTR后后例如例如 MOVC A,A+PC 存在存在ROM空間空間1203H, (A)=30H, (A)+(PC)= 1233H, (A)=8數據交換字節交換字節交換XCH A,Rn;A RnXCH A ,direct ;A(direct)XCH A,Ri;A(
11、Ri)如:如:XCH A ,30H;設(;設(A)=98H,(30H)=07H 結果結果 (A)=,(30H)=半字節交換半字節交換(低低4位互換位互換)XCHD A,Ri ;A03(Ri)03SWAP A;A03A47如如:設(設(A)=98H;SWAP A ;(A)=89H9堆棧操作(難點)所謂堆棧是在片內所謂堆棧是在片內RAM中按中按“先進后出,后進先出先進后出,后進先出”原則設置的專用存儲區。數據的進棧出棧由指針原則設置的專用存儲區。數據的進棧出棧由指針SP統一管理。隊列:先進先出的存儲結構管理。統一管理。隊列:先進先出的存儲結構管理。堆棧的操作有如下兩條專用指令:堆棧的操作有如下兩條
12、專用指令: PUSH direct;SP(SP)+1,(SP)(direct) POPdirect;direct((SP)),SP (SP)-1堆棧指令主要用于子程序和數據保護,保證程序的堆棧指令主要用于子程序和數據保護,保證程序的正常執行正常執行。PUSH進棧指令執行過程片內片內RAM30H11H10HSP片內片內RAM50H40H11H10HSP40H30H片內片內RAM50H40H11H10H50HSP30H片內片內RAM40H11H10H34HSP30H34H34H執 行執 行前前執 行執 行前前執行前執行前PUSH指令后執行執行POP指令后【例【例1】 將片內將片內RAM 30H單元
13、與單元與40H單元中的內容單元中的內容互換。互換。方法方法1(直接地址傳送法):(直接地址傳送法): MOV31H,30H MOV30H,40H MOV40H,31H SJMP$方法方法2(間接地址傳送法):(間接地址傳送法): MOVR0,#40H MOVR1,#30H MOVA,R0 MOVB,R1 MOVR1,A MOVR0,B SJMP$方法方法3(字節交換傳送法):(字節交換傳送法): MOVA,30H XCHA,40H MOV30H,A SJMP$方法方法4(堆棧傳送法):(堆棧傳送法): PUSH30H PUSH40H POP30H POP40H SJMP$1.2.2.2 算術運
14、算類指令1加法指令(對加法指令(對PSW的影響)的影響)ADD A,Rn;A (A) +( Rn)ADD A,direct ;A (A) +(direct)ADD A,Ri;A (A) +((Ri))ADD A,#data ;A (A) + #data注意:加法操作在注意:加法操作在A中完成。并對中完成。并對PSW中的中的CY,AC,OV,P產生影響。產生影響。如:如: ADD A,#28H;設設(A)=B9H則結果則結果(A)=E1H; CY=0,AC=1,OV=1,P=02帶進位加指令帶進位加指令ADDC AADDC A,RnRn;A (A) + (RnA (A) + (Rn) + (C)
15、 + (C)ADDC AADDC A,directdirect;A (A) +A (A) +(directdirect)+ + (C)(C)ADDC AADDC A,RiRi;A (A) +(Ri)+(CA (A) +(Ri)+(C) )ADDC AADDC A,#data#data;A (A) +data +(C)A (A) +data +(C)C C為來自為來自PSWPSW狀態寄存器中的進位位狀態寄存器中的進位位C,C,是運算前的是運算前的C C ,運算后的,運算后的C C不參加運算不參加運算 。例如,設例如,設(A)=20H(A)=20H,(R0)=21H(R0)=21H,(C)=1(C
16、)=1,執行指,執行指令令 ADDCADDC,R0R0后,后,A=42HA=42H。 3帶借位減指令SUBB A,Rn ;A (A) ( Rn) ( C)SUBB A,direct;A (A) -(direct)- (C)SUBB A,Ri;A (A) ((Ri))-( C)SUBB A,#data;A (A) - #data ( C) 注意:單片機沒有不帶借位的減法。可以先使注意:單片機沒有不帶借位的減法。可以先使c=0后再使用后再使用SUBB指令指令例如,設例如,設A=39H,R0=20H,(,(20H)=32H,C=1,4乘法指令MUL AB ;BA (A)(B)A和和B中各存放一個中各
17、存放一個8位無符號數,指令執行后,位無符號數,指令執行后,16位乘積的高位乘積的高8位在位在B中,低中,低8位存位存A中。中。例如,例如,A=30H,B=60H,執行,執行 MUL AB 后,后,A=00H,B=12H注意注意MUL對對PSW的影響的影響.5除法指令 DIV AB;(A)(B) AB,商在商在A中,余中,余數在數在B中中 A和和B中各存放一個中各存放一個8位無符號數,位無符號數,A放被除數,放被除數,B放除數。指令執行后,放除數。指令執行后,A中存放商,中存放商,B中存中存入余數。若入余數。若B=00H,則指令執行后,則指令執行后OV=1,A與與B不變。不變。 例如,例如,A=
18、30H,B=07H,執行,執行 DIV AB 后,后,A=06H,B=06H。6加1指令INC A;A (A) + 1INC Rn;Rn (Rn) + 1INC direct;direct ((direct))+ 1INC Ri ;(;(Ri)((Ri))+ 1INC DPTR;DPTR (DPTR )+ 1例如,(例如,(30H)=22H,執行,執行 INC 30H 后,后,(30H)=23H。7減1指令DEC A;A (A) - 1DEC Rn;Rn (Rn) - 1DEC direct;direct (direct)- 1DEC Ri;(;(Ri)((Ri))- 1例如,例如,R0=30
19、H,(,(30H)=22H,執行,執行 DEC R0 后,(后,(30H)=21H。注意:沒有注意:沒有 DEC DPTR的指令。可用的指令。可用 DEC DPL指令指令8十進制調整指令DA A ;把;把A中按二進制相加的結果調整成按中按二進制相加的結果調整成按BCD碼相加的結果碼相加的結果例如,例如,A=65BCD,B=78BCD,C=0,執行下列語,執行下列語句句ADD A,B; ADD 后,后,DAA前不能使用對前不能使用對C或或AC有影響的指令。有影響的指令。DA A;A=43 BCD,C=1。DA操作核心:(操作核心:(1)對低半字節對低半字節09H OR AC=1的的數進行數進行+
20、06H的操作。的操作。 (2)對高字節)對高字節90H OR C=1的數進行的數進行+60H的操作。的操作。【例【例2】 試把存放在試把存放在R1R2和和R3R4中的兩個中的兩個16位數相加,位數相加,結果存于結果存于R5R6中。解:參考程序如下:中。解:參考程序如下: MOVA,R2;取第一個數的低;取第一個數的低8位位 ADD A,R4;兩數的低;兩數的低8位相加位相加 MOVR6,A;保存和的低;保存和的低8位位 MOVA,R1;取第一個數的高;取第一個數的高8位位 ADDCA,R3;兩數的高;兩數的高8位相加,并把低位相加,并把低8位位相加時的進位位加進來相加時的進位位加進來 MOVR
21、5,A;把相加的高;把相加的高8位存入位存入R5寄存器中寄存器中 SJMP $ 1.2.2.3 邏輯運算與循環類指令1“與與”操作指令操作指令ANL A,#data ;(A)=(A) #dataANL A, direct ;(A)=(A) ( direct)ANL A,Rn ;(A)=(A) (Rn)ANL A, Ri ;(A)=(A) (Ri)ANL direct , #data ;(direct )=(direct ) #dataANL direct 1, direct2;(direct 1 )=(direct 1 ) (direct 2 )2“或”操作指令ORL A,#data ;(A)
22、=(A) #dataORL A, direct ;(A)=(A) ( direct)ORL A,Rn ;(A)=(A) (Rn)ORL A, Ri ;(A)=(A) (Ri)ORL direct , #data ;(direct )=(direct ) #dataORL direct 1, direct2;(direct 1 )=(direct 1 ) (direct 2 )3“異或”操作指令XRL A,#data ;(A)=(A) #dataXRL A, direct ;(A)=(A) ( direct)XRL A,Rn ;(A)=(A) (Rn)XRL A, Ri ;(A)=(A) (Ri
23、)XRL direct , #data ;(direct )=(direct ) #dataXRL direct 1, direct2;(direct 1 )=(direct 1 ) (direct 2 )4求反與清除指令CLR A ; (A)=0CPL A; (A)=(/A)5循環指令RR A ;右移操作;右移操作RL A ;左移操作;左移操作RRC A;帶進位的右移操作;帶進位的右移操作RLC A;帶進位的左移操作;帶進位的左移操作注意:該指令常用于乘、除注意:該指令常用于乘、除2的的n次冪的操作。次冪的操作。并且只能在并且只能在A中進行。中進行。例:將例:將30H的內容的內容*4放入放入
24、31H和和32H中,中, 31H為為高位。高位。1.2.2.4 位操作指令1位數據傳送指令位數據傳送指令MOVC,bit;C(bit)MOV bit,C;bit(C)2位狀態修改指令位狀態修改指令CLR C;C0CLR bit;bit0CPL C;CCPL bit;bit(bit)SETBC;C1SETBbit;bit13位邏輯運算指令位邏輯運算指令ANL C,bit;C(C)(bit)ANL C,/bit;C(C)(bit)ORL C,bit;C(C)(bit)ORL C,/bit;C(C)(bit) 1.2.2.5 程序轉移類指令1無條件轉移指令無條件轉移指令絕對(短)轉移指令絕對(短)轉
25、移指令AJMPaddr11;PC100 addr11 長轉移指令長轉移指令LJMPaddr16;PC addr16短(相對)轉移指令短(相對)轉移指令SJMPrel;PC PC + 2 + rel 間接轉移指令間接轉移指令JMP A+DPTR ;PC A + DPTR無條件轉移指令區別地址范圍地址范圍地址空間地址空間地址計算地址計算相對偏移量相對偏移量rel的求法的求法2條件轉移指令累加器為零(非零)轉移指令累加器為零(非零)轉移指令JZrel; 若若(A)=0,則轉移,則轉移;PC(PC)+2+rel;否則程序順序執行否則程序順序執行JNZ rel; 若若(A)0,則轉移則轉移;PC(PC)+2+rel;否則程序順序執;否則程序順序執減1非零轉移指令DJNZ Rn, rel; DJNZ direct,rel;(Rn)=(Rn)-1;if (Rn)0 轉移;否則轉移;否則 順序執行。順序執行。兩數不等轉移指令CJNE A,#data,relCJNE A,direct,relCJNE Rn,#data,relCJNE Ri,#data,rel三分支指令三分支指令 if A=data c=0;否則否則c=1; if A=data ,則順序執行,反之則轉移。,則
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 前沿動態營養師考試試題及答案
- 經典演出經紀人考試試題及答案
- 逼近考試演出經紀人試題及答案分析
- 現代家政學考題及答案
- 物理綜合高考題及答案
- 《第七天》讀后感
- 逃家的小兔測試題及答案
- 江西外語外貿職業學院《勞動通論》2023-2024學年第二學期期末試卷
- 武昌理工學院《統計與分析軟件SPSS的應用》2023-2024學年第二學期期末試卷
- 2025屆河北省中原名校高三下學期一練前第二次強化訓練歷史試題含解析
- 曾奇峰精神分析網絡課程學習筆記第1-6講
- 《基礎和聲學》試習題庫(6套答案)
- 馬克思主義政治經濟學課程講義
- 無人機培訓教材ppt
- SolidWorks、CAD三維建模練習習題圖
- HONEYWELLDCS操作手冊
- 方正飛騰使用教程詳解
- 初篩陽性確診流程
- 資格考試合格人員登記表下載- 資格考試合格人員登記表
- 新人教版六年級下冊數學全冊課時練
- 柔道技術與欣賞
評論
0/150
提交評論