




已閱讀5頁,還剩47頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
教學目的:熟悉80C51系列單片機的尋址方式及每一種尋址方式對應的尋址空間;掌握每一條指令功能。教學重點:1.80C51系列單片機尋址方式所對應的尋址空間;2.80C51系列單片機指令功能。教學難點:1.數據傳送類指令中對不同的存儲空間應采用的傳送指令及尋址方式。2.間接尋址方式,第3章指令系統,31指令系統簡介,1.80C51系列指令系統概述指令是規定計算機進行某種操作的命令。計算機能夠執行的各種指令的集合就稱為指令系統。根據代碼長度,80C51單片機的指令有單字節、雙字節和三字節指令。按照指令執行速度又可分為單周期、雙周期和四周期指令。2.匯編語言指令格式80C51匯編語言指令格式如下:操作碼操作數1,操作數2,操作數3;注釋操作碼:是由助記符表示的字符串,它規定了指令的操作功能。操作數:如果指令中有操作數,則它是指參加操作的數據或數據的地址。例如一條傳送指令的書寫格式為:MOVA,45H;(45H)A它表示將45H存儲單元的內容送到累加器A中。,3.2尋址方式指令系統的尋址方式規定了操作數的訪問方式。80C51指令系統有寄存器尋址、直接尋址、間接尋址、立即尋址、基址變址尋址和相對尋址等七種尋址方式。3.2.1匯編指令中的符號約定Rn(n07)-當前選中的8個工作寄存器R0R7,它在片內數據存儲器中的地址由PSW中RSl、RS0確定;Ri(i0或1)-當前選中的用于間接尋址的工作寄存器R0、R1,它在片內數據存儲器中的地址由RS0、RS1確定;direct-8位直接地址,可以是片內RAM單元地址或SFR地址;data8-8位常數;datal6-16位常數;,addrl6-16位目的地址,尋址空間64K字節程序存儲器;addr11-11位目的地址;rel-補碼形式的8位地址偏移量,用于相對轉移指令中bit-位地址,片內RAM或SFR的可尋址位的位地址;-間接尋址寄存器的前綴;-位操作數的取反操作前綴。以下符號僅出現在指令注釋或功能說明中。X-片內RAM的直接地址(包含位地址)或寄存器。(X)-表示X中的內容。(X)-在間接尋址方式中,表示由間址寄存器X指出的地址單元中的內容。-指令操作流程,將箭頭左邊內容送入箭頭右邊的單元內。,1.立即數尋址方式立即數(指令中的常數)直接參與指令操作。立即數前必須加“#”標記。指令中的立即數有8位立即數#data8和16位立即數#data16。例1MOVA,#3AH;立即數3AH送累加器A圖3-1MOVA,#3AH指令執行示意圖,2.直接尋址方式,在這種尋址方式中,操作數項給出的是參加運算的操作數的地址。可尋址空間有特殊功能寄存器、內部數據存儲器以及位地址。其中特殊功能寄存器和位地址空間只能用直接尋址方式來訪問。例1MOVA,3AH;把A的內容送3AH單元。例2MOVP1,#10H;將立即數10H送P1口。注意:例2中的目的操作數P1是直接尋址方式,這里用符號P1代替了直接地址90H。,圖3-3MOVA,3AH指令執行示意圖,3.寄存器尋址方式寄存器尋址是對選定的工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR和進位CY中的數進行操作。例1.MOVA,R2;將當前工作寄存器的內容送累加器A。(指令代碼為1字節EA注意R2在片內RAM的位置,它由RS0、RS1決定。如PSW中RS1、RS0的值分別為1、0,則現在的R2屬于第二組工作寄存器,那么它的地址為12H。現已知12H中存放著數值4AH,則執行該指令后,4AH就被送到A累加器中。,圖3-4MOVA,R2指令執行示意圖,4.寄存器間接尋址方式,在這種尋址方式中,操作數所指定的寄存器中存放的不是操作數本身,而是操作數的地址。這種尋址方式用于訪問片內數據存儲器或片外數據存儲器。間接尋址寄存器:Ri(8位地址指針)和DPTR(16位地址指針),間接尋址寄存器前加表示間址操作。例1MOVR0,#50HMOVA,R0例2MOVDPTR,#2760HMOVXDPTR,A,圖3-5MOVA,R0指令執行示意圖,5.變址尋址(基址寄存器變址寄存器的間接尋址)變址尋址方式中使用DPTR或PC作基址寄存器,累加器A作變址寄存器。采用變址尋址的指令只有三條:MOVCA,A+DPTRMOVCA,A+PCJMPA+DPTR前兩條用于程序存儲器的查表操作,后一條用于程序的分支散轉。,例1現假設MOVCA,ADPTR指令存放在70H單元,ACC中原存放值為E0H,DPTR中值為2000H,則ADPTR形成的地址為20E0H。20E0H單元中內容為47H,則執行該指令后,ACC中原E0H被47H代替。該指令執行過程示于圖3-7。,6.相對尋址方式相對尋址是將程序轉移到相對地址的轉移指令。是將程序計數器PC中的當前內容(轉移指令的下一條指令地址)與轉移指令第二字節所給出的偏移量相加,其結果作為跳轉指令的轉移地址。偏移量為帶符號的數,其范圍為+127128。程序設計中,相對地址可以用指令標號或直接地址偏移量數值,但要注意,相對轉移地址的偏移量不得超過+127128。,例1JC03H,該指令表示若進位C0,則程序順序執行,PCPC+2;若進位C1,則以PC中的當前內容為基地址,加上偏移量03H后所得到的結果為該轉移指令的目的地址。,圖3-8JC03H指令執行示意圖,7.位尋址方式位尋址空間:片內RAM的位尋址區(20H2FH單元的128位)和SFR中的可位尋址的位單元。位累加器:在進行位操作時,借助于進位位C作為操作累加器。位地址與字節直接尋址中的字節地址形式完全一樣,主要由操作碼來區分,使用時需予以注意。例1SETB3DH;將片內RAM位地址3DH即27H單元的第5位置“1”。例2ANLC,3DH;將3DH的位狀態與進位位C相與,結果保留在C中。,操作數尋址方式與尋址空間,33指令系統分類介紹,3.3.1數據傳送類指令(共24條)1內部RAM數據傳送指令下面分類介紹:(1)累加器為目的操作數的指令MOVA,Rn;(Rn)AMOVA,direct;(direct)AMOVA,Ri;(Ri)AMOVA,data;dataA(2)以寄存器Rn為目的操作數的指令MOVRn,A;(A)RnMOVRn,direct;(direct)RnMOVRn,data;dataRn,(3)以直接地址為目的操作數的指令MOVdirect,A;(A)(direct)MOVdirect,Rn;(Rn)(direct)MOVdirect,direct;(direct)(direct)MOVdirect,Ri;(Ri)(direct)MOVdirect,data;data(direct)(4)以間接地址為目的操作數的指令MOVRi,A;(A)(Ri)MOVRi,direct;(direct)(Ri)MOVRi,data;data(Ri)(5)16位數據傳送指令MOVDPTR,data16;dataHDPH,datalDPL,2外部數據傳送指令MOVXDPTR,AMOVXA,DPTRMOVXRi,AMOVXA,Ri由于在80C51指令系統中,沒有專門對外設的輸入/輸出指令,因此80C51單片機只能用這四條指令與外部設備交換數據。后2條指令使用不方便,很少使用.,例5把程序存儲器ROM中起始地址為1000H,長度為20H的數據塊傳送到以1A00H為起始地址的外部RAM中,要求使用兩個DPTR數據指針來簡化程序,注意輔助寄存器AUXR1的地址為A2H。,解:根據題意可編程序如下:MOVDPTR,#1A00H;1A00H作為外部RAM首地址ORLA2H,#1;選擇DPTR1MOVDPTR,#1000H;1000H作為程序存儲器首地址MOVR1,#20H;數據塊長度R1LP2:MOVCA,A+DPTR;取程序存儲器中的數據INCDPTR;DPTR1加1ANLA2H,#0FEH;恢復RAM的指針MOVXDPTR,A;數據送到外部RAM中INCDPTR;DPTR0加1ORLA2H,#01;恢復ROM的指針DJNZR1,LP2;數據沒有傳送完繼續,3查表指令在80C5l指令系統中,有2條極有用的查表指令,其數據表格放在程序存儲器中。MOVCA,APC;(PC)lPC,(A)(PC)AMOVCA,ADPTR;((A)(DPTR)A4堆棧操作指令PUSHdirect;(SP)1SP,(direct)(SP)POPdirect;(SP)(direct),(SP)-1SP,例6執行如下程序300H:MOVA,0DH;0DHA302H:MOVCA,APC;(0DH303H)A303H:MOVR0,A;(A)R0數據表格:310H:07H311H:04H312H:0AH結果:A07H,R007H,PC304H例7執行如下程序,104H:MOVA,12H;12HA106H:MOVDPTR,2000H;2000HDPTR109H:MOVCA,A+DPTR;(12H+2000H)A數據表格:2010H:22H,34H,06H,48H結果:A06H,PC100AH,例8已知片內RAM60H單元中存放數值為86H,設堆棧指針為30H,把此數值壓入堆棧,然后再彈出到50H單元中。,根據題意編寫指令如下:MOVSP,#30H;30HSPPUSH60H;(SP)+1SP,(60H)(31H)POP50H;(31H)(50H),(SP)-1SP程序執行過程示于圖3-11。,5交換指令XCHA,Rn;ARnXCHA,direct;A(direct)XCHA,Ri;A(Ri)XCHDA,Ri;A.3A.0(Ri.3Ri.0)SWAPA;A.3A.0A.7A.4這組指令的前三條為全字節交換指令。后兩條為半字節交換指令。圖3-13XCHDA,R0指令執行示意圖,傳送指令使用注意事項:片內存儲器可以以直接尋址的方式將數據從一個單元送到另一個單元;片內存儲器的任一單元可以與工作寄存器或間址寄存器指定的地址單元間相互傳送數據,但是,工作寄存器之間不能直接傳送數據,也不能通過間址寄存器與片內存儲器傳送數據;立即數可以送到以寄存器間接尋址、直接尋址的方式的片內存儲器的任一單元或工作寄存器;堆棧操作只能采用直接尋址方式。傳送類指令一般不影響標志位,只有堆棧操作可以直接修改程序狀態字PSW。另外,傳送目的操作數為ACC的指令將影響奇偶標志P。,3.3.2算術運算類指令(共23條)算術運算類指令主要是對8位無符號數據進行算術操作,其中包括加(ADD)、帶進位加(ADDC)、帶借位減法(SUBB)、乘(MUL)、除(DIV)、加1(INC)、減1(DEC)指令;借助溢出標志,可對有符號數進行補碼運算;借助進位標志,可進行多精度加、減運算;也可以對壓縮BCD數進行加法運算。,1加法指令ADDA,Rn;(A)(Rn)AADDA,direct;(A)(direct)AADDA,Ri;(A)(Ri)AADDA,data;(A)dataA2帶進位加法指令ADDCA,Rn;(A)(Rn)CYAADDCA,direct;(A)(direct)CYAADDCA,Ri;(A)(Ri)CYAADDCA,data;(A)dataCYA位,3帶借位減法指令SUBBA,Rn;(A)(Rn)CYASUBBA,direct;(A)(direct)CYASUBBA,Ri;(A)(Ri)CYASUBBA,data;(A)dataCYA4乘法指令MULAB;(A)(B)BA,B158,A705除法指令DIVAB;(A)(B)的商A,余數B6加一指令INCA;(A)1AINCRn;(Rn)1RnINCdirect;(direct)1(direct)INCRi;(Ri)1(Ri)INCDPTR;(DPTR)1DPTR,7減一指令DECA;(A)1ADECRn;(Rn)1RnDECdirect;(direct)l(direct)DECRi;(Ri)1(Ri)8十進制調整指令DAA,算術運算類指令匯總圖,算術運算操作對PSW中標志位的影響,算術運算指令應用舉例,例1已知(A)DBH,(R4)73H,CY1,執行指令“SUBBA,R4”則結果如下:(A)67H,CY0,OV1例2試編寫計算1234H減0FE7H的程序,將和的高8位存入41H,低8位存入40H單元。CLRC;進位位C清“0”MOVA,#34H;34HASUBBA,#0E7H;(A)E7HCYAMOV40H,A;(A)(40H)MOVA,#12H;12HASUBBA,#0FH;(A)0FHCYAMOV41H,A;(A)(41H),3.3.3邏輯運算類指令(共25條)邏輯運算類指令主要用于對兩個操作數按位進行邏輯操作,操作結果送到A累加器或直接尋址單元,若直接地址為I/O端口,則為“讀-改-寫”操作。這類指令執行的操作主要有“與”(ANL)、“或”(ORL)、“異或”(XRL)以及累加器自身的循環移位、取反(CPL)、清除(CLR)等。這些指令執行時一般不影響程序狀態字寄存器PSW,僅當目的操作數為ACC時對奇偶標志位有影響。,1.邏輯“與”指令ANLA,Rn;(A)(Rn)AANLA,direct;(A)(direct)AANLA,Ri;(A)(Ri)AANLA,#data;(A)dataAANLdirect,A;(direct)(A)(direct)ANLdirect,#data;(direct)data(direct)2邏輯或指令ORLA,Rn;(A)+(Rn)AORLA,direct;(A)+(direct)AORLA,Ri;(A)+((Ri)AORLA,data;(A)+dataAORLdirect,A;(direct)+(A)(direct)ORLdirect,data;(direct)+data(direct),3邏輯異或指令XRLA,Rn;(A)(Rn)AXRLA,direct;(A)(direct)AXRLA,Ri;(A)(Ri)AXRLA,data;(A)dataAXRLdirect,A;(direct)(A)(direct)XRLdirect,data;direct)data(direct),4循環移位指令,5取反指令CPLA;,A,5取反指令CPLA;,A,5取反指令CPLA;(/A)A6清0指令CLRA;0A,2.邏輯運算指令舉例,例1已知(A)1AH,(R0)45H,(45H)39H,執行指令ORLA,R0,則操作如下:00011010(1AH)+)00ll1001(39H),00111011(3BH)結果(A)3BH,(R0)45H,(45H)39H,P1,例2將累加器A中低4位的狀態,通過P1口的高4位輸出。解:根據題意可編程如下:ANLA,0FH;屏蔽A.7A.4SWAPA;高、低半字節交換ANLP1,0FH;清P1口高4位ORLP1,A;使P1.7P1.4按A中初始值的A.3A.0值置位,3.3.4轉移操作類指令(共17條)這類指令的功能主要是控制程序從原順序執行地址轉移到其它指令地址上。包括跳轉、調用、散轉、返回及空操作等操作。1無條件轉移指令LJMPaddrl6;addrl6PCAJMPaddrl1;(PC)2PC,addr11PC.10PC.0SJMPrel;(PC)2relPC2條件轉移JZrel;A0:(PC)2relPCA0:(PC)2PC,JNZrel;A0:(PC)2relPCA0:(PC)2PC,DJNZRn,re1;(Rn)-1Rn,(Rn)0:(PC)2relPC(Rn)0:(PC)2PC,DJNZdirect,rel;(direct)1(direct),(direct)0:(PC)3relPC(direct)0:(PC)3PC,CJNEA,direct,rel;A(direct):(PC)3PC,0CA(direct):(PC)3relPC,0CA(direct):(PC)3re1PC,1C,CJNEA,data,rel;(A)data(PC)3PC,0C(A)data(PC)3relPC,0C(A)data:(PC)3relPC,1C,CJNERn,data,rel;(Rn)data:(PC)3PC,0C(Rn)data:(PC)3relPC,0C(Rn)data:(PC)3relPC,1C,CJNERi,data,rel;((Ri)data:(PC)3PC,0C(Ri)data:(PC)3relPC,0C(Ri)data:(PC)3relPC,1C,3間接轉移指令JMPADPTR;(A)(DPTR)PC4調用子程序及返回指令LCALLaddr16;(PC)3PC,(SP)1SP,(PC.7PC.0)(SP),(SP)1SP,(PC.15PC.8)(SP),addr16PCACALLaddr11;(PC)2PC,(SP)1SP,(PC.7PC.0)(SP),(SP)1SP,(PC.15PC.8)(SP),addr11PC.10PC.0RET;(SP)PC.15PC.8,(SP)-1SP,(SP)PC.7PC.0,(SP)-1SPRETI;除具有RET指令的功能外,還將清除優先級狀態觸發器,詳見第6章5空操作指令NOP,轉移指令應用舉例,例1根據R7的內容,轉向各個操作程序。R70,轉入OPR0R71,轉入OPR1R7n,轉入OPRn解:MOVDPTR,JPTAB1;跳轉表首地址送數據指針MOVA,R7;R72A(修正變址值)ADDA,R7JNCNOAD;判有否進位INCDPH;有進位則加到高字節地址NOAD:JMPADPTR;轉向形成的散轉地址入口JPTAB1:AJMPOPR0;直接轉移地址表AJMPOPR1AJMPOPRn,例2某子程序SUB1入口地址是340BH,調用指令LCALLSUB1地址為2042H,該段程序調用過程中PC及SP的變化如下:地址指令注釋2040HMOVSP,#20H;設置堆棧指針,20HSP2042HLCALLSUB1;調用子程序,2045HPC,21HSP,45H(21H),22HSP,20H(22H),340BHPC340BHSUB1:MOVA,R03412HRET;(22H)PCH,(21H)PCL,此時PC2045H,SP20H,例3、根據A中數值,置相應的標志位。當#dataLA#dataH,標志位F0清零;否則F0置1。,解:ORG2000HST:CLRF0CJNEA,#dataH,HCNTRETHCNT:JCLCSF0:SETBF0RETLC:CJNEA,#dataL,LCNTRETLCNT:JCSF0RET,3.3.5位操作類指令(共17條)包括位變量傳送、邏輯運算、控制程序轉移等指令。在進行位操作時,位累加器C為進位標志CY。在匯編語言中位地址的表達方式有如下幾種:(l)直接(位)地址方式:如D4H;(2)點操作符號方式:如PSW.4,(D0H).4;(3)位名稱方式:如RS1;(4)用戶定義名方式:如用偽指令BIT定義下式:SUB.REGbitRS1經定義后,指令中可以用SUB.REG代替RS1。上面4種方式都可表達PSW(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 私人飛機應急定位發射器租賃飛行員生命保障服務協議
- 服裝鞋帽品牌代理合作協議(含市場調研)
- 物流倉庫主管派遣與倉儲物流安全管理合同
- 智能停車場車位預約與新能源汽車充電服務協議
- 資產管理公司資產評估師派遣合同
- 區塊鏈技術在智慧城市建設中的應用培訓協議
- 海外代購商品售后服務保障協議
- 帶車位地下室住宅產權變更合同范本
- 高效口腔醫療器械滅菌袋專業采購協議
- 災害救援志愿者服務承諾及行動協議
- 康復評定學第三章肌力
- 圖形創意(高職藝術設計)PPT完整全套教學課件
- 2023年財會金融-注冊會計師-審計(官方)考試歷年真題甄選版帶答案
- 2023學年完整公開課版粘壓阻力
- 基于STM32的平衡車系統設計
- YY/T 0299-2022醫用超聲耦合劑
- MT 181-1988煤礦井下用塑料管安全性能檢驗規范
- GB/T 193-2003普通螺紋直徑與螺距系列
- 因納特工商管理綜合實訓軟件V4.00
- 四議兩公開工作法課件
- 2022年保山數字產業發展有限責任公司招聘筆試題庫及答案解析
評論
0/150
提交評論