2023年單片機編程題題庫答案_第1頁
2023年單片機編程題題庫答案_第2頁
2023年單片機編程題題庫答案_第3頁
2023年單片機編程題題庫答案_第4頁
2023年單片機編程題題庫答案_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《單片機原理及應(yīng)用》編程題題庫參考答案六、編程(每題10分)內(nèi)部RAM30H和31H單元中存放著2個0-9的ASCII碼(高位字節(jié)在前),請將其轉(zhuǎn)換為壓縮BCD碼(高位在前)并存入外部RAM2300H單元中。解:ORG0HLJMPSTARTORG30HSTART:MOVA,30HANLA,#0FHSWAPAMOVR0,AMOVA,31HANLA,#0FHORLA,R0MOVDPTR,#2300HMOVX@DPTR,AEND評分辦法:不規(guī)定寫出程序的注釋。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。2、將存放在內(nèi)部RAM30H-35H單元的壓縮型BCD碼轉(zhuǎn)換成相應(yīng)的ASCII碼,依次存放到外部RAM2100H開始的單元區(qū)中。ORG0HLJMPSTARTORG30HSTART:MOVR0,#30HMOVR2,#06HMOVDPTR,#2100HLOOP:MOVA,@R0SWAPAANLA,#0FHORLA,#30HMOVX@DPTR,AINCDPTRMOVA,@R0ANLA,#0FHORLA,#30HMOVX@DPTR,AINCDPTRINCR0DJNZR2,LOOPSJMP$END評分辦法:不規(guī)定寫出程序的注釋。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。3、內(nèi)部RAM20H和30H開始的單元分別存放著16個16進制數(shù),請將相應(yīng)單元的內(nèi)容相加(不考慮溢出),并將和存入外部RAM2023H開始的單元中。解:ORG0LJMPSTARTORG30HSTART:MOVR0,#20HMOVR1,#30HMOVDPTR,#2023HMOVR2,#08H;每個單元存放2個16進制數(shù),故16個16進制數(shù)占用8個單元LOOP:MOVA,@R0ADDA,@R1MOVX@DPTR,AINCR0INCR1INCDPTRDJNZR2,LOOPSJMP$END評分辦法:不規(guī)定寫出程序的注釋。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。4、請編寫多字節(jié)無符號數(shù)減法程序。被減數(shù)存放在內(nèi)部RAM20H開始的8個單元中,減數(shù)存放在內(nèi)部RAM30H開始的8個單元,請將差存放到外部RAM2023H開始的8個單元中,借位存放到OV標志中。注意:所有數(shù)據(jù)均按照從低字節(jié)到高字節(jié)的順序存放。ORG0LJMPSTARTORG30HSTART:MOVR0,#20HMOVR1,#30HMOVDPTR,#2023HMOVR2,#08HCLRCLOOP:MOVA,@R0SUBBA,@R1MOVX@DPTR,AINCR0INCR1INCDPTRDJNZR2,LOOPMOVOV,CSJMP$END評分辦法:不規(guī)定寫出程序的注釋。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。5、內(nèi)部RAM40H和41H單元中存放著2個0-9的ASCII碼(高位字節(jié)在前),請將其轉(zhuǎn)換為壓縮BCD碼(高位在前)并存入外部RAM2023H單元中。解:ORG0HLJMPSTARTORG30HSTART:MOVA,40HANLA,#0FHSWAPAMOVR0,AMOVA,41HANLA,#0FHORLA,R0MOVDPTR,#2023HMOVX@DPTR,AEND評分辦法:不規(guī)定寫出程序的注釋。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。6、將存放在內(nèi)部RAM20H-2FH單元的壓縮型BCD碼(高位在前)轉(zhuǎn)換成相應(yīng)的ASCII碼,依次存放到外部RAM1000H開始的單元區(qū)中。ORG0HLJMPSTARTORG30HSTART:MOVR0,#20HMOVR2,#10HMOVDPTR,#1000HLOOP:MOVA,@R0SWAPAANLA,#0FHORLA,#30H(或ADDA,#30H)MOVX@DPTR,AINCDPTRMOVA,@R0ANLA,#0FHORLA,#30H(或ADDA,#30H)MOVX@DPTR,AINCDPTRINCR0DJNZR2,LOOPSJMP$END評分辦法:不規(guī)定寫出程序的注釋。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。7、內(nèi)部RAM30H和38H開始的單元分別存放著8個壓縮BCD碼,請將相應(yīng)單元的內(nèi)容相加(不考慮溢出),并將和存入外部RAM1000H開始的單元中。解:ORG0LJMPSTARTORG30HSTART:MOVR0,#30HMOVR1,#38HMOVDPTR,#1000HMOVR2,#08LOOP:MOVA,@R0ADDA,@R1DAAMOVX@DPTR,AINCR0INCR1INCDPTRDJNZR2,LOOPSJMP$END評分辦法:不規(guī)定寫出程序的注釋。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。8、請編寫多字節(jié)無符號數(shù)加法程序。被加數(shù)存放在內(nèi)部RAM20H開始的8個單元中,加數(shù)存放在內(nèi)部RAM30H開始的8個單元,請將和存放到外部RAM2023H開始的8個單元中,進位存放到F0標志中。注意:所有數(shù)據(jù)均按照從低字節(jié)到高字節(jié)的順序存放。ORG0LJMPSTARTORG30HSTART:MOVR0,#20HMOVR1,#30HMOVDPTR,#2023HMOVR2,#08HCLRCLOOP:MOVA,@R0ADDCA,@R1MOVX@DPTR,AINCR0INCR1INCDPTRDJNZR2,LOOPMOVF0,CSJMP$END評分辦法:不規(guī)定寫出程序的注釋。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。9、兩個8字節(jié)壓縮BCD碼分別存放在內(nèi)部RAM30H和40H開始的連續(xù)單元中(低位字節(jié)在前),請將兩者求和(不考慮溢出情況),并將和存入外部RAM1000H開始的單元中。解:ORG0MOVR0,#30HMOVR1,#40HMOVDPTR,#1000HMOVR2,#8CLRCLOOP:MOVA,@R0ADDCA,@R1DAAMOVX@DPTR,AINCR0INCR1INCDPTRDJNZR2,LOOPSJMP$END評分辦法:程序設(shè)計思緒對的可得5分;對于僅寫出部分指令的學生可酌情給1-4分;程序編制對的可得滿分,若存在少量錯誤,可酌情扣1-3分。10、將存放在內(nèi)部RAM20H-2FH單元的十六進制數(shù)轉(zhuǎn)換成ASCII碼,依次存放到外部RAM2023H開始的單元中。解:MOVR0,#20HMOVR2,#16MOVDPTR,#2023HMOVR3,DPHMOVR4,DPLLOOP:MOVA,@R0ANLA,#0FHMOVDPTR,#TABMOVCA,@A+DPTRMOVDPH,R3MOVDPL,R4MOVX@DPTR,AINCDPTRMOVR3,DPHMOVR4,DPLMOVA,@R0SWAPAANLA,#0FHMOVDPTR,#TABMOVCA,@A+DPTRMOVDPH,R3MOVDPL,R4MOVX@DPTR,AINCDPTRMOVR3,DPHMOVR4,DPLINCR0 DJNZR2,LOOPSJMP$TAB:DB‘ABCDEF’END評分辦法:程序設(shè)計思緒對的可得5分;對于僅寫出部分指令的學生可酌情給1-4分;程序編制對的可得滿分,若存在少量錯誤,可酌情扣1-3分。11、內(nèi)部RAM30H和外部RAM2200H開始的單元分別存放著兩個8字節(jié)十六進制數(shù)(低位字節(jié)存放在前),請將兩者相加(不考慮溢出情況),并將和存入內(nèi)部RAM40H開始的單元中。解:ORG0MOVR0,#30HMOVR1,#40HMOVDPTR,#2200HMOVR2,#8CLRCLOOP:MOVXA,@DPTRADDCA,@R0MOV@R1,AINCR0INCR1INCDPTRDJNZR2,LOOPSJMP$評分辦法:程序設(shè)計思緒對的可得5分;對于僅寫出部分指令的學生可酌情給1-4分;程序編制對的可得滿分,若存在少量錯誤,可酌情扣1-3分。12、請編寫多字節(jié)無符號數(shù)減法程序。被減數(shù)存放在內(nèi)部RAM30H開始的8個單元中,減數(shù)存放在內(nèi)部RAM38H開始的8個單元,請將差存放到外部RAM1000H開始的8個單元中,借位存放到F0標志中。注意:所有數(shù)據(jù)均按照從低字節(jié)到高字節(jié)的順序存放。解:ORG0LJMPSTARTORG30HSTART:MOVR0,#30HMOVR1,#38HMOVDPTR,#1000HMOVR2,#8CLRCLOOP:MOVA,@R0SUBBA,@R1MOVX@DPTR,AINCR0INCR1INCDPTRDJNZR2,LOOPMOVC,F0SJMP$評分辦法:程序設(shè)計思緒對的可得5分;對于僅寫出部分指令的學生可酌情給1-4分;程序編制對的可得滿分,若存在少量錯誤,可酌情扣1-3分。13、請編寫多字節(jié)無符號數(shù)減法程序。被減數(shù)存放在內(nèi)部RAM20H開始的16個單元中,減數(shù)存放在內(nèi)部RAM30H開始的16個單元,請將差存放到外部RAM2023H開始的16個單元中,借位存放到OV標志中。注意:所有數(shù)據(jù)均按照從低字節(jié)到高字節(jié)的順序存放。解:ADDR1EQU20HADDR2EQU30HLENEQU16ADDR3EQU2023HORG0LJMPSTARTORG30HSTART:MOVR0,#ADDR1MOVR1,#ADDR2MOVDPTR,#ADDR3MOVR2,#LENCLRCLOOP:MOVA,@R0SUBBA,@R1MOVX@DPTR,AINCR0INCR1INCDPTRDJNZR2,LOOPMOVOV,CSJMP$END評分辦法:程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。不規(guī)定使用偽指令。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。14、將存放在內(nèi)部RAM20H-3FH單元的壓縮BCD碼轉(zhuǎn)換成ASCII碼,依次存放到外部RAM2300H開始的單元中。(注:每個單元均先轉(zhuǎn)換高四位)解:LENEQU20HADDR1EQU20HADDR2EQU2300HORG0LJMPSTARTORG30HSTART:MOVR0,#ADDR1MOVDPTR,#ADDR2MOVR2,#LENLOOP:MOVA,@R0ANLA,#0F0HSWAPAORLA,#30H(或ADDA,#30H)MOVX@DPTR,AINCDPTRMOVA,@R0ANLA,#0FHORLA,#30H(或ADDA,#30H)MOVX@DPTR,AINCDPTRINCR0DJNZR2,LOOPSJMP$END評分辦法:程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。不規(guī)定使用偽指令。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。15、將存放在內(nèi)部RAM30H-35H單元的十六進制數(shù)轉(zhuǎn)換成相應(yīng)的ASCII碼,依次存放到外部RAM1100H開始的單元區(qū)中。(注:每個字節(jié)轉(zhuǎn)換時先轉(zhuǎn)換高四位)解:ORG0MOVR0,#30HMOVDPTR,#1100HMOVR2,#6LOOP:MOVA,@R0;取需要轉(zhuǎn)換的數(shù)ANLA,#0F0H;屏蔽低4位SWAPAPUSHDPHPUSHDPL;保護目的地址MOVDPTR,#TABMOVCA,@A+DPTR;查表得ASCII碼POPDPLPOPDPH;恢復目的地址MOVX@DPTR,A;存轉(zhuǎn)換后的ASCII碼INCDPTR;修改目的地址指針MOVA,@R0;取需要轉(zhuǎn)換的數(shù)ANLA,#0FH;屏蔽高4位PUSHDPHPUSHDPL;保護目的地址MOVDPTR,#TABMOVCA,@A+DPTR;查表得ASCII碼POPDPLPOPDPH;恢復目的地址MOVX@DPTR,AINCDPTR;修改目的地址指針I(yè)NCR0;修改源地址指針DJNZR2,LOOP;未轉(zhuǎn)換完則繼續(xù)SJMP$TAB :DB‘ABCDEF’END評分辦法:程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。16、內(nèi)部RAM30H開始的單元中存放著16個0-9的ASCII碼(高位字節(jié)在前),請將其轉(zhuǎn)換為壓縮BCD碼(高位在前)并存入外部RAM1000H開始的單元中。解:ORG0MOVR0,#30HMOVDPTR,#1000HMOVR2,#8;16個ASCII碼轉(zhuǎn)換為8個壓縮BCD碼LOOP:MOVA,@R0ANLA,#0FH;屏蔽高4位得到BCD碼SWAPAMOVR1,AINCR0;指向下一個ASCII碼MOVA,@R0ANLA,#0FH;屏蔽高4位得到BCD碼ORLA,R1;合成壓縮BCD碼MOVX@DPTR,A;存壓縮BCD碼INCDPTRINCR0DJNZR2,LOOPSJMP$END評分辦法:程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。17、設(shè)有兩個長度為16字節(jié)的數(shù)組,分別存放在外部RAM0200H和0300H為首址的存儲區(qū)域中,試編寫程序求其相應(yīng)項之和(不考慮溢出的情況),結(jié)果存放在以0400H為首址的外部RAM中。解:參考程序清單如下:ORG0MOVR2,#16;數(shù)組長度為16個字節(jié)MOVR3,#02H;數(shù)組1的首地址高8位MOVR4,#03H;數(shù)組2的首地址高8位MOVR5,#04H;和數(shù)組的首地址高8位MOVDPL,#0;數(shù)據(jù)指針低8位清零LOOP:MOVDPH,R3MOVXA,@DPTR;取被加數(shù)MOVR1,A;存被加數(shù)MOVDPH,R4MOVXA,@DPTR;取加數(shù)ADDA,R1;求和MOVDPH,R5MOVX@DPTR,A;存和INCDPL;指向下一字節(jié)DJNZR2,LOOP;未加完則循環(huán)END評分辦法:程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。18、編程求內(nèi)部RAM中40H~4FH共16個單元中的內(nèi)容的和(結(jié)果為2字節(jié)),并將和放入50H和51H單元中(高8位在50H)。解:參考程序清單如下:ORG0LJMPSTARTORG30HSTART:MOVR0,#40H;數(shù)據(jù)區(qū)首地址送R0MOVR2,#16;單元數(shù)送R2MOVR3,#0;和的高8位清零CLRA;和的低8位清零LOOP:CLRCADDA,@R0;求和JNCNEXT;沒有進位則轉(zhuǎn)移INCR3;和的高8位存儲單元內(nèi)容加1NEXT:INCR0;指向下一個單元DJNZR2,LOOP;沒加完則循環(huán),和在R3和A中MOV51H,A;存低8位結(jié)果MOV50H,R3;存高8位結(jié)果SJMP$END評分辦法:程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。19、有一個長度為16字節(jié)的ASCII碼字符串存放在外部RAM1000H為首址的存儲區(qū)域中,字符串中的每一個字符均不相同,試編寫程序查找字符串中是否存在ASCII碼“9”。假如在字符串中存在ASCII碼“9”,則將其存儲單元的地址存放到內(nèi)部RAM30H和31H單元中(高8位地址在30H單元中),同時將OV標志位清零。否則,將30H和31H單元的內(nèi)容清零,并將OV標志位置“ 解:ORG0MOVSP,#60HMOVDPTR,#1000HMOVR2,#16LOOP:MOVXA,@DPTRCJNEA,#39H,EXITMOV30H,DPHMOV31H,DPLCLROVSJMP$EXIT:INCDPTRDJNZR2,LOOPMOV30H,#0MOV31H,#0SETBOVSJMP$END評分辦法:程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。20、有兩個8字節(jié)的16進制數(shù)a和b,它們分別存放在內(nèi)部RAM中30H~37H和40H~47H的單元中(高位字節(jié)在前)。請編程求a-b,并將差存入30H開始的內(nèi)部RAM單元中(高位字節(jié)在前)。若差小于零則將F0標志位置“1”解:設(shè)計思緒:從16進制數(shù)的最低位字節(jié)(37H和47H)開始相應(yīng)字節(jié)帶借位相減,然后修改地址指針在對次低位字節(jié)進行相減,一共循環(huán)8次完畢兩個8字節(jié)16進制數(shù)的相減。最后將Cy標志的內(nèi)容傳送給F0標志位即可。ORG0MOVR0,#37HMOVR1,#47HMOVR2,#8CLRCLOOP:MOVA,@R0SUBBA,@R1MOV@R0,ADECR0DECR1DJNZR2,LOOPMOVF0,CSJMP$END評分辦法:程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。21、若外部RAM的(3000H)=X,(3001H)=Y,編程實現(xiàn)Z=X*X+2Y,并將結(jié)果存到片內(nèi)RAM的40H單元(設(shè)Z<256)。解:XEQU3000HYEQU3001HZEQU40HORG0MOVDPTR,#X;變量X的地址送DPTRMOVXA,@DPTR;取變量XMOVB,A;變量X的值送給B寄存器MULAB;求X*X,根據(jù)題意知積為1字節(jié)(在A中)MOVR0,A;X*X的結(jié)果存入R0中INCDPTR;指向變量YMOVXA,@DPTR;取變量YMOVB,#2MULAB;求2*Y,根據(jù)題意知積為1字節(jié)(在A中)ADDA,R0;求X*X+2*YMOVZ,A;和存入40H單元SJMP$;停機END評分辦法:不規(guī)定寫出程序的注釋和使用偽指令。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。22、設(shè)外部RAM2023H單元為數(shù)據(jù)塊的起始地址,數(shù)據(jù)塊長度為10,試編程求數(shù)據(jù)塊中的最小值,存入內(nèi)部RAM30H單元。解:設(shè)計思緒:將數(shù)據(jù)塊的第1個數(shù)據(jù)放入結(jié)果單元,然后依次與剩余的9個數(shù)據(jù)進行比較。假如新的數(shù)據(jù)比結(jié)果單元中的數(shù)據(jù)還小則將該數(shù)據(jù)存入結(jié)果單元,9次比較完畢則結(jié)果單元中的數(shù)據(jù)就是最小值。ORG0MOVDPTR,#2023HMOVXA,@DPTR;取數(shù)據(jù)塊的第一個數(shù)MOV30H,A;存入結(jié)果單元MOVR2,#9;共比較9次INCDPTR;指向第2個數(shù)LOOP:CLRCMOVXA,@DPTRSUBBA,30HJNCLP;沒有借位則說明結(jié)果單元的數(shù)小,不用更換最小值MOVXA,@DPTRMOV30H,A;更換最小值LP:INCDPTR;指向下一個數(shù)DJNZR2,LOOP;沒有比較完則繼續(xù)循環(huán)SJMP$;停機END評分辦法:不規(guī)定寫出程序的注釋。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。23、若外部RAM的(1000H)=X,(1001H)=Y,請編程實現(xiàn)Z=2X+Y*Y+5(設(shè)Z<65536),并將結(jié)果保存到片內(nèi)RAM的30H和31H單元(31H單元存放結(jié)果的高8位,30H單元存放結(jié)果的低8位)。解:XEQU1000HZH EQU31HZLEQU30HORG0MOVZH,#0;結(jié)果單元清零MOVZL,#0MOVDPTR,#1000HMOVXA,@DPTR;取X的值MOVB,#2MULAB;計算2XADDA,ZLMOVZL,A;存結(jié)果低8位MOVA,B;取乘積高8位ADDA,ZHMOVZH,A;存結(jié)果高8位INCDPTR;指向YMOVXA,@DPTR;取YMOVB,AMULAB;計算Y*YADDA,ZL;計算結(jié)果低8位MOVZL,AMOVA,B;取乘積的高8位ADDCA,ZH;計算結(jié)果高8位,注意必須帶進位加MOVZH,AMOVA,ZLADDA,#5;計算結(jié)果加5MOVZL,AMOVZH,A;存結(jié)果低8位ADDCA,#0;將低8位進位加到結(jié)果高8位,注意必須帶進位加MOVZH,A;存結(jié)果高8位END評分辦法:不規(guī)定寫出程序的注釋和使用偽指令。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。24、設(shè)外部RAM1000H單元為數(shù)據(jù)塊的起始地址,數(shù)據(jù)塊長度為60字節(jié),試編程求數(shù)據(jù)塊中所有數(shù)據(jù)的和,并將其存入內(nèi)部RAM30H和31H單元(30H單元存放和的低8位,31H單元存放和的高8位)。解:ADDREQU100HH;數(shù)據(jù)塊首地址LENEQU60;數(shù)據(jù)塊長度ZHEQU31H;和的高8位地址ZLEQU30H;和的低8位地址ORG0MOVDPTR,#ADDR;數(shù)據(jù)塊首地址送DPTRMOVR7,#LEN;數(shù)據(jù)塊長度送R7MOVZH,#0;結(jié)果單元清零MOVZL,#0LOOP:MOVXA,@DPTR;取數(shù)據(jù)ADDA,ZL;將數(shù)據(jù)加到結(jié)果單元的低8位MOVZL,A;存結(jié)果低8位MOVA,ZH;取結(jié)果高8位ADDCA,#0;將低8位計算的進位加到高8位中MOVZH,A;存高8位INCDPTR;修改地址指針,指向下一個數(shù)據(jù)DJNZR7,LOOP;沒有計算完則繼續(xù)SJMP$END評分辦法:不規(guī)定寫出程序的注釋和使用偽指令。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。25、若外部RAM的(1000H)=X,內(nèi)部RAM(30H)=Y,請編程實現(xiàn)Z=X*X+3Y+18(設(shè)Z<65536),并將結(jié)果保存到片內(nèi)RAM的40H和41H單元(41H單元存放結(jié)果的高8位,40H單元存放結(jié)果的低8位)。解:XEQU1000HYEQU30HZH EQU41HZLEQU40HORG0MOVZH,#0;結(jié)果單元清零MOVZL,#0MOVDPTR,#1000HMOVXA,@DPTR;取X的值MOVB,AMULAB;計算X*XADDA,ZLMOVZL,A;存結(jié)果低8位MOVA,B;取乘積高8位ADDA,ZHMOVZH,A;存結(jié)果高8位MOVXA,Y;取YMOVB,#3MULAB;計算3*YADDA,ZL;計算結(jié)果低8位MOVZL,AMOVA,B;取乘積的高8位ADDCA,ZH;計算結(jié)果高8位,注意必須帶進位加MOVZH,AMOVA,ZLADDA,#18;計算結(jié)果加18MOVZL,A;存結(jié)果低8位MOVA,ZH;取結(jié)果高8位ADDCA,#0;將低8位進位加到結(jié)果高8位,注意必須帶進位加MOVZH,A;存結(jié)果高8位END評分辦法:不規(guī)定寫出程序的注釋和使用偽指令。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。26、若外部RAM的(1000H)=X,請編程實現(xiàn)Y=X2+2X+1(設(shè)Y<65536),并將結(jié)果保存到片內(nèi)RAM的30H和31H單元(31H單元存放結(jié)果的高8位,30H單元存放結(jié)果的低8位)。解:ORG0MOV30H,#0;結(jié)果單元清零MOV31H,#0MOVDPTR,#1000HMOVA,@DPTR;取X的值MOVB,AMULAB;求X的平方MOV30H,A;存低8位MOVA,BMOV31H,A;存高8位MOVXA,@DPTR;取X的值MOVB,#2MOVAB;求2XADDA,30H; 求低8位和MOV30H,A;存和的低8位MOVA,B;取積的高8位ADDCA,31H;求高8位和MOV31H,A;存和的高8位MOVA,30HADDA,#1;加1MOV30H,A;存和的低8位MOVA,31HADDCA,#0;和的高8位加上低8位運算的進位MOV31H,A;存和的高8位SJMP$;停機END評分辦法:不規(guī)定寫出程序的注釋。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。27、設(shè)外部RAM2023H單元為數(shù)據(jù)塊的起始地址,數(shù)據(jù)塊長度為100字節(jié)。假設(shè)在數(shù)據(jù)塊中存在唯一的一個ASCII字符“A”,試編程找到它,并將其在外部RAM的存放地址存入內(nèi)部RAM30H和31H單元中(30H單元存放地址的高8位,31H單元存放地址的低8位)。解:ORG0MOVDPTR,#2023H;數(shù)據(jù)塊首地址送DPTRMOVR2,#100;數(shù)據(jù)塊長度送R2LOOP:MOVXA,@DPTR;取數(shù)據(jù)CJNEA,#41H,NEXT;數(shù)據(jù)不是“A”則轉(zhuǎn)移MOVA,DPHMOV30H,A;存高8位地址MOVA,DPLMOV31H,A;存低8位地址SJMP$;停機NEXT:INCDPTR;修改地址指針DJNZR2,LOOP;沒有找到則繼續(xù)SJMP$;停機評分辦法:不規(guī)定寫出程序的注釋。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。28、若內(nèi)部RAM的(20H)=a,外部RAM(1300H)=b,請編程實現(xiàn)y=a2+b2+5(設(shè)y<65536),并將結(jié)果保存到片內(nèi)RAM的30H和31H單元(31H單元存放結(jié)果的高8位,30H單元存放結(jié)果的低8位)。解:ORG0MOVA,20H;取aMOVB,AMULAB;求a2MOV30H,A;存和的低8位MOVA,BMOV31H,A;存和的高8位MOVDPTR,#1300HMOVXA,@DPTR;取bMOVB,AMULAB;求b2ADDA,30H;求a2+b2MOV30H,AMOVA,BADDCA,31HMOV31H,AMOVA,30HADDA,#5;加5MOV30H,AMOVA,31HADDCA,#0;加上低8位的進位MOV31H,ASJMP$;停機END評分辦法:不規(guī)定寫出程序的注釋。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。29、若內(nèi)部RAM的(30H)=X,(31H)=Y,請編程實現(xiàn)Z=X2+5Y(設(shè)Z<65536),并將結(jié)果保存到片外RAM的1000H和1001H單元(1001H單元存放結(jié)果的高8位,1000H單元存放結(jié)果的低8位)。解:ORG0MOVDPTR,#1000H;結(jié)果地址指針賦值MOVA,30H;取XMOVB,AMULAB;求X2MOVX@DPTR,A;存X2低8位INCDPTR;指向結(jié)果單元高8位MOVA,BMOVX@DPTR,A;存X2高8位DECDPL;指向結(jié)果單元低8位MOVA,31H;取YMOVB,#5MULAB;求5YMOVR0,AMOVXA,@DPTRADDA,R0;求X2+5Y的低8位和MOVX@DPTR,A;存X2+5Y的低8位和INCDPTR;指向結(jié)果單元高8位MOVXA,@DPTR;取結(jié)果單元高8位ADDCA,B;求X2+5Y的高8位和(注意加上低8位的進位)MOVX@DPTR,A;存X2+5Y的高8位和SJMP$;停機END評分辦法:不規(guī)定寫出程序的注釋。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。30、設(shè)內(nèi)部RAM20H單元為數(shù)據(jù)塊的起始地址,數(shù)據(jù)塊長度為32字節(jié)。請將整個數(shù)據(jù)塊求和(共32字節(jié)的數(shù)據(jù)求和,設(shè)和小于65536),并把和存入外部RAM1000H和1001H的單元中(和的高8位存入1001H單元)。解:ORG0MOVR0,#20H;數(shù)據(jù)塊首地址送R0MOVR2,#32;數(shù)據(jù)塊長度送R2CLRA;累加器清零MOVDPTR,#1000H;指向和的低8位MOVX@DPTR,A;和的低8位清零INCDPTR;指向和的高8位MOVX@DPTR,A;和的高8位清零DECDPL;指向和的低8位LOOP:MOVA,@R0;取數(shù)據(jù)MOVR1,A;暫存在R1MOVXA,@DPTR;取和的低8位ADDA,R1;求和MOVX@DPTR,A;存和的低8位INCDPTR;指向和的高8位MOVXA,@DPTR;取和的高8位ADDCA,#0;將和的低8位的進位加到高8位中MOVX@DPTR,A;存和的高8位DECDPL;指向和的低8位INCR0;數(shù)據(jù)塊指針加1DJNZR2,LOOP;沒有加完則循環(huán)SJMP$;停機END評分辦法:不規(guī)定寫出程序的注釋。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。31、若內(nèi)部RAM的(20H)=a,(21H)=b,請編程實現(xiàn)y=a2+b2(設(shè)y<65536),并將結(jié)果保存到片外RAM的2023H和2023H單元(2023H單元存放結(jié)果的高8位,2023H單元存放結(jié)果的低8位)。解:ORG0MOVDPTR,#2023H;結(jié)果單元低8位地址送DPTRMOVA,20H;取a的值MOVB,AMULAB;求a2MOVX@DPTR,A;存a2低8位MOVA,BINCDPTR;指向結(jié)果單元高8位MOVX@DPTR,A;存結(jié)果高8位DECDPL;指向結(jié)果單元低8位MOVA,21H;取b的值MOVB,AMULAB;求b2MOVR0,A;暫存b2的低8位MOVXA,@DPTR;取結(jié)果低8位ADDA,R0;求低8位的和MOVX@DPTR,A;存結(jié)果低8位INCDPTR;指向結(jié)果單元高8位MOVXA,@DPTR;取結(jié)果高8位ADDCA,B;加上b2的高8位和低8位求和的進位MOVX@DPTR,A;存結(jié)果高8位SJMP$;停機END評分辦法:不規(guī)定寫出程序的注釋,也不規(guī)定使用子程序。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。32、將內(nèi)部RAM40H為起始地址的32個連續(xù)單元中的十六進制數(shù)轉(zhuǎn)換成ASCⅡ碼存入外部RAM3000H開始的存儲單元中。解:ORG0MOVR0,#40H;源數(shù)據(jù)塊首地址送R0MOVR2,#32;數(shù)據(jù)塊長度送R2MOVDPTR,#3000H;目的數(shù)據(jù)塊首地址送DPTRLOOP:MOVA,@R0;取待轉(zhuǎn)換數(shù)據(jù)ANLA,#0F0H;取高四位數(shù)據(jù)SWAPA;高低四位數(shù)據(jù)互換PUSHDPH;保護目的地址指針PUSHDPLMOVDPTR,#TAB;數(shù)據(jù)指針指向表格首地址MOVCA,@A+DPTR;查表得到ASCII碼POPDPL;恢復目的地址指針POPDPHMOVX@DPTR,A;存轉(zhuǎn)換結(jié)果INCDPTR;指向下一個存儲單元MOVA,@R0;取待轉(zhuǎn)換數(shù)據(jù)ANLA,#0FH;取低四位數(shù)據(jù)PUSHDPH;保護目的地址指針PUSHDPLMOVDPTR,#TAB;數(shù)據(jù)指針指向表格首地址MOVCA,@A+DPTR;查表得到ASCII碼POPDPL;恢復目的地址指針POPDPHMOVX@DPTR,A;存轉(zhuǎn)換結(jié)果INCDPTR;指向下一個存儲單元INCR0;指向下一個待轉(zhuǎn)換數(shù)據(jù)DJNZR2,LOOP;沒有轉(zhuǎn)換完則繼續(xù)SJMP$;停機TAB:DB‘ABCDEF’END評分辦法:不規(guī)定寫出程序的注釋。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。33、設(shè)內(nèi)部RAM20H單元為數(shù)據(jù)塊的起始地址,數(shù)據(jù)塊長度為10H,數(shù)據(jù)為8位無符號數(shù),試編程找出數(shù)據(jù)塊中的最小值,并將其存入40H單元。解:ORG0MOVR0,#20H;數(shù)據(jù)區(qū)首地址送R0MOVR2,#10H;數(shù)據(jù)塊長度送R2MOV40H,#0FFH;結(jié)果單元送入最大值LOOP:MOVA,@R0;取數(shù)據(jù)CLRC;清進位SUBBA,40H;運用減法判斷該數(shù)據(jù)是否比最小值單元的數(shù)???JNCNEXT;假如沒有借位說明待比較數(shù)據(jù)比最小值單元的值大則轉(zhuǎn)移MOVA,@R0;取最小值MOV40H,A;存最小值NEXT:INCR0;修改地址指針DJNZR2,LOOP;沒有比較完則繼續(xù)比較。SJMP$;停機END評分辦法:不規(guī)定寫出程序的注釋。程序設(shè)計思緒對的可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論