MCS51單片機(jī)指令系統(tǒng) 與匯編語言程序設(shè)計(jì)_第1頁
MCS51單片機(jī)指令系統(tǒng) 與匯編語言程序設(shè)計(jì)_第2頁
MCS51單片機(jī)指令系統(tǒng) 與匯編語言程序設(shè)計(jì)_第3頁
MCS51單片機(jī)指令系統(tǒng) 與匯編語言程序設(shè)計(jì)_第4頁
MCS51單片機(jī)指令系統(tǒng) 與匯編語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、思考題與習(xí)題部分參考答案MCS51單片機(jī)指令系統(tǒng) 與匯編語言程序設(shè)計(jì)1 8051單片機(jī)的指令系統(tǒng)有何特點(diǎn)?解:8051的指令系統(tǒng)由111條指令組成。如果按字節(jié)數(shù)分類,有49條單字節(jié)指令46條雙字節(jié)指令和16條三字節(jié)指令,以單字節(jié)指令為主;如果按照指令執(zhí)行時(shí)間分類,有64條單周期指令、45條雙周期指令和條四周期指令,以單周期指令為主。8051的指令系統(tǒng)具有以下特點(diǎn):(1)存儲(chǔ)效率高、執(zhí)行速度快,可以進(jìn)行直接地址到直接地址的數(shù)據(jù)傳送,能把一個(gè)并行I/O口中的內(nèi)容傳送到內(nèi)部RAM單元中而不必經(jīng)過累加器A或工作寄存器Rn。這樣可以大大提高傳送速度和緩解累加器A的瓶頸效應(yīng)。(2)用變址尋址方式訪問程序存

2、儲(chǔ)器中的表格,將程序存儲(chǔ)器單元中的固定常數(shù)或表格字節(jié)內(nèi)容傳送到累加器A中。這為編成翻譯算法提供了方便。(3)在算術(shù)運(yùn)算指令中設(shè)有乘法和除法指令(4)指令系統(tǒng)中一些對(duì)I/O口進(jìn)行操作的指令具有“讀修改寫”的功能。這一功能指:在執(zhí)行讀鎖存器的指令時(shí),CPU首先完成將鎖存器的值通過緩沖器BUF2度入內(nèi)部,進(jìn)行修改、改變,然后重新寫到鎖存器中去。這種類型指令包含所有的邏輯操作和位操作指令。(5)8051單片機(jī)內(nèi)部有一個(gè)布爾處理器,對(duì)為地址空間具有豐富的位操作指令。布爾操作類指令有17條,包括布爾傳送指令、布爾狀態(tài)控制指令、布爾邏輯操作指令、布爾條件轉(zhuǎn)移指令。28051單片機(jī)指令系統(tǒng)按功能可分為幾類?具

3、有幾種尋址方式?它們的尋址范圍如何?解:MCS-51單片機(jī)指令系統(tǒng)按功能可分為5類: (1)數(shù)據(jù)傳送指令 (2)算術(shù)運(yùn)算指令 (3)邏輯運(yùn)算和移位指令 (4)控制轉(zhuǎn)移指令 (5)位操作指令 MCS-51單片機(jī)的指令系統(tǒng)提供了七種尋址方式,其對(duì)應(yīng)的尋址范圍如下表:尋址方式使用的變量尋址范圍立即尋址程序存儲(chǔ)器直接尋址內(nèi)部RAM低128個(gè)字節(jié);特殊功能寄存器SFR寄存器尋址R0R7;A、B、DPTR、C寄存器間接尋址R0、R1、SP內(nèi)部RAM、堆棧指針SPR0、R1、DPTR外部RAM變址尋址A+PC、A+DPTR程序存儲(chǔ)器相對(duì)尋址PC+偏移量程序存儲(chǔ)器位尋址內(nèi)部RAM低128B位尋址區(qū)可位尋址的特

4、殊功能寄存器位3訪問特殊功能寄存器和外部數(shù)據(jù)存儲(chǔ)器應(yīng)采用哪種尋址方式?解: 訪問特殊功能寄存器,應(yīng)采用直接尋址、位尋址方式。訪問外部數(shù)據(jù)存儲(chǔ)器,應(yīng)采用寄存器間接尋址方式。在0255B范圍內(nèi),可用寄存器R0、R1間接尋址:MOVX A,R0 或 MOVX A,R1MOVX R0,A 或 MOVX R1,A在064KB范圍內(nèi),可用16位寄存器DPTR間接尋址:MOVX A,DPTRMOVX DPTR,A4“DA A”指令的作用是什么?怎樣使用?解:這條指令是在進(jìn)行BCD碼加法運(yùn)算時(shí),跟在“ADD”和“ADDC”指令之后,用來對(duì)BCD碼的加法運(yùn)算結(jié)果自動(dòng)進(jìn)行修正的,使其仍為BCD碼表達(dá)形式。在計(jì)算機(jī)

5、中,遇到十進(jìn)制調(diào)整指令時(shí),中間結(jié)果的修正是由ALU硬件中的十進(jìn)制修正電路自動(dòng)進(jìn)行的。用戶不必考慮何時(shí)該加“6”,使用時(shí)只需在上述加法指令后面緊跟一條“DA A”指令即可。5片內(nèi)RAM 20H2FH單元中的128個(gè)位地址與直接地址00H7FH形式完全相同,如何在指令中區(qū)分出位尋址操作和直接尋址操作?解: 雖然內(nèi)部RAM位尋址區(qū)的位地址范圍00H7FH與低128個(gè)單元的單元地址范圍00H7FH形式完全相同,但是在應(yīng)用中可以通過指令的類型區(qū)分單元地址和位地址。位尋址的操作只適用于下列位指令,而直接尋址操作對(duì)這些指令是無效的。2思考題與習(xí)題部分參考答案MOV C,bitMOV bit,CCLR bit

6、 SETB bit CPL bit ANL C,bit ANLC,/bit JB bit,rel JNB bit,rel68051單片機(jī)指令系統(tǒng)中有長跳轉(zhuǎn)LJMP,長調(diào)用LCALL指令,為何還沒有設(shè)置了絕對(duì)跳轉(zhuǎn)AJMP,絕對(duì)調(diào)用ACALL指令?在實(shí)際使用是應(yīng)怎樣考慮?解: 在實(shí)際應(yīng)用中,可從尋址范圍和指令長度兩個(gè)方面來選擇長跳轉(zhuǎn)指令LJMP和短跳轉(zhuǎn)指令A(yù)JMP、長調(diào)用指令LCALL和短調(diào)用指令A(yù)CALL。長跳轉(zhuǎn)LJMP在64KB范圍內(nèi)轉(zhuǎn)移,而短跳轉(zhuǎn)AJMP只能在2KB空間轉(zhuǎn)移。長調(diào)用LCALL調(diào)用位于64KB程序空間的子程序,而短調(diào)用ACALL調(diào)用位于2KB程序空間范圍的子程序。AJMP、AC

7、ALL指令代碼長度為個(gè)字節(jié);LJMP、LCALL指令代碼長度為個(gè)字節(jié)。7SJMP,AJMP和LJMP指令在功能上有何不同?解: 指令的轉(zhuǎn)移范圍不同。SJMP是256B范圍內(nèi)的相對(duì)轉(zhuǎn)移指令,AJMP是2KB范圍內(nèi)的無條件短跳轉(zhuǎn)指令,LJMP是64KB范圍內(nèi)的無條件長跳轉(zhuǎn)指令。8MOVC A,DPTR與MOVX A,DPTR指令有何不同?解: 指令的轉(zhuǎn)移范圍不同。SJMP是256B范圍內(nèi)的相對(duì)轉(zhuǎn)移指令,AJMP是2KB范圍內(nèi)的無條件短跳轉(zhuǎn)指令,LJMP是64KB范圍內(nèi)的無條件長跳轉(zhuǎn)指令。9在“MOVC A,A+DPTR”和“MOVC A,A+PC”中,分別使用了DPTR和PC作基址,請(qǐng)問這兩個(gè)基址

8、代表什么地址?使用中有何不同?解: 使用A+DPTR基址變址尋址時(shí),DPTR為常數(shù)且是表格的首地址,A為從表格首址到被訪問字節(jié)地址的偏移量。使用A+PC基址變址尋址時(shí),PC仍是下條指令首地址,而A則是從下條指令首地址到常數(shù)表格中的被訪問字節(jié)的偏移量。10設(shè)片內(nèi)RAM中的(40H)=50H,寫出執(zhí)行下列程序段后寄存器A和R0,以及片內(nèi)RAM中50H和51H單元的內(nèi)容為何值?MOV A,40HMOV R0,AMOV A,#00MOV R0,AMOV A,#30HMOV 51H,AMOV 52H,#70H解:結(jié)果為:(A)30H (R0)=50H (50H)00H (51H)30H11 設(shè)堆棧指針(

9、SP)=60H,片內(nèi)RAM中的(30H)=24H,(31H)=10H。執(zhí)行下列程序段后,61H,62H,30H,31H,DPTR及SP中的內(nèi)容將有何變化?解:結(jié)果為: (61H)=24H (62H)=10H (30H)=00H (31H)=0FFH DPTR=2410HSP=60H12 在8051的片內(nèi)RAM中,已知(20H)=30H,(30H)=40H,(40H)=50H,(50H)=55H。分析下面各條指令,說明源操作數(shù)的尋址方式,分析按順序執(zhí)行各條指令后的結(jié)果。MOV A,40HMOV R0,AMOV P1,#0F0HMOV R0,20HMOV 50H,R0MOV A,R0MOV P2,

10、P1解: 指令 源操作數(shù)的尋址方式 執(zhí)行指令后的結(jié)果MOV A,40H 直接尋址 (A)=50HMOV R0,A 寄存器尋址 (R0)=50HMOV P1,#80H 立即尋址 (P1)=80HMOV R0,20H 寄存器間接尋址 (50H)=30HMOV DPTR,#2000H 立即尋址 (DPTR)=2000HMOV 40H,30H 直接尋址 (40H)=40HMOV R0,30H 直接尋址 (R0)=40HMOV D0H,R0 直接尋址 (D0H)=40HMOV 10H,#10H 立即尋址 (10H)=10HMOV A,R0 寄存器間接尋址 (A)=50HMOV P2,P1 寄存器尋址 (

11、P2)=80H13完成以下的數(shù)據(jù)傳送過程。(1)R1的內(nèi)容傳送到R0。(2)片外RAM 20H單元的內(nèi)容送R0。(3)片外RAM 20H單元的內(nèi)容送片內(nèi)RAM 20H(4)片外RAM 1000H單元的內(nèi)容送片內(nèi)RAM 20H(5)片外RAM 20H單元的內(nèi)容送R0。(6)片外RAM 2000H單元的內(nèi)容送片內(nèi)RAM 20H(7)片外RAM 20H單元的內(nèi)容送片外RAM 20H解:(1)R1的內(nèi)容傳送到R0 ; MOV A, R1 MOV R0, A(2)片外RAM 20H單元內(nèi)容送R0 ; MOV DPTR, #0020H MOVX A, DPTR MOV R0, A(3)片外 RAM 20H

12、單元的內(nèi)容送片內(nèi)RAM 20H單元; MOV DPTR, #0020H MOVX A, DPTR MOV 20H, A(4)片外RAM 1000H單元的內(nèi)容送片內(nèi) RAM 20H 單元; MOV DPTR, #1000H MOVX A, DPTR MOV 20H, A(5)ROM 2000H單元的內(nèi)容送R0單元; MOV A, #00H MOV DPTR, #2000H MOVC A,A+DPTR MOV R0H, A(6)ROM 2000H 單元的內(nèi)容送片內(nèi)RAM 20H單元; MOV A, #00H MOV DPTR, #2000H MOVC A,A+DPTRMOV 20H, A(7)RO

13、M 2000H單元的內(nèi)容送片外RAM 20H單元。 MOV A, #00H MOV DPTR, #2000H MOVC A,A+DPTR MOV DPTR, #0020H MOVX DPTR,A14設(shè)有兩個(gè)4位BCD碼,分別存放在片內(nèi)RAM的23H,22H單元和33H,32H單元中,求它們的和,并送入43H,42H單元中去。(以上均為低位字節(jié),高位在高字節(jié))。解:9ORG 0000HLJMP STARTORG 0030HSTART:MOV A,22HADD A,32HDA AMOV 42H,AMOV A,23HADDC A,33HDA AMOV 43H,ASJMP $END15編程將片內(nèi)RAM

14、的40H60H單元中內(nèi)容送到片外RAM以3000H開始的單元中。解: ORG 0000HLJMP MAINORG 0030HMAIN:MOV R7,#20HMOV R1,#40HMOV DPTR,#3000HLOOP:MOV A,R1MOVX DPTR,AINC R1INC DPTRDJNZ R7,LOOPSJMP $END16編程計(jì)算片內(nèi)RAM區(qū)30H37H的8個(gè)單元中數(shù)的算術(shù)平均值,結(jié)果存在3AH單元中。解: ORG 0000HLJMP MAINORG 0030HMAIN:MOV R0,#30HMOV R1,#00HMOV R2,#00HMOV R3,#07HLP2:MOV A,R0ADD

15、 A,R2MOV R2,AJNC LP1INC R1LP1:INC R0DJNZ R3,LP2MOV R3,#03HLP3:CLR CMOV A,R1RRC AMOV R1,AMOV A,R2RRC AMOV R2,ADJNZ R3,LP3MOV 3AH,R2SJMP $END17編寫計(jì)算下式的程序,設(shè)乘積的結(jié)果均小于255,A,B值分別存放在片外RAM的2001H和2002H單元中,結(jié)果存于2000H單元中。 (A+B*(A+B)+10 若(A+B)*(A+B) 10 Y=(A+B)*(A+B) 若(A+B)*(A+B)=10 (A+B)*(A+B)-10 若(A+B)*(A+B) 10解:

16、ORG 0000HLJMP STARTORG 0030HSTART:MOV DPTR,#2001HMOVX A,DPTRMOV 30H,AMOV DPTR,#2002HMOVX A,DPTRADD A,30HMOV B,AMUL ABMOV R1,ACJNE A,#10,NET1MOV DPTR,#2000HMOVX DPTR,ASJMP NET3NET1:JNC NET2CLR CMOV A,R1SUBB A,#10MOV DPTR,#2000HMOVX DPTR,ASJMP NET3NET2:MOV A,R1ADD A,#10MOV DPTR,#2000HMOVX DPTR,ANET3:S

17、JMP $END19設(shè)有100個(gè)有符號(hào)數(shù),連續(xù)存放在片外RAM以2200H為首地址的存儲(chǔ)區(qū)中,試片成統(tǒng)計(jì)其中正數(shù)|、負(fù)數(shù)、零的個(gè)數(shù)。解: ORG 0000HLJMP MAINORG 0030HMAIN:MOV R2,#100MOV R3,#00HMOV R4,#00HMOV R5,#00HMOV DPTR,#2000HLOOP:MOVX A,DPTRCJNE A,#00H,NET1INC R3INC DPTRDJNZ R2,LOOPSJMP NET3NET1:JC NET2INC R4INC DPTRDJNZ R2,LOOPSJMP NET3NET2:INC R5INC DPTRDJNZ R2,LOOPNET3:SJMP $END22試編一查表程序,從首地址為2000H、長度為9FH的數(shù)據(jù)塊中找出第一個(gè)ASCII碼A,

溫馨提示

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

評(píng)論

0/150

提交評(píng)論