單片機(jī)課后第三章習(xí)題答案_第1頁(yè)
單片機(jī)課后第三章習(xí)題答案_第2頁(yè)
單片機(jī)課后第三章習(xí)題答案_第3頁(yè)
單片機(jī)課后第三章習(xí)題答案_第4頁(yè)
單片機(jī)課后第三章習(xí)題答案_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 單片機(jī)原理與應(yīng)用作業(yè) 第三章1 設(shè)內(nèi)部RAM中59H單元的內(nèi)容為50H,寫出當(dāng)執(zhí)行下列程序段后寄存器A,R0和內(nèi)部RAM中50H,51H單元的內(nèi)容為何值?MOV A,59H ;A=50HMOV R0,A ;R0=50HMOV A,#00H ;A=00HMOV R0,A ;50H=00HMOV A,#25H ;A=25HMOV 51H,A ;51H=25HMOV 52H,#70H ;52H=70HA=25H R0=50H 50H=00H 51H=25H 2請(qǐng)選用適合的指令對(duì)P0口內(nèi)容作修改(例如使P0.0P0.3不變,P0.4P0.7為0)mov A,P0ANL A ,0fhmov P0,A3

2、訪問外部數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器可以用哪些指令來實(shí)現(xiàn)?舉例說明。答:訪問外部數(shù)據(jù)存儲(chǔ)器指令有:MOVX DPTR,A MOV DPTR,#0100H MOV DPTR,AMOVX A,DPTR MOV DPTR,#0200H MOV A,DPTRMOVX A,Ri MOVX A,R0MOVX Ri,A MOVX R1,A訪問程序存儲(chǔ)器指令有:MOVC A,A+PCMOVC A,A+DPTR4設(shè)堆棧指針SP中的內(nèi)容為60H,內(nèi)部RAM中30H和31H單元的內(nèi)容分別為24H和10H,執(zhí)行下列程序段后,61H,62H,30H,31H,DPTR及SP中的內(nèi)容將有何變化?PUSH 30H ;61H=24H

3、PUSH 31H ;62H=10H SP=62HPOP DPL ;DPL=10HPOP DPH ;DPH=24H SP=60HMOV 30H,#00H ;30H=00HMOV 31H,#0FFH ;31H=0FFH5設(shè)(A)=40H,(R1)=23H,(40H)=05H。執(zhí)行下列兩條指令后,累加器A和R1以及內(nèi)部RAM中40H單元的內(nèi)容各為何值?XCH A,R1 ;A=23H R1=40HXCHD A,R1 ;A=25H 40H=03H6兩個(gè)四位BCD碼數(shù)相加,被加數(shù)和加數(shù)分別存于50H,51H和52H,53H單元中(千位、百位在低地址中,十位、個(gè)位在高地址中),和存放在54H,55H和56H

4、中(56H用來存放最高位的進(jìn)位),試編寫加法程序。ORG 0000HLJMP STARTORG 0100HSTART: MOV A,53H ADD A,51HDA AMOV 55H,AMOV A,52HADDC A,50HDA AMOV 56H,CSJMP $END 7設(shè)(A)=01010101B,(R5)=10101010B,分別寫出執(zhí)行下列指令后結(jié)果。ANL A , R5 ; 00000000BORL A , R5 ; 11111111BXRL A , R5 ; 111111118指令SJMP rel中,設(shè)rel=60H,并假設(shè)該指令存放在2114H和2115H單元中。當(dāng)該條指令執(zhí)行后,程

5、序?qū)⑻D(zhuǎn)到何地址?答: 2116H+60H=2176H9簡(jiǎn)述轉(zhuǎn)移指令A(yù)JMP addr11、SJMP rel、 LJMP addr16及JMP A+DPTR的應(yīng)用場(chǎng)合。答:AJMP addr11 為2K字節(jié)范圍內(nèi)的無條件轉(zhuǎn)跳指令,把程序的執(zhí)行轉(zhuǎn)移到指定的地址。SJMP rel是無條件轉(zhuǎn)跳指令,執(zhí)行時(shí)在PC加2后,把指令中補(bǔ)碼形式的偏移量值加到PC上,并計(jì)算出轉(zhuǎn)向目標(biāo)地址。轉(zhuǎn)向的目標(biāo)地址可以在這條指令前128字節(jié)到后127字節(jié)之間。LJMP addr16執(zhí)行這條指令時(shí)把指令的第二和第三字節(jié)分別裝入PC的高位和低位字節(jié)中,無條件地轉(zhuǎn)向指定地址。轉(zhuǎn)移的目標(biāo)地址可以在64K程序存儲(chǔ)器地址空間的任何地方

6、,不影響任何標(biāo)志。JMP A+DPTR 指令的功能是把累加器中8位無符號(hào)數(shù)與數(shù)據(jù)指針DPTR中的16位數(shù)相加,將結(jié)果作為下條指令地址送入PC,利用這條指令能實(shí)現(xiàn)程序的散轉(zhuǎn)。10試分析下列程序段,當(dāng)程序執(zhí)行后,位地址00H,01H中的內(nèi)容將為何值?P1口的8條I/O線為何狀態(tài)?CLR C ;CY=0MOV A,#66H ;A=66HJC LOOP1 CPL C ;CY=1SETB 01H ;20H.1=1LOOP1: ORL C, ACC.0 ;CY=1JB ACC.2,LOOP2 ;CLR 00H LOOP2: MOV P1,A ;P1=01100110BSJMP $20H.0=0 20H.1

7、=1 P1=66H11查指令表,寫出下列兩條指令的機(jī)器碼,并比較一下機(jī)器碼中操作數(shù)排列次序的特點(diǎn)。MOV 78H,80H ;85 80 78MOV 78H,#80H ;75 78 80答直接尋址單元傳送到直接尋址單元的機(jī)器碼是第二個(gè)操作數(shù)在前,而立即數(shù)傳送到直接地址單元是第一個(gè)操作數(shù)在前,次序正好相反。12手工匯編下列程序段 ORG 873BHAAA EQU 851AHQQQ: MOV A,35H CLR C SUBB A,#0AH JC QQ16 MOV A,36H SUBB A,#0AH JC QQ15 AJMP AAAQQ15: MOV 35H,#00HQQ16: JNB 02H,QQ1

8、7 MOV R6,39H DEC R6 SJMP QQ18QQ17: MOV R6,39H INC 39HQQ18: CLR 05H LJMP 8500H END13若有兩個(gè)無符號(hào)數(shù)x,y分別存放在內(nèi)部存儲(chǔ)器50H、51H單元中,試編寫一個(gè)程序?qū)崿F(xiàn)x*10+y,結(jié)果存人52H、53H兩個(gè)單元中。ORG 0000HSJMP STARTORG 0030HSTART: MOV A,50HMOV B,#10MUL AB ;(50H)x10積的高、低字節(jié)分別在B、A中 ADD A,51HMOV 53H,A ;積的低字節(jié)加(51H)其和存放在53H中 MOV A,#00HADDC A,BMOV 52H,A

9、 ;積的高字節(jié)加進(jìn)位位存放在52H中。 SJMP $14從內(nèi)部存儲(chǔ)器20H單元開始,有30個(gè)數(shù)據(jù)。試編一個(gè)程序,把其中的正數(shù)、負(fù)數(shù)分別送51H和71H開始的存儲(chǔ)單元,并分別記下正數(shù)、負(fù)數(shù)的個(gè)數(shù)送50H和70H單元。 ORG 0000HSJMP STARTORG 0030HSTART: MOV 1EH,#51H ;正數(shù)存放首地址51H存暫存于1EH單元 MOV 1FH,#71H ;負(fù)數(shù)存放首地址71H存暫存于1EH單元 MOV R0,#20H ;建立取數(shù)(源操作數(shù))的地址指針 MOV R2,#30 ;預(yù)置數(shù)據(jù)長(zhǎng)度MOV 50H,#00H ;正數(shù)個(gè)數(shù)統(tǒng)計(jì)單元清零MOV 70H,#00H ;負(fù)數(shù)個(gè)數(shù)

10、統(tǒng)計(jì)單元清零LOOP: MOV A,R0 ;取數(shù)JB ACC.7,NEG ;是負(fù)數(shù)轉(zhuǎn) NEG處理POSI: MOV R1,1EH ;是正數(shù),將暫存的地址送R1(間址寄存器) MOV R1,A ;將正數(shù)入存INC 50H ;正數(shù)個(gè)數(shù)加1INC 1EH ;正數(shù)暫存地址加1修正LOOP1: INC R0 ;取數(shù)地址加1修正DJNZ R2,LOOP ;計(jì)數(shù)長(zhǎng)度減1,不等于零,繼續(xù)循環(huán)統(tǒng)計(jì)SJMP $ ; 結(jié)束NEG: MOV R1,1FH ;是負(fù)數(shù),將暫存的地址送R1(間址寄存器) MOV R1,A ;將負(fù)數(shù)入存INC 70H ;負(fù)數(shù)個(gè)數(shù)加1INC 1FH ;負(fù)數(shù)暫存地址加1修正SJMP LOOP1

11、;轉(zhuǎn)取數(shù)地址修正15內(nèi)部存儲(chǔ)單元40H中有一個(gè)ASCII碼字符,試編一程序,給該數(shù)的最高位加上奇校驗(yàn)。ORG 0000HSJMP STARTORG 0030HSTART: MOV A,40H ;取數(shù)給ACLR ACC.7 ;A最高位(奇偶校驗(yàn)位)清零JB P,LOOP ;40H中的ACSII碼原來就是奇數(shù)個(gè)1(最高位給零) SETB ACC.7 ;40H中的ACSII碼原來是偶數(shù)個(gè)1,最高位置1 LOOP: MOV 40H,A ;入存SJMP $ ; 結(jié)束END16編寫一段程序,將存放在自DATA單元開始的一個(gè)四字節(jié)數(shù)(高位在前),取補(bǔ)后送回原單元。一:若DATA在內(nèi)部數(shù)據(jù)存儲(chǔ)器中(假如存放在

12、30H起始的4個(gè)單元中); 解1、采用求反加1的算法;ORG 0000HSJMP STARTORG 0030HSTART: SETB C ; 置進(jìn)位位為1MOV R2,#04H ; 預(yù)置計(jì)數(shù)長(zhǎng)度MOV R0,#DATA1+3 ; 取數(shù)指針指向低字節(jié)的地址LOOP: MOV A,R0 ; 取數(shù)CPL A ; 求反ADDC A,#00H ; 加進(jìn)位MOV R0,A ; 入存DEC R0 ; 地址指針修正DJNZ R2,LOOP ; 4字節(jié)未處理完,繼續(xù)循環(huán)處理SJMP $ ; 結(jié)束DATA1 EQU 30H ;END17以BUFl為起始地址的外存儲(chǔ)區(qū)中,存放有16個(gè)單字節(jié)無符號(hào)二進(jìn)制數(shù),試編一程序

13、,求其平均值并送BUF2單元。解:設(shè)R2、R3存放和,將其除以16(R2、R3聯(lián)合左移4位)即為平均置值(單字節(jié)存放)ORG 0000HSJMP STARTORG 0030HSTART: MOV R2,#00H ; 和高字節(jié)清零MOV R3,#00H ; 和低字節(jié)清零MOV DPTR,#DATA1 ; 建立外部數(shù)據(jù)存儲(chǔ)器的地址指針MOV R4,#10H ; 預(yù)置計(jì)數(shù)長(zhǎng)度LOOP: MOVX A,DPTR ; 從外部數(shù)據(jù)存儲(chǔ)器取數(shù)ADD A ,R3MOV R3,AMOV A, R2 ;ADDC A,#00H ;MOV R2,A ; 累加INC DPTR ; 地址指針修正DJNZ R4,LOOP

14、; 16字節(jié)未累加完,繼續(xù)循環(huán)累加MOV R4,#04H ; R2、R3聯(lián)合移位4次(除以16)LOOP1: CLR CMOV A,R2RRC AMOV R2,AMOV A,R3RRC AMOV R3,ADJNZ R4,LOOP1 ; 平均值存放于R3中SJMP $ ; 結(jié)束DATA1 EQU 1000H ;END18在DATAl單元中有一個(gè)帶符號(hào)8位二進(jìn)制數(shù)。編一程序,按以下關(guān)系計(jì)算y值,送DATA2x+5 x0x x=0x-5 x0解1:設(shè)DATA1、DATA2為內(nèi)部數(shù)據(jù)存儲(chǔ)器的二個(gè)單元(假設(shè)為30H、31H) 且y的值單字節(jié)不會(huì)產(chǎn)生溢除出ORG 0000HSJMP STARTORG 00

15、30HSTART: MOV A,30H ; 取數(shù)X給AJZ ZERO ; 若X=0,則Y=0,轉(zhuǎn)入存JB ACC.7,NEG ; 若X0,則X=5,入存SJMP ZERO ;NEG: CLR C ;SUBB A,#05H ;ZERO: MOV 31H,A ; 結(jié)果入存SJMP $ ;END19設(shè)內(nèi)部RAM中30H和31H單元中有兩個(gè)帶符號(hào)數(shù),求出其中的大數(shù)存放在32H單元中。解一:思路:若兩數(shù)同號(hào),則值大的數(shù)大;兩數(shù)異號(hào),正數(shù)值大ORG0000HSJMPSTARTORG0030HSTART:MOVA,30H;XRLA,31H;兩數(shù)異或JBACC.7,YIHAO兩數(shù)異號(hào)TONGHAO:CLRC;

16、兩數(shù)同號(hào)MOVA,30HSUBBA,31HJCLOOP12,LOOP0:MOVA,30H;同號(hào)被減數(shù)大,值大LOOED:MOV32H,ASJMP$LOOP1:MOVA,31H;異號(hào)被減數(shù)大,值小SJMPED;YIHAO:MOVA,30H;異號(hào),哪個(gè)正,其值大JNBACC.7,LOOP0SJMPLOOP1END20利用邏輯尺控制的方法,設(shè)計(jì)一個(gè)主程序,在第1、3、5、6次調(diào)用SBI子程序,第2、4、7、8次調(diào)用SB2子程序。ORG 0000HSJMP TESTORG 0030H7/15頁(yè)TEST: MOV R2,#08HMOV A, #10101100BLOOP: RLC AJC LOOP1LC

17、ALL SBISJMP RELTLOOP1: LCALL SB2RELT: DJNZ R2,LOOPSJMP $PRGO: RETPRG1: RETEND21 將DATA單元存放的以ASCII碼表示的16進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)存放于DATA+1單元。解:先將DATA單元的ASCII碼轉(zhuǎn)換成十六進(jìn)制的數(shù),再轉(zhuǎn)轉(zhuǎn)成十進(jìn)制的數(shù)。 數(shù)字的ASCII碼轉(zhuǎn)成十六進(jìn)制數(shù)(即為十進(jìn)制數(shù))采用減30H字母的ASCII碼轉(zhuǎn)成十六進(jìn)制數(shù)采用減37H,十六進(jìn)制再轉(zhuǎn)十進(jìn)制可采用先減0AH,再加10H;這樣-37H-0AH+10H=-31H,可采用直接減31H。1、數(shù)字與字母的ASCII的區(qū)別,可采用對(duì)D6的檢測(cè)D6=1為

18、字母的ASCII碼,反之為數(shù)字的ASCII碼。;ORG 0000HSJMP TESTORG 0030HTEST: MOV R0, #DATA1MOV A,R0 ;將DATA1的數(shù)給ACLR C ;LOOP: JB ACC.6,LOOP1 ;是字母,轉(zhuǎn)LOOP1SUBB A,#30H ;是數(shù)字減30HED: MOV DATA1+1,A ;入存SJMP $ ;結(jié)束LOOP1: SUBB A,#31H ;是字母,減31HSJMP ED ;DATA1 EQU 30HEND22編一個(gè)將十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)的子程序。1、編一個(gè)單字節(jié)(內(nèi)部數(shù)據(jù)存儲(chǔ)器30H)的十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)的子程序2、編一個(gè)將

19、內(nèi)部數(shù)據(jù)存儲(chǔ)器30H起始的10個(gè)字節(jié)的十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù),從40H起始存放的子程序1解、一個(gè)單字節(jié)的十六進(jìn)制的數(shù)轉(zhuǎn)成十進(jìn)制數(shù)一般考慮用二個(gè)字節(jié)BCD碼來 存放。 設(shè)轉(zhuǎn)換后的數(shù)存放在R3(高)、R4(低)中。思路;a、一種可將其分離成高、低半字節(jié),高半字節(jié)的數(shù)可通過查表轉(zhuǎn)成BCD碼,而后與低半字節(jié)相加(DA A)調(diào)整;b、也可將高半字節(jié)的數(shù)作為計(jì)數(shù)器,以16(BCD)連續(xù)累加計(jì)數(shù)器的次數(shù),而后與低半字節(jié)相加(DA A)調(diào)整;c、將單字節(jié)的十六進(jìn)制(即為二進(jìn)制數(shù)),反復(fù)用乘2(用自己加自己再進(jìn)行DA A調(diào)整)加低位的算法,進(jìn)行編程。ORG 0000HSJMP TESTORG 0030HTES

20、T: MOV DPTR ,#TAB ; 建立表頭地址MOV A,30HANL A,#0F0HSWAP A ; 高半字節(jié)分離ADD A ,0E0H ; 高半字節(jié)數(shù)乘2MOV B, A ; 暫存MOVC A,A+DPTR ;MOV R3,A ; 取轉(zhuǎn)換后的高半字節(jié)存R3INC DPTR ;MOV A,B ;9/15頁(yè)MOVC A,A+DPTR ;MOV R4,A ; 取轉(zhuǎn)換后的低半字節(jié)存R4 MOV A,30H ;ANL A,#0FH ;ADD A,R4 ;DA A ;MOV R4,A ; 加原數(shù)的低半字節(jié)(DA A) MOV A,R3 ;ADDC A,#00H ;DA A ;MOV R3,A ;

21、RET ;TAB: DB 00H,00H,00H,16H,00H,32H,00H,48H,00H,64HDB 00H,80H,00H,96H,01H,12H,01H,28H,01H,44H DB 01H,60H,01H,76H,01H,92H,02H,08H,02H,24H DB 02H,40H,02H,40H,02H,56HEND23編一程序,將存儲(chǔ)區(qū)DATAl單元開始的20個(gè)單字節(jié)數(shù)據(jù)依次與DATA2單元為起始地址的20個(gè)單字節(jié)數(shù)據(jù)進(jìn)行交換。START:MOVR0,#DATA1;建立源操作數(shù)地址指針設(shè)DATA1、DATA2分別為內(nèi)部RAM30H和50H單元。ORG0000HSJMPSTARTORG0030HSTART:MOVR0,#30H;建立源地址指針MOVR1,#50H;建立目標(biāo)地址指針MOVR6,#20;置計(jì)數(shù)長(zhǎng)度LOOP:MOVA,R0;取源地址數(shù)據(jù)XCHA,R1;MOVR0,A;源地址數(shù)據(jù)與目標(biāo)地址數(shù)據(jù)交換INCR0;源地址指針修正INCR1;目標(biāo)地址指針修正DJNZR6,LOOP;計(jì)數(shù)長(zhǎng)度減1,不等于0繼續(xù)循環(huán)RET;E

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論