MCS51單片機指令系統 與匯編語言程序設計_第1頁
MCS51單片機指令系統 與匯編語言程序設計_第2頁
MCS51單片機指令系統 與匯編語言程序設計_第3頁
免費預覽已結束,剩余7頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

思考題與習題部分參考答案思考題與習題部分參考答案思考題與習題部分參考答案思考題與習題部分參考答案PAGEPAGE9PAGEPAGE6MCS51單片機指令系統與匯編語言程序設計8051單片機的指令系統有何特點?111條指令組成。如果按字節數分類,有494616條三字節指令,以單字節指令為主;如果按照指令執行時間分類,有6445條雙周期指令和2條四周期指令,以單周期指令為主。8051的指令系統具有以下特點:I/O口中的內容傳送到內部RAM單元中而不必經過累加器A或工作寄存器Rn。這樣可以大大提高傳送速度和緩解累加器A的瓶頸效應。字節內容傳送到累加器A中。這為編成翻譯算法提供了方便。在算術運算指令中設有乘法和除法指令指令系統中一些對I/O口進行操作的指令具有“讀——修改——寫”的功能。這一功能指:首先完成將鎖存器的值通過緩沖器BUF2(5)8051單片機內部有一個布爾處理器,對為地址空間具有豐富的位操作指令。布爾操作類指令有17移指令。2.8051單片機指令系統按功能可分為幾類?具有幾種尋址方式?它們的尋址范圍如何?解:MCS-51單片機指令系統按功能可分為5類:數據傳送指令算術運算指令邏輯運算和移位指令控制轉移指令位操作指令尋址方式立即尋址直接尋址尋址方式立即尋址直接尋址使用的變量尋址范圍程序存儲器內部RAM128特殊功能寄存器SFR寄存器間接尋址R0~R7;A、B、DPTR、C@R0、@R1、SP內部RAM、堆棧指針SP位尋址內部RAM128B位尋址區@R0、@R1、@DPTR外部RAM變址尋址@A+PC、@A+DPTR程序存儲器相對尋址PC+偏移量程序存儲器解:訪問特殊功能寄存器,應采用直接尋址、位尋址方式。訪問外部數據存儲器,應采用寄存器間接尋址方式。在0~255B范圍內,可用寄存器R0、R1間接尋址MOVX A,@R0或MOVX A,@R1MOVX @R0,A 或 MOVX @R1,A在0~64KB范圍內,可用16位寄存器DPTR間接尋址:MOVX MOVX “DA A”指令的作用是什么?怎樣使用?解:這條指令是在進行BCD碼加法運算時,跟在“ADD”和“ADDC”指令之后,用來對BCD碼的加法運算結果自動進行修正的,使其仍為BCD碼表達形式。在計算機中遇到十進制調整指令時中間結果的修正是由ALU硬件中的十進制修正電路自動進行的用戶不必考慮何時該使用時只需在上述加法指令后面緊跟一“DA 指令即可。片內RAM20H~2FH12800H~7FH指令中區分出位尋址操作和直接尋址操作?解:雖然內部RAM位尋址區的位地址范圍00H~7FH與低128個單元的單元地址范圍00H~7FH形式完全相同,但是在應用中可以通過指令的類型區分單元地址和位地址。位尋址的操作只適用于下列位指令,而直接尋址操作對這些指令是無效的。MOVC,bitMOVbit,CCLRbitSETBbitCPLbitANLC,bitANLC,/bitJBbit,relJNB6.8051單片機指令系統中有長跳轉LJMP,長調用LCALL指令,為何還沒有設置了絕對跳轉AJMP,絕對調用ACALL指令?在實際使用是應怎樣考慮?解:在實際應用中,可從尋址范圍和指令長度兩個方面來選擇長跳轉指令LJMP和短跳轉指令AJMP、長調用指令LCALL和短調用指令ACALL。長跳轉LJMP在64KBAJMP只能在2KBLCALL64KBACALL2KBAJMPACALLLCALL指令代碼長度為3個字節。SJMP,AJMPLJMP解:指令的轉移范圍不同。P是B范圍內的相對轉移指令P是B范圍內的無條件短跳轉指令LJMP是64KB范圍內的無條件長跳轉指令。MOVC A,@DPTR與MOVX A,@DPTR指令有何不同解:指令的轉移范圍不同。P是B范圍內的相對轉移指令P是B范圍內的無條件短跳轉指令LJMP是64KB范圍內的無條件長跳轉指令。在“MOVC A,@A+DPTR”和A,@A+PC”中,分別使用了DPTR和PC作基址,請問這兩個基址代表什么地址?使用中有何不同?解:使用@A+DPTR基址變址尋址時,DPTR為常數且是表格的首地址,A為從表格首址到被訪問字節地址的偏移量。使用@A+PC基址變址尋址時,PC仍是下條指令首地址,而A則是從下條指令首地址到常數表格中的被訪問字節的偏移量。RAM,寫出執行下列程序段后寄存器ARAMMOVA,40HMOVR0MOVA,40HMOVR0,AMOVA,#00MOV@R0,AMOVA,#30HMOV51H,AMOV52H,#70H解:結果為)30H (R=50H (50)00H (51)30H11.設堆棧指針S=60,片內RAM中的30=24(31)=10。執行下列程段后,61H,62H,30H,31H,DPTRSP解:結果為:(61H)=24H(62H)=10H(30H)=00H(31H)=0FFHDPTR=2410HSP=60H12.在8051的片內RAM中已(20=30(30=4040=50H50=55。分析下面各條指令,說明源操作數的尋址方式,分析按順序執行各條指令后的結果。MOV A,40HMOV R0,AMOV MOV @R0,20HMOV 50H,R0MOV A,@R0MOV P2,P1解: 指令 源操作數的尋址方式 執行指令后的結果MOVA,40H直接尋址(A)=50HMOVR0,A寄存器尋址(R0)=50HMOVP1,#80H立即尋址(P1)=80HMOV@R0,20H寄存器間接尋址(50H)=30HMOVDPTR,#2000H立即尋址(DPTR)=2000HMOV40H,30H直接尋址(40H)=40HMOVR0,30H直接尋址(R0)=40HMOVD0H,R0直接尋址(D0H)=40HMOV10H,#10H立即尋址(10H)=10HMOVA,@R0寄存器間接尋址(A)=50HMOVP2,P1寄存器尋址(P2)=80H完成以下的數據傳送過程。R1的內容傳送到R0。片外RAM20H單元的內容送R0。片外RAM20H單元的內容送片內RAM20H片外RAM1000H單元的內容送片內RAM20H片外RAM20H單元的內容送R0。片外RAM2000H單元的內容送片內RAM20H片外RAM20H單元的內容送片外RAM20H解:(1)R1的內容傳送到R0;MOV A, R1MOV R0, A片外RAM20H單元內容送R0;MOVDPTR,#0020HMOVXA,@DPTRMOVR0,ARAM20H單元的內容送片內RAM20H單元;MOVDPTR,#0020HMOVXA,@DPTRMOV20H,A片外RAM1000HRAM20H單元;MOVDPTR,#1000HMOVXA,@DPTRMOV20H,AROM2000H單元的內容送R0單元MOV A, #00HMOV DPTR, MOVC A,@A+DPTRMOV R0H, AROM2000H單元的內容送片內RAM20H單元MOV A, #00HMOV DPTR, MOVC A,@A+DPTRMOV 20H, AROM2000H單元的內容送片外RAM20H單元MOV A, #00HMOV DPTR, #2000HMOVC A,@A+DPTRMOV DPTR, MOVX @DPTR, A4位BCD碼,分別存放在片內RAM23H,22H33H,32H43H,42H(以上均為低位字節,高位在高字節。解:ORG LJMPSTARTORG0030HSTART:MOVA,22HADDA,32HDAAMOVMOVADDCDAAMOV43H,ASJMP$END編程將片內RAM40H~60H單元中內容送到片外RAM3000H解:ORG0000HLJMPMAINORG0030HMAIN:MOVR7,#20HMOVR1,#40HMOVLOOP:MOVA,@R1MOVX@DPTR,AINCR1INCDPTRDJNZR7,LOOPSJMP$END編程計算片內RAM30H~37H8個單元中數的算術平均值,結果存在3AH單元中。解:ORG0000HLJMPMAINORG0030HMAIN:MOVR0,#30HMOVMOVMOVLP2:MOVA,@R0ADDMOVJNCLP1INCR1LP1: INCR0DJNZR3,LP2MOVR3,#03HLP3: CLRCMOVRRCAMOVMOVRRCAMOVDJNZR3,LP3MOV3AH,R2SJMP$END值分別存放在片外RAM2001H和2002H單元中,結果存于2000H單元中。A+B(A+)+10 若A+)(A+B〈10Y=(A+B)*(A+B) 若(A+B)*(A+B)-10 若(A+B)*(A+B)〉10解:ORG0000HLJMPSTARTORG0030HSTART:MOVDPTR,#2001HMOVXA,@DPTRMOV30H,AMOVDPTR,#2002HMOVXA,@DPTRADDA,30HMOVB,AMUL ABNET3:END

MOVR1,ACJNEA,#10,NET1MOVDPTR,#2000HMOVX@DPTR,ASJMPNET3JNCNET2CLRCMOVSUBBA,#10MOVDPTR,#2000HMOVX@DPTR,ASJMPNET3MOVA,R1ADDA,#10MOVDPTR,#2000HMOVX@DPTR,ASJMP$19100個有符號數,連續存放在片外RAM2200H、負數、零的個數。解: 思考題與習題部分參考答案 ORG0000HLJMPMAINORG0030HMAIN:MOVR2,#100MOVR3,#00HMOVR4,#00HMOVR5,#00HMOVLOOP:MOVXA,@DPTRCJNEA,#00H,NET1INCR3INCDPTRDJNZR2,LOOPSJMPNET3NET1:JCNET2INCR4INCDPTRDJNZR2,LOOPSJMPNET3NET2:INCR5INCDPTRDJNZR2,LOOPNET3:SJMP$END222000H、長度為9FH的數據塊中找出第一個ASCII碼20A0H20A1H單元中。解:ORG 0000HLJMP ORG

溫馨提示

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

評論

0/150

提交評論