《單片機》編程題題庫答案_第1頁
《單片機》編程題題庫答案_第2頁
《單片機》編程題題庫答案_第3頁
《單片機》編程題題庫答案_第4頁
《單片機》編程題題庫答案_第5頁
免費預覽已結束,剩余59頁可下載查看

下載本文檔

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

文檔簡介

1、單片機原理及應用編程題題庫參考答案六.編程(每題10分)1、內部RAM30H和31H單元中存放著2個0-9的ASCII碼(髙位字節在前),請將其轉換為壓縮BCD碼(髙位在前)并存入外部RAM 2300H單元中。解: ORG 0HLJMP0RGSTART: MOVANLSWAPMOVMOVANLORLMOVSTART30HA, 30HA, #OFHARO, AA,31HA, #OFHA, RODPTR, #2300HMOVX DPTR, AEND評分辦法:不要求寫出程序的注釋。程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫 對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-

2、3分。2、將存放在內部RAM 30H-35H單元的壓縮型BCD碼轉換成相應的ASCII碼,依次存放到外部RAH2100H開始的單元區中。ORGOHLJMPSTARTORG30HSTART: MOVRO, #30HMOVR2, #06HMOVDPTR, S2100HLOOP: MOVA, R0SWAPAANLA, #OFHORLA, #30HMOVXDPTR, AINCDPTRMOVA, R0ANLA, #0FHORLA,#30HMOVX©DPTR, AINCDPTRINCRODJNZR2, LOOPSJMP$END評分辦法:不要求寫岀程序的注釋。程序設計思路正確可得5分,指令完全寫對

3、可得10分。若僅寫 對少咼指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。3.內部RAM 20H和30H開始的單元分別存放著16個16進制數,請將對應單元的內容相加(不考 慮溢出),并將和存入外部RAH 2000H開始的單元中。解:0RG 0START:LOOP:LJMP STARTORG 30HMOV R0,#20HMOV R1,#3OHMOV DPTR,#2000HMOV R2,#08H;每個單元存放2個16進制數,故16個16進制數占用8個單元MOV A, R0ADD A, R1MOVX DPTR,AINCROINCR1INCDPTRDJNZR2, LOOPSJMP $EN

4、D評分辦法:不要求寫岀程序的注釋。程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫 對少量指令,可酌情給1-3分:若僅有少量指令寫錯,可酌情扣1-3分。4、請編寫多字節無符號數減法程序。被減數存放在內部RAH20H開始的8個單元中,減數存放在內 部RAM 30H開始的8個單元,請將差存放到外部RAM 2000H開始的8個單元中,借位存放到0V標志中。 注意:所有數據均按照從低字節到髙字節的順序存放。LJMPSTARTORG30HMOVRO,#20HMOVRl, #30HMOVDPTR,#2000HMOVR2,#08HCLRCMOVA, R0SUBBA, R1MOVXDPTR,AINCR

5、OINCR1INCDPTRDJNZR2, LOOPMOVOV,CSJMPSENDSTART:LOOP:ORG 0評分辦法:不要求寫出程序的注釋。程序設訃思路正確可得5分,指令完全寫對可得10分。若僅寫 對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。5、內部RAM 40H和41H單元中存放著2個0-9的ASCII碼(髙位字節在前),請將其轉換為壓縮BCD 碼(高位在前)并存入外部RAM 2000H單元中。解: ORG 0HLJMPORGSTART: MOVANLSTART30HA, 40HA, #OFHSWAP AMOV RO,AMOV A,41HANLA, #OFHORL

6、A, ROMOV DPTR, #2000HMOVX DPTR,AEND評分辦法:不要求寫岀程序的注釋。程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫 對少量指令,可酌情給1-3分:若僅有少量指令寫錯,可酌情扣1-3分。6、將存放在內部RAM 20H-2FH單元的壓縮型BCD碼(髙位在前)轉換成相應的ASCII碼,依次存放到 外部RAM 1000H開始的單元區中。ORG OHLJMP STARTORG 30HSTART:LOOP:MOVRO, #20HMOVR2, #10HMOV DPTR, S1000HMOV A, R0SWAP AANL A,#OFHORL A,#30H (或 AD

7、D A, #30H)MOVX ©DPTR, AINC DPTRMOV A, R0ANL A,#OFHORL A,#30H (或 ADD A, #30H)MOVX ©DPTR, AINC DPTRINC RODJNZ R2, LOOPSJMP $END評分辦法:不要求寫出程序的注釋。程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫 對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。7、內部RAM 30H和38H開始的單元分別存放著8個壓縮BCD碼,請將對應單元的內容相加(不考 慮溢岀),并將和存入外部RAM 1000H開始的單元中。解:ORG 0LJ

8、MP STARTORG 30HSTART:MOVMOVMOVMOVLOOP: MOVADDDAMOVXINCINCINCDJNZSJMPENDRO, #30HR1,#38HDPTR, S1OOOHR2,#08A, ©ROA, R1ADPTR, AROR1DPTRR2,LOOP$評分辦法:不要求寫出程序的注釋。程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫 對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。8、請編寫多字節無符號數加法程序。被加數存放在內部RAH20H開始的8個單元中,加數存放在內 部RAM 30H開始的8個單元,請將和存放到外部RAM 20

9、00H開始的8個單元中,進位存放到F0標志中。 注意:所有數據均按照從低字節到髙字節的順序存放*LJMPSTARTORG30HMOVRO,#20HMOVR1,#3OHMOVDPTR,S2000HMOVR2,#08HCLRCMOVA, R0ADDCA, R1MOVXDPTR,AINCROINCR1INCDPTRDJNZR2, LOOPSTART:LOOP:ORG 0MOV FO,CSJMP $END評分辦法:不要求寫岀程序的注釋。程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫 對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。9、兩個8字節壓縮BCD碼分別存放在內部R

10、AM 30H和40H開始的連續單元中(低位字節在前),請 將二者求和(不考慮溢出情況)并將和存入外部RAM 1000H開始的單元中。解:ORG0MOVRO, #30HMOVR1,#4OHMOVDPTR, #1000HMOVR2, #8CLRCLOOP:MOVA, R0ADDCA, R1DAAMOVX©DPTR, AINCROINCR1INCDPTRDJNZR2,LOOPSJMPEND$評分辦法:程序設汁思路正確可得5分:對于僅寫岀部分指令的學生可酌情給1一4分:程序編制正 確可得滿分,若存在少疑錯誤,可酌情扣1-3分。10、將存放在內部RAM 20H-2FH單元的十六進制數轉換成AS

11、CII碼,依次存放到外部RAM 2000H開始的單元中。解:MOVRO, #20HMOVR2, #16MOVDPTR, #2000HMOVR3, DPHMOVR4, DPLLOOP:MOVA, R0ANLA, #OFHMOVDPTR, #TABMOVCA,SA+DPTRMOVDPH, R3TAB:MOVDPL, R1MOVXDPTR, AINCDPTRMOVR3, DPHMOVR4, DPLMOVA, R0SWAPAANLA, #OFHMOVDPTR, #TABMOVCA, 0A+DPTRMOVDPH, R3MOVDPL, R4MOVXDPTR, AINCDPTRMOVR3, DPHMOVR4

12、, DPLINCRODJNZR2, LOOPSJMP$DB01234567;END評分辦法:程序設計思路正確可得5分;對于僅寫出部分指令的學生可酌情給1一4分:程序編制正 確可得滿分,若存在少量錯誤,可酌情扣1-3分。11、 放在前),解:ORG0MOVRO, #30HMOVRl, #40HMOVDPTR, S2200HMOVR2,#8CLRCMOVXA, ©DPTRADDCA, ©ROMOVR1,AINCROINCR1LOOP:內部RAM 30H和外部RAM 2200H開始的單元分別存放著兩個8字節十六進制數(低位字節存 請將二者相加(不考慮溢出情況),并將和存入內部RA

13、M 40H開始的單元中。INCDPTRDJNZ R2, LOOP SJMP$評分辦法:程序設訃思路正確可得5分;對于僅寫出部分指令的學生可酌情給1一4分;程序編制正 確可得滿分,若存在少疑錯誤,可酌情扣1-3分。12、請編寫多字節無符號數減法程序。被減數存放在內部RAM30H開始的8個單元中,減數存放在 內部RAM38H開始的8個單元,請將差存放到外部RAM 1000H開始的8個單元中,借位存放到F0標志中。 注意:所有數據均按照從低字節到高字節的順序存放。解:ORG0LJMPSTARTORG30HSTART:MOVRO, #30HMOVRl, #38HMOVDPTR, S1000HMOVR2

14、,#8CLRCLOOP:MOVA, R0SUBBA, R1MOVX©DPTR, AINCROINCR1INCDPTRDJNZR2,LOOPMOVC, FOSJMP$評分辦法:程序設訃思路正確可得5分;對于僅寫出部分指令的學生可酌情給1一4分;程序編制正 確可得滿分,若存在少疑錯誤,可酌情扣1-3分。13、請編寫多字節無符號數減法程序。被減數存放在內部RAM20H開始的16個單元中,減數存放在 內部RAM 30H開始的16個單元,請將差存放到外部RAM 2000H開始的16個單元中,借位存放到0V標志 中。注意:所有數據均按照從低字節到髙字節的順序存放。解:ADDR1EQU20HADD

15、R2EQU30HLENEQU16ADDR3EQU2000HORG0LJMPORGSTART30HSTART:MOVRO, #ADDR1MOVRl, #ADDR2MOVDPTR, SADDR3MOVR2, #LENCLRCLOOP:MOVA, R0SUBBA, R1MOVXDPTR, AINCROINCR1INCDPTRDJNZR2, LOOPMOVOV,CSJMP$END評分辦法:程序設訃思路正確可得5分,指令完全寫對可得10分。不要求使用偽指令。若僅寫對少 量指令,可酌情給1-3分:若僅有少量指令寫錯,可酌情扣1-3分。14、將存放在內部RAM 20H-3FH單元的壓縮BCD碼轉換成ASCI

16、I碼.依次存放到外部RAM 2300H開 始的單元中。(注:每個單元均先轉換髙四位)解:LENEQU20HADDR1EQU20HADDR2EQU2300HORG0LJMPSTARTORG30HSTART:MOVRO,#ADDR1MOVDPTR, #ADDR2MOVR2, #LENLOOP:MOVA, R0ANLA, #0F0HSWAPAORLA, #30H (或 ADD A, #30H)MOVX©DPTR,AINCDPTRMOVA, R0ANLA, #OFHORLA, #30H (或 ADD A, #30H)MOVX6DPTR, AINCDPTRINCRODJNZR2,LOOPSJM

17、P$END評分辦法:程序設汁思路正確可得5分,指令完全寫對可得10分。不要求使用偽指令。若僅寫對少量 指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。15、將存放在內部RAM 30H-35H單元的十六進制數轉換成相應的ASCII碼,依次存放到外部RAM 1100H開始的單元區中。(注:每個字節轉換時先轉換髙四位)解:ORG0MOVRO, #30HMOVDPTR, #1100HMOVR2,#6LOOP:MOVA, R0;取需要轉換的數ANLA, #OFOH;屏蔽低4位SWAPAPUSHDPHPUSHDPL;保護目的地址MOVDPTR, STABMOVCA, ©A+DPTR

18、;査表得ASCII碼POPDPLPOPDPH;恢復目的地址MOVXDPTR, A;存轉換后的ASCII碼INCDPTR;修改目的地址指針MOVA, R0;取需要轉換的數ANLA, #OFH;屏蔽高4位PUSHDPHPUSHDPL;保護目的地址MOVDPTR, STABMOVCA, A+DPTR;查表得ASCII碼POPDPLPOPDPH;恢復目的地址MOVX©DPTR,AINCDPTR;修改目的地址指針INCRO;修改源地址指針DJNZR2,LOOP;未轉換完則繼續SJMP$DB'0123456789ABCDEF'TAB:END評分辦法:程序設汁思路正確可得5分,指令

19、完全寫對可得10分°若僅寫對少量指令,可酌情給1-3 分;若僅有少量指令寫錯,可酌情扣1-3分匚16、內部RAM 30H開始的單元中存放著16個0-9的ASCII碼(高位字節在前),請將英轉換為壓縮BCD碼(髙位在前)并存入外部RAM 1000H開始的單元中。解:ORG0MOVRO, #30HMOVDPTR, #1000HMOVR2,#8;16個ASCII碼轉換為8個壓縮BCD碼MOVA, R0ANLA, #OFH;屏蔽髙4位得到BCD碼SWAPAMOVR1,AINCRO;指向下一個ASCII碼MOVA, R0ANLA, #OFH屏蔽高4位得到BCD碼ORLA, R1合成壓縮BCD碼

20、MOVX©DPTR, A存壓縮BCD碼INCDPTRINCRODJNZR2,LOOPSJMP$ENDLOOP:評分辦法:程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3 分;若僅有少量指令寫錯,可酌情扣1-3分。17、設有兩個長度為16字節的一維數組(數組的每個元素為1個字右),分別存放在外部RAM 0200H和0300H為首址的存儲區域中,試編寫程序求英對應項之和(不考慮溢岀的情況),結果存放在以0400H 為首址的外部RAM中。解:參考程序淸單如下:ORG0MOVR2, #16;數組長度為16個字節MOVR3, #02H;數組1的首地址高8位MO

21、VR4, #03H;數組2的首地址髙8位MOVR5, #04H;和數組的首地址髙8位MOVDPL, #0;數據指針低8位淸零LOOP:MOVDPH, R3MOVXA, DPTR;取被加數MOVR1,A;存被加數MOVDPH, R4MOVXA,DPTR;取加數ADDA, R1;求和MOVDPH, R5MOVXDPTR, A;存和INCDPL;指向下一字節DJNZENDR2,LOOP;未加完則循環評分辦法:程序設訃思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3 分:若僅有少量指令寫錯,可酌情扣1-3分。18、編程求內部RAM中40H4FH共16個單元中的內容的和(結果為

22、2字節),并將和放入50H和51H單元中(髙8位在50H)o 解:參考程序淸單如下:LJMPSTARTORG30HMOVRO, #40HMOVR2,#16MOVR3, #0CLRACLRCADDA, R0JNCNEXTINCR3ORG 0START:LOOP:數據區首地址送R0單元數送R2和的高8位淸零和的低8位淸零求和沒有進位則轉移和的高8位存儲單元內容加1NEXT: INCRO;指向下一個單元DJNZR2,LOOP;沒加完則循環,和在尺3和人中MOV51H,A;存低8位結果MOV50H,R3;存高8位結果SJMP$END評分辦法:程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫對少

23、量指令,可酌情給1-3 分;若僅有少量指令寫錯,可酌情扣1-3分。19、有一個長度為16字節的ASCII碼字符串存放在外部RAM 1000H為首址的存儲區域中,字符串中 的每一個字符均不相同,試編寫程序查找字符串中是否存在ASCII碼“9”。如果在字符串中存在ASCII 碼“9”,則將其存儲單元的地址存放到內部RAM 30H和31H單元中(高8位地址在30H單元中),同時將 0V標志位淸零。否則,將30H和31H單元的內容淸零,并將0V標志位置“1”。解:ORG0MOVSP,#60HMOVDPTR, #1000HMOVR2,#16LOOP:HOVXA,DPTRCJNEA, #39H, EXIT

24、MOV30H,DPHMOV31H, DPLCLROVSJMPSEXIT:INCDPTRDJNZR2, LOOPMOV30H, #0MOV31H, #0SETBOVSJMPENDs評分辦法:程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3 分:若僅有少量指令寫錯,可酌情扣1-3分。20、有兩個8字節的16進制數a和b,它們分別存放在內部RAM中30H37H和40H47H的單元中 (高位字節在前)。請編程求a-b,并將差存入30H開始的內部RAH單元中(高位字節在前)。若差小于零 則將F0標志位置 T,否則淸零。解:設計思路:從16進制數的最低位字節(37H和47

25、H)開始相應字節帶借位相減,然后修改地址指針在對次低位字節進行相減,一共循環8次完成兩個8字節16進制數的相減。最后將Cy標志的內容傳 送給F0標志位即可。LOOP:ORG0MOVRO, #37HMOVR1,#47HMOVR2,#8CLRCMOVA, R0SUBBA, R1MOVR0, ADECRODECR1DJNZR2, LOOPMOVFO,CSJMP$END評分辦法:程序設汁思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3 分;若僅有少疑指令寫錯,可酌情扣1-3分。21、若外部 RAM 的(3000H) =X,(3001H)二Y,編程實現Z=X*X+2Y,并將結果

26、存到片內RAM的40H單元(設 Z<256 )o解:XEQUYEQUZEQUORGMOVXOVMMOVMOVINCXOVMMOV泌ADDMOVm3000H3001H40H0DPTR, #XA, ©DPTRB, AABRO, ADPTRA, ©DPTRB, #2ABA, ROZ,A變雖:X的地址送DPTR取變量X變量X的值送給B寄存器求X*X,根據題意知積為1字節(在A中)X*X的結果存入R0中指向變量Y取變量Y求姑Y,根拯題意知積為1字節(在A中)求 X*X+2*Y和存入40H單元停機END評分辦法:不要求寫出程序的注釋和使用偽指令。程序設計思路正確可得5分,指令完全

27、寫對可得 10分匚若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。22、設外部RAH 2000H單元為數拯塊的起始地址.數據塊長度為10,試編程求數據塊中的最小值, 存入內部RAM 30H單元。解:設計思路:將數據塊的第1個數據放入結果單元,然后依次與剩余的9個數據進行比較。如果新 的數據比結果單元中的數據還小則將該數據存入結果單元,9次比較完成則結果單元中的數據就是最小 值。ORG0MOVDPTR, #2000HMOVXA, DPTR;取數據塊的第一個數MOV30HfA;存入結果單元MOVR2,#9;共比較9次INCDPTR;指向第2個數LOOP:CLRCMOVXA

28、, ©DPTRSUBBA, 30HJNCLP;沒有借位則說明結果單元的數小,不用更換最小值MOVXA, ©DPTRMOV30H,A;更換最小值LP:INCDPTR;指向下一個數DJNZR2,LOOP;沒有比較完則繼續循環SJMP$;停機END評分辦法:不要求寫出程序的注釋。程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。23、若外部RAM的(1000H) =X, (1001H)二Y,請編程實現Z=2X+Y*Y+5 (設Z<65536),并將結果保存 到片內RAM的30H和31H單元(31H單元

29、存放結果的高8位,30H單元存放結果的低8位)。解:XEQU1000HZHEQU31HZLEQU30HORG0MOVZH, #0;結果單元淸零MOVZL, #0MOVDPTR, S1000HH0VXA, DPTR;取丫的值MOVB,#2MULAB計算2XADDA, ZLMOVZL,A存結果低8位MOVA,B取乘積髙8位ADDA, ZHMOVZH,A存結果髙8位INCDPTR指向YHOVXA,DPTR取YMOVB,AMULAB計算¥*¥ADDA, ZL計算結果低8位MOVZL,AMOVA,B取乘積的髙8位ADDCA, ZH計算結果髙8位,注意必須帶進位加MOVZH,AMOVA

30、, ZLADDA, #5il算結果加5MOVZL,AMOVZH,A存結果低8位ADDCA, #0將低8位進位加到結果高8位,注意必須帶進位加MOVZH,A存結果高8位END評分辦法:不要求寫出程序的注釋和使用偽指令。程序設訃思路正確可得5分,指令完全寫對可得 10分。若僅寫對少量指令,可酌情給1-3分:若僅有少量指令寫錯,可酌情扣1-3分。24. 設外部RAM 1000H單元為數據塊的起始地址,數據塊長度為60字節,試編程求數據塊中所有數 據的和,并將苴存入內部RAM 30H和31H單元(30H單元存放和的低8位,31H單元存放和的高8位)。解:RDDENA LEQUEQUZHZLEQUEQU

31、ORG100HH;數據塊首地址60;數據塊長度31H;和的髙8位地址30H;和的低8位地址MOVDPTR,#ADDR數據塊首地址送DPTRMOVR7,#LEN數據塊長度送R7MOVZH, #0結果單元淸零MOVZL, #0LOOP:MOVXA, DPTR取數據ADDA, ZL將數據加到結果單元的低8位MOVZL,A存結果低8位MOVA, ZH取結果高8位ADDCA, #0將低8位計算的進位加到高8位中MOVZH,A存高8位INCDPTR修改地址指針,指向下一個數據DJNZR7,LOOP沒有計算完則繼續SJMPSEND評分辦法:不要求寫出程序的注釋和使用偽指令。程序設計思路正確可得5分,指令完全

32、寫對可得 10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。25、若外部 RAM 的(1000H)二X,內部 RAM (30H) =Y> 請編程實現 Z=X*X+3Y+18 (設 ZC65536),并將 結果保存到片內RAH的40H和41H單元(41H單元存放結果的髙8位,40H單元存放結果的低8位)。解:XEQU1000HYEQU30HZHEQU41HZLEQU40HORG0MOVZH, #0;結果單元淸零MOVZL, #0MOVDPTR,S1000HHOVXA, ©DPTR;取乂的值MOVB,AMULAB;計算x*xADDA, ZLMOVZL

33、,A;存結果低8位MOVA,B;取乘積高8位ADDA, ZHMOVZH,A;存結果髙8位MOVXA,Y;取丫MOVB, #3MULAB;計算3*YADDA, ZL;計算結果低8位MOVZL,AMOVA,B;取乘積的高8位ADDCA, ZH;計算結果高8位,注意必須帶進位加MOVZH,AMOVA, ZLADDA, #18;計算結果加18MOVZL,A;存結果低8位MOVA, ZH;取結果髙8位ADDCA, #0;將低8位進位加到結果高8位,注意必須帶進位加MOVZH,A;存結果高8位END評分辦法:不要求寫出程序的注釋和使用偽指令。程序設訃思路正確可得5分,指令完全寫對可得 10分。若僅寫對少量

34、指令,可酌情給1-3分:若僅有少量指令寫錯,可酌情扣1-3分。26、若外部RAM的(1000H)二X,請編程實現Y二常+2X+1 (設Y<65536),并將結果保存到片內RAM的 30H和31H單元(31H單元存放結果的高8位,30H單元存放結果的低8位)。解:ORG0MOV30H, #0;結果單元淸零MOV31H, #0MOVDPTR, #1000HMOVA, ©DPTR;取乂的值MOVB,AMULAB;求乂的平方MOV30H,A;存低8位MOVA,BMOV31H,A;存高8位MOVXA, ©DPTR;取乂的值MOVB, #2MOVAB;求2乂ADDA, 30H;求

35、低8位和MOV30H,A;存和的低8位MOVA,B;取積的髙8位ADDCA,31H;求髙8位和MOV31H,A;存和的高8位MOVA, 30HADDA,#l;加1MOV30H,A;存和的低8位MOVA,31HADDCA, #0;和的高8位加上低8位運算的進位MOV31H,A;存和的高8位SJMP$;停機END評分辦法:不要求寫出程序的注釋。程序設訃思路正確可得5分,指令完全寫對可得10分。若僅寫 對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。27、設外部RAM 2000H單元為數據塊的起始地址,數據塊長度為100字節。假設在數據塊中存在唯 一的一個ASCII字符“A”,試

36、編程找到它,并將其在外部RAH的存放地址存入內部RAH30H和31H單元中(30H單元存放地址的髙8位,解:31H單元存放地址的低8位)。ORG0MOVDPTR, S2000H;數據塊首地址送DPTRMOVR2,#100;數據塊長度送R2MOVXA, DPTR;取數據CJNEA, #41H, NEXT;數據不是“A”則轉移MOVA, DPHMOV30H,A;存高8位地址MOVA, DPLMOV31H.A;存低8位地址SJMP$;停機INCDPTR;修改地址指針DJNZR2,LOOP;沒有找到則繼續SJMP$;停機LOOP:NEXT:評分辦法:不要求寫岀程序的注釋。程序設訃思路正確可得5分,指令

37、完全寫對可得10分。若僅寫 對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。28、若內部RAM的(20H)二a,外部RAM (1300H) =b,請編程實現y=a2+b3+5 (設*65536),并將結 果保存到片內RAH的30H和31H單元(31H單元存放結果的高8位,30H單元存放結果的低8位)。解:ORGMOVA, 20H;取&MOVB,AMULAB;求a2MOV30比A;存和的低8位MOVA,BMOV31比A;存和的高8位MOVDPTR,#1300HMOVXA,DPTR;取匕MOVB,AMULAB;求孑ADDA, 30H;求孑+只MOV30H,AMOVA,B

38、ADDCA,31HMOV31H,AMOVA, 30HADDA, #5;加5MOV30H,AMOVA,31HADDCA, #0;加上低8位的進位MOV31H,ASJMP$;停機END評分辦法:不要求寫出程序的注釋。程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫 對少咼指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。29、若內部RAM的(30H) =X, (31H) =Y,請編程實現Z=XS+5Y (設Z<65536),并將結果保存到片外 RAM的1000H和1001H單元(1001H單元存放結果的髙8位,1000H單元存放結果的低8位)。解:ORG0MOVDPTR,

39、 S1000H;結果地址指針賦值MOVA, 30HMOVB,AMULAB;求片MOVXDPTR,A;存弋低8位INCDPTR;指向結果單元高8位MOVA,BMOVX©DPTR, A;存X高8位DEC器MULDPLA, 31HB, #5AB;指向結果單元低8位;取丫;求5丫MOV RO, AMOVX A,©DPTRADD A,ROMOVX DPTR, AINC DPTRMOVX A,©DPTRADDC A,BMOVX SDPTR, ASJMP $求X2+5Y的低8位和存X:+5Y的低8位和指向結果單元高8位取結果單元高8位求X:+5Y的髙8位和(注意加上低8位的進位

40、)存X:+5Y的髙8位和停機END評分辦法:不要求寫出程序的注釋。程序設訃思路正確可得5分,指令完全寫對可得10分。若僅寫 對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。30、設內部RAM 20H單元為數據塊的起始地址,數據塊長度為32字節。請將整個數據塊求和(共32字節的數據求和,設和小于65536),并把和存入外部RAM 1000H和1001H的單元中(和的高8位存入1001H 單元)。解:ORG0MOVRO, #20H;數據塊首地址送R0MOVR2, #32;數據塊長度送R2CLRA;累加器淸零MOVDPTR, #1000H;指向和的低8位MOVX©DPT

41、R, A;和的低8位淸零INCDPTR;指向和的高8位MOVXDPTR, A;和的高8位淸零DECDPL;指向和的低8位LOOP: MOVA, R0;取數據MOVR1,A;暫存在R1MOVXA, ©DPTR;取和的低8位ADDA, R1;求和MOVX«DPTR, A;存和的低8位INCDPTR;指向和的高8位MOVXA, ©DPTR;取和的高8位ADDCA, #0;將和的低8位的進位加到髙8位中M0VXDPTR, A;存和的高8位DECDPL;指向和的低8位INCRO;數據塊指針加1DJNZR2, LOOP;沒有加完則循環SJMPS;停機END評分辦法:不要求寫出

42、程序的注釋。程序設訃思路正確可得5分,指令完全寫對可得10分。若僅寫 對少咼指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。31、若內部RAM的(20H) =a, (21H) =b,請編程實現y=a2+b2 (設y<65536),并將結果保存到片外RAM的2000H和2001H單元(2001H單元存放結果的高8位,2000H單元存放結果的低8位)。解:ORG0MOVDPTR,S2000H結果單元低8位地址送DPTRMOVA, 20H取a的值MOVB,AMULAB求a:MOVXDPTR, A存a:低8位MOVA,BINCDPTR指向結果單元高8位MOVXDPTR, A存結果高

43、8位DECDPL指向結果單元低8位MOVA,21H取b的值MOVB,AMULAB求XMOVRO, A暫存X的低8位MOVXA,DPTR取結果低8位ADDA, RO求低8位的和MOVX©DPTR, A存結果低8位INCDPTR指向結果單元髙8位MOVXA,DPTR取結果髙8位ADDCA,B加上X的高8位和低8位求和的進位MOVXDPTR, A存結果髙8位SJMPS停機END評分辦法:不要求寫出程序的注釋,也不要求使用子程序。程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。32、將內部RAM 40H為起始地址的3

44、2個連續單元中的十六進制數轉換成ASCII碼存入外部RAH 3000H開始的存儲單元中。解:0RG0MOVRO, #40H源數據塊首地址送ROMOVR2, #32數據塊長度送R2MOVDPTR, #3000H目的數據塊首地址送DPTRLOOP:MOVA, R0取待轉換數據ANLA, #OFOH取髙四位數拯SWAPA髙低四位數據交換PUSHDPH保護目標地址指針PUSHDPLMOVDPTR, STAB數據指針指向表格首地址MOVCA,SA+DPTR查表得到ASCII碼POPDPL恢復目標地址指針POPDPHMOVXDPTR, A存轉換結果INCDPTR指向下一個存儲單元MOVA, R0取待轉換數

45、據ANLA, #OFH取低四位數據PUSHDPH保護目標地址指針PUSHDPLMOVDPTR, STAB數拯指針指向表格首地址MOVCA,A+DPTR查表得到ASCII碼POPDPL恢復目標地址指針POPDPHMOVX©DPTR, A存轉換結果INCDPTR指向下一個存儲單元INCRO指向下一個待轉換數據DJNZR2, LOOP沒有轉換完則繼續SJMP$停機TAB: DB'0123456789ABCDEF'END評分辦法:不要求寫出程序的注釋。程序設訃思路正確可得5分,指令完全寫對可得10分。若僅寫 對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。

46、33、設內部RAH 20H單元為數據塊的起始地址,數據塊長度為10H,數據為8位無符號數,試編程找岀數據塊中的最小值,并將英存入40H單元。 解:0RG0MOVRO,#20H數據區首地址送ROMOVR2,#10H數據塊長度送R2MOV40H, #0FFH結果單元送入最大值LOOP: MOVA, R0取數據CLRC淸進位SUBBA, 40H利用減法判斷該數據是否比最小值單元的數小?JNCNEXT如果沒有借位說明待比較數據比最小值單元的值大則轉移MOVA, R0取最小值MOV40H,A存最小值NEXT: INCRO修改地址指針DJNZR2,LOOP沒有比較完則繼續比較。SJMP$停機END評分辦法:不要求寫出程序的注釋。程序設汁思路正確可得5分,指令完全寫對可得10分。若僅寫 對少量指令,可酌情給1-3分:若僅有少量指令寫錯,可酌情扣1-3分。34. 比較兩個等長ASCII碼字符串是否相等。字符串長度存放在內部RAH 2FH單元,兩字符串分別 存放在內部RAM 30H和40H開始的單元中。如果兩個字符串相等,則CY二1,否則,CY二0。解:ORG0MOVRO, #30H第一個字符串首地址送ROMOVRl, #40H第二個字符串首地址送R1MOVR2, 2FH取字符串長

溫馨提示

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

評論

0/150

提交評論