第3章思考題及習(xí)題3參考答案_第1頁
第3章思考題及習(xí)題3參考答案_第2頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第3章 思考題及習(xí)題3參考答案一、填空訪問SFR,只能使用 尋址方式。答:直接。指令格式是由 和 組成,也可僅由 組成。答:操作碼,操作數(shù),操作碼。在基址加變址尋址方式中,以 作為變址寄存器,以 或 作為基址寄存器。答:A,PC,DPTR假定累加器A中的內(nèi)容為30H,執(zhí)行指令1000H:MOVC A,A+PC后,把程序存儲器 單元的內(nèi)容送入累加器A中。答:1031H在AT89S52中,PC和DPTR都用于提供地址,但PC是為訪問 存儲器提供地址,而DPTR是為訪問 存儲器提供地址。答:程序,數(shù)據(jù)在寄存器間接尋址方式中,其“間接”體現(xiàn)在指令中寄存器的內(nèi)容不是操作數(shù),而是操作數(shù)的 。答:地址下列程

2、序段的功能是 。答:A的內(nèi)容與B的內(nèi)容互換。PUSHAccPUSH BPOP AccPOP B已知程序執(zhí)行前有(A)=02H,(SP)=52H,(51H)=FFH,(52H)=FFH。下述程序執(zhí)行后, (A)= ,(SP)= ,(51H)= ,(52H)= ,(PC) 。POPDPHPOPDPLMOVDPTR,#4000HRL AMOV B,AMOVCA,A+DPTRPUSHAccMOVA,BINCAMOVCA,A+DPTRPUSHAccRETORG 4000HDB 10H,80H,30H,50H,30H,50H答:(A)=50H,(SP)=50H,(51H)=30H,(52H)=50H,(P

3、C)5030H假定(A)=83H,(R0)=17H,(17H)=34H,執(zhí)行以下指令后,(A)= 。ANLA,#17HORL17H,AXRLA,R0CPLA答:(A)=0CBH。假設(shè)(A)=55H,(R3)=0AAH,在執(zhí)行指令“ANL A,R3”后,(A)= ,(R3)= 。答:(A)=00H,(R3)=0AAH。如果(DPTR)=507BH,(SP)=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,則執(zhí)行下列指令后,(DPH)= ,(DPL)= ,(SP)= 。POPDPHPOP DPLPOP SP答:(DPH)=3CH,(DPL)=5FH,(SP)=50H假定,(SP

4、)=60H,(A)=30H,(B)=70H,執(zhí)行下列指令后,SP的內(nèi)容為 ,61H單元的內(nèi)容為 ,62H單元的內(nèi)容為 。PUSH AccPUSH B答:(SP)=62H,(61H)=30H,(62H)=70H。二、判斷對錯1. 判斷以下指令的正誤。(1)MOV 28H,R2;(2)DEC DPTR;(3)INC DPTR;(4)CLR R0;(5)CPL R5 (6)MOV R0,R1;(7)PHSH DPTR;(8)MOV F0,C;(9)MOV F0,Acc.3;(10)MOVX A,R1;(11)MOV C,30H;(12)RLC R0答:(1)錯(2)錯(3)對(4)錯(5)錯(6)錯

5、(7)錯(8)對(9)錯(10)對(11)對(12)錯。2. 判斷下列說法是否正確。A. 立即數(shù)尋址方式是被操作的數(shù)據(jù)本身就在指令中,而不是它的地址在指令中。B. 指令周期是執(zhí)行一條指令的時間。C. 指令中直接給出的操作數(shù)稱為直接尋址。D. 內(nèi)部寄存器Rn(n=07)可作為間接尋址寄存器。答:A.對;B.對;C.錯;D.錯。3. 以下指令中,屬于單純讀引腳的指令是( )。A. MOV P1,A;B. ORL P1,#0FH;C. MOV C, P1.5; D. ANL P1,#0FH答:C。三、單選1. 程序在運行中,當(dāng)前PC的值是 。 A當(dāng)前正在執(zhí)行指令的前一條指令的地址 B當(dāng)前正在執(zhí)行指令

6、的地址。 C當(dāng)前正在執(zhí)行指令的下一條指令的首地址 D控制器中指令寄存器的地址。答:C2. 判斷下列哪一種說法是正確的? APC是一個可尋址的寄存器 B單片機的主頻越高,其運算速度越快。CAT89S52單片機中的一個機器周期為1s D特殊功能寄存器SP內(nèi)存放的是堆棧棧頂單元的內(nèi)容。答:B3. 對程序存儲器的讀操作,只能使用( )。 A. MOV指令 BPUSH指令CMOVX指令 DMOVC指令答:D。四、程序分析與編程1. 下列程序段經(jīng)匯編后,從1000H開始的各有關(guān)存儲單元的內(nèi)容是什么?ORG 1000HTAB1 EQU 1234HTAB2 EQU 3000HDB MAINDW TAB1,TA

7、B2,70H答:從1000H開始的各有關(guān)存儲單元的內(nèi)容(16進(jìn)制)如下:4DH,41H,49H,4EH,12H,34H,30H,00H,00H,70H 2. 編寫程序,將內(nèi)部RAM中45H單元的高4位清“0”,低4位置“1”。答:參考程序如下:MOVA,45HANLA,#0FHORLA,#0FHMOV45H,A3. 已知程序執(zhí)行前有A=02H,SP=42H,(41H)=FFH,(42H)=FFH。下述程序執(zhí)行后, A=( );SP=( );(41H)=( );(42H)=( );PC=( )。POP DPHPOP DPLMOV DPTR,#3000HRL AMOV B,AMOVC A,A+DP

8、TRPUSH AccMOV A,BINC AMOVC A,A+DPTRPUSH AccRETORG 3000HDB 10H,80H,30H,80H,50H,80H答:(A)=80H ,(SP)=40H,(41H)=50H,(42H)=80H ,(PC)=8050H4. 編寫程序,查找在內(nèi)部RAM的30H50H單元中是否有0AAH這一數(shù)據(jù)。若有,則將51H單元置為“01H”;若未找到,則將51H單元置為“00H”。答:參考程序如下:START:MOVR0,#30HMOVR2,#20HLOOP:MOVA,R0CJNEA,#0AAH,NEXTMOV51H,#01HLJMPEXITNEXT:INCR0

9、DJNZR2,LOOPMOV51H,#00HEXIT:RET5. 寫出完成如下要求的程序段,但是不能改變未涉及位的內(nèi)容。A. 把ACC.3, ACC.4,ACC.5和 ACC.6清“0”。B. 把累加器A的中間4位清“0”。C. 把ACC.2和 ACC.3置“1”。答: A. ANL A,#87HB.ANL A,#0C3HC.ORL A,#0CH6. 若SP=60H,標(biāo)號LABEL所在的地址為3456H。LCALL指令的地址為2000H,執(zhí)行如下指令:2000H LCALL LABEL后(1)堆棧指針SP和堆棧內(nèi)容發(fā)生了什么變化?(2)PC的值等于什么?(3)如果將指令LCALL直接換成ACA

10、LL是否可以?(4)如果換成ACALL指令,可調(diào)用的地址范圍是什么?答:(1)SP=SP+1=61H(61H)=PC的低字節(jié)=03H SP=SP+1=62H(62H)=PC的高字節(jié)=20H(2)PC=3456H(3)不可以(4)2KB2048 Byte7. 試編寫程序,查找在內(nèi)部RAM的20H40H單元中出現(xiàn)“00H”這一數(shù)據(jù)的次數(shù),并將查找到的結(jié)果存入41H單元。答:參考程序如下:START:MOV41H,#0MOVR0,#20HMOVR2,#20HLOOP:MOVA,R0JNZNEXTINC41HNEXT:INCR0DJNZR2,LOOPRET8. 對例3-22中的程序進(jìn)行修改,使其達(dá)到精

11、確的50ms延時時間。答:原來的程序: ORG 0100HD50ms:MOV R7,#200;執(zhí)行時間1sD1:MOV R6,#125;執(zhí)行時間1sD2:DJNZ R6,D2;指令執(zhí)行1次為2s,總計 1252=250sDJNZ R7,D1;指令執(zhí)行時間2s,本循環(huán)體執(zhí)行200次RET;指令執(zhí)行時間2s可對程序做如下修改:ORG 0100HD50ms: MOV R7, #200D1: MOV R6, #123 ;將原來的立即數(shù)125改為123 D2: DJNZ R6, D2 NOP ;增加的指令 DJNZR7, D1 RET程序修改后的延時時間為:1+(1+123*2+1+2)*200+2=5

12、0003s=50.003ms9. 借助表3-2,對如下指令代碼(十六進(jìn)制)進(jìn)行手工反匯編。FFH,C0H,E0H,E5H,F(xiàn)0H,F0H答:MOVR7,APUSHAccMOVA,BMOVXDPTR,A五、簡答1. 說明偽指令的作用?!皞巍钡暮x是什么?常用偽指令有哪些?其功能如何?答:偽指令是程序員發(fā)給匯編程序的命令,只有在匯編前的源程序中才有偽指令,即在匯編過程中的用來控制匯編過程的命令。所謂“偽”是體現(xiàn)在匯編后,偽指令沒有相應(yīng)的機器代碼產(chǎn)生。常用偽指令及功能如下: ORG(ORiGin)匯編起始地址命令;END(END of assembly)匯編終止命令;EQU(EQUate)標(biāo)號賦值命

13、令;DB(Define Byte)定義數(shù)據(jù)字節(jié)命令;DW(Define Word)定義數(shù)據(jù)字命令;DS(Define Storage)定義存儲區(qū)命令;BIT 位定義命令2. 解釋下列術(shù)語: 手工匯編、機器匯編、反匯編答:手工匯編:通過查指令的機器代碼表(表3-2),逐個把助記符指令“翻譯”成機器代碼,再進(jìn)行調(diào)試和運行。這種人工查表“翻譯”指令的方法稱為“手工匯編”。機器匯編:借助于微型計算機上的軟件(匯編程序)來代替手工匯編。通過在微機上運行匯編程序,把匯編語言源程序翻譯成機器代碼。反匯編:將二進(jìn)制的機器碼程序翻譯成匯編語言源程序的過程稱為“反匯編”。3. 設(shè)計子程序時應(yīng)注意哪些問題?答:編寫

14、子程序時應(yīng)注意以下問題:子程序的第一條指令前必須有標(biāo)號。主程序調(diào)用子程序,有如下兩條子程序調(diào)用指令: 絕對調(diào)用指令A(yù)CALL addr11。被調(diào)用的子程序的首地址與絕對調(diào)用指令的下一條指令的高5位地址相同,即只能在同一個2KB區(qū)內(nèi)。 長調(diào)用指令LCALL addr16。addr16為直接調(diào)用的目的地址,被調(diào)用的子程序可放置在64KB程序存儲器區(qū)的任意位置。子程序結(jié)構(gòu)中必須用到堆棧,用來保護(hù)斷點和現(xiàn)場保護(hù)。子程序返回時,必須以RET指令結(jié)束。子程序可以嵌套,但要注意堆棧的沖突。 4. 為什么對基本型的8051子系列單片機,其寄存器間接尋址方式(例如MOV A,R0)中,規(guī)定R0或R1的內(nèi)容不能超過7FH?

溫馨提示

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

評論

0/150

提交評論