




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、單片機原理及應用編程題題庫參考答案六、編程(每題10分)1、 內部ram 30h和31h單元中存放著2個0-9的ascii碼(高位字節在前),請將其轉換為壓縮bcd碼(高位在前)并存入外部ram 2300h單元中。解: org 0h ljmp start org 30hstart: mov a,30h anl a,#0fh swap a mov r0,a mov a,31h anl a,#0fh orl a,r0 mov dptr,#2300h movx dptr,a end評分辦法:不要求寫出程序的注釋。程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若
2、僅有少量指令寫錯,可酌情扣1-3分。2、將存放在內部ram 30h-35h單元的壓縮型bcd碼轉換成相應的ascii碼,依次存放到外部ram 2100h開始的單元區中。 org 0h ljmp start org 30h start:mov r0,#30h mov r2,#06h mov dptr,#2100h loop:mov a,r0 swap a anl a,#0fh orl a,#30h movx dptr,a inc dptr mov a,r0 anl a,#0fh orl a,#30h movx dptr,a inc dptr inc r0 djnz r2,loop sjmp $
3、end評分辦法:不要求寫出程序的注釋。程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。3、內部ram 20h和30h開始的單元分別存放著16個16進制數,請將對應單元的內容相加(不考慮溢出),并將和存入外部ram 2000h開始的單元中。解: org 0 ljmp start org 30h start: mov r0,#20h mov r1,#30h mov dptr,#2000h mov r2,#08h ;每個單元存放2個16進制數,故16個16進制數占用8個單元 loop: mov a,r0 add a,r1 m
4、ovx dptr,a inc r0 inc r1 inc dptr djnz r2,loop sjmp $ end評分辦法:不要求寫出程序的注釋。程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。 4、請編寫多字節無符號數減法程序。被減數存放在內部ram 20h開始的8個單元中,減數存放在內部ram 30h開始的8個單元,請將差存放到外部ram 2000h開始的8個單元中,借位存放到ov標志中。注意:所有數據均按照從低字節到高字節的順序存放。 org 0 ljmp start org 30h start: mov r0,
5、#20h mov r1,#30h mov dptr,#2000h mov r2,#08hclr c loop: mov a,r0 subb a,r1 movx dptr,a inc r0 inc r1 inc dptr djnz r2,loop mov ov,c sjmp $ end評分辦法:不要求寫出程序的注釋。程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。5、內部ram 40h和41h單元中存放著2個0-9的ascii碼(高位字節在前),請將其轉換為壓縮bcd碼(高位在前)并存入外部ram 2000h單元中。解:
6、 org 0h ljmp start org 30hstart: mov a,40h anl a,#0fh swap a mov r0,a mov a,41h anl a,#0fh orl a,r0 mov dptr,#2000h movx dptr,a end評分辦法:不要求寫出程序的注釋。程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。6、將存放在內部ram 20h-2fh單元的壓縮型bcd碼(高位在前)轉換成相應的ascii碼,依次存放到外部ram 1000h開始的單元區中。 org 0h ljmp start
7、org 30h start: mov r0,#20h mov r2,#10h mov dptr,#1000h loop: mov a,r0 swap a anl a,#0fh orl a,#30h (或 add a,#30h) movx dptr,a inc dptr mov a,r0 anl a,#0fh orl a,#30h (或 add a,#30h) movx dptr,a inc dptr inc r0 djnz r2,loop sjmp $ end評分辦法:不要求寫出程序的注釋。程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯
8、,可酌情扣1-3分。7、內部ram 30h和38h開始的單元分別存放著8個壓縮bcd碼,請將對應單元的內容相加(不考慮溢出),并將和存入外部ram 1000h開始的單元中。解: org 0 ljmp start org 30h start: mov r0,#30h mov r1,#38h mov dptr,#1000h mov r2,#08 loop: mov a,r0 add a,r1 da a movx dptr,a inc r0 inc r1 inc dptr djnz r2,loop sjmp $ end評分辦法:不要求寫出程序的注釋。程序設計思路正確可得5分,指令完全寫對可得10分。
9、若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。8、請編寫多字節無符號數加法程序。被加數存放在內部ram 20h開始的8個單元中,加數存放在內部ram 30h開始的8個單元,請將和存放到外部ram 2000h開始的8個單元中,進位存放到f0標志中。注意:所有數據均按照從低字節到高字節的順序存放。 org 0 ljmp start org 30h start: mov r0,#20h mov r1,#30h mov dptr,#2000h mov r2,#08hclr c loop: mov a,r0 addc a,r1 movx dptr,a inc r0 inc r
10、1 inc dptr djnz r2,loop mov f0,c sjmp $ end評分辦法:不要求寫出程序的注釋。程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。9、兩個8字節壓縮bcd碼分別存放在內部ram 30h和40h開始的連續單元中(低位字節在前),請將二者求和(不考慮溢出情況),并將和存入外部ram 1000h開始的單元中。 解: org 0mov r0,#30h mov r1,#40h mov dptr,#1000h mov r2,#8 clr c loop: mov a,r0 addc a,r1 da
11、 a movx dptr,a inc r0 inc r1 inc dptr djnz r2,loop sjmp $ end評分辦法:程序設計思路正確可得5分;對于僅寫出部分指令的學生可酌情給14分;程序編制正確可得滿分,若存在少量錯誤,可酌情扣1-3分。10、將存放在內部ram 20h-2fh單元的十六進制數轉換成ascii碼,依次存放到外部ram 2000h開始的單元中。解: mov r0,#20h mov r2,#16 mov dptr,#2000h mov r3, dph mov r4, dpl loop: mov a,r0 anl a,#0fh mov dptr,#tab movc a
12、,a+dptr mov dph,r3 mov dpl,r4 movx dptr,a inc dptr mov r3,dph mov r4,dpl mov a,r0 swap a anl a,#0fh mov dptr,#tab movc a,a+dptr mov dph,r3 mov dpl,r4 movx dptr,a inc dptr mov r3,dph mov r4,dpl inc r0 djnz r2,loop sjmp $ tab: db 0123456789abcdef end評分辦法:程序設計思路正確可得5分;對于僅寫出部分指令的學生可酌情給14分;程序編制正確可得滿分,若存在
13、少量錯誤,可酌情扣1-3分。11、內部ram 30h和外部ram 2200h開始的單元分別存放著兩個8字節十六進制數(低位字節存放在前),請將二者相加(不考慮溢出情況),并將和存入內部ram 40h開始的單元中。解: org 0mov r0,#30h mov r1,#40h mov dptr,#2200h mov r2,#8 clr c loop: movx a,dptr addc a,r0 mov r1,a inc r0 inc r1 inc dptr djnz r2,loop sjmp $評分辦法:程序設計思路正確可得5分;對于僅寫出部分指令的學生可酌情給14分;程序編制正確可得滿分,若存
14、在少量錯誤,可酌情扣1-3分。12、請編寫多字節無符號數減法程序。被減數存放在內部ram 30h開始的8個單元中,減數存放在內部ram 38h開始的8個單元,請將差存放到外部ram 1000h開始的8個單元中,借位存放到f0標志中。注意:所有數據均按照從低字節到高字節的順序存放。解: org 0 ljmp start org 30hstart: mov r0,#30h mov r1,#38h mov dptr,#1000h mov r2,#8 clr cloop: mov a,r0 subb a,r1 movx dptr,a inc r0 inc r1 inc dptr djnz r2,loo
15、p mov c,f0 sjmp $評分辦法:程序設計思路正確可得5分;對于僅寫出部分指令的學生可酌情給14分;程序編制正確可得滿分,若存在少量錯誤,可酌情扣1-3分。 13、請編寫多字節無符號數減法程序。被減數存放在內部ram 20h開始的16個單元中,減數存放在內部ram 30h開始的16個單元,請將差存放到外部ram 2000h開始的16個單元中,借位存放到ov標志中。注意:所有數據均按照從低字節到高字節的順序存放。解: addr1 equ 20h addr2 equ 30h len equ 16 addr3 equ 2000h org 0 ljmp start org 30h start
16、: mov r0,#addr1 mov r1,#addr2 mov dptr,#addr3 mov r2,#len clr c loop: mov a,r0 subb a,r1 movx dptr,a inc r0 inc r1 inc dptr djnz r2,loop mov ov,c sjmp $ end評分辦法:程序設計思路正確可得5分,指令完全寫對可得10分。不要求使用偽指令。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。 14、將存放在內部ram 20h-3fh單元的壓縮bcd碼轉換成ascii碼,依次存放到外部ram 2300h開始的單元中。(注:每個
17、單元均先轉換高四位)解: len equ 20h addr1 equ 20h addr2 equ 2300h org 0 ljmp start org 30h start: mov r0,#addr1 mov dptr,#addr2 mov r2,#len loop: mov a,r0 anl a,#0f0h swap a orl a,#30h (或 add a,#30h) movx dptr,a inc dptr mov a,r0 anl a,#0fh orl a,#30h (或 add a,#30h) movx dptr,a inc dptr inc r0 djnz r2,loop sjm
18、p $ end評分辦法:程序設計思路正確可得5分,指令完全寫對可得10分。不要求使用偽指令。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。 15、將存放在內部ram 30h-35h單元的十六進制數轉換成相應的ascii碼,依次存放到外部ram 1100h開始的單元區中。(注:每個字節轉換時先轉換高四位)解: org 0 mov r0,#30h mov dptr,#1100h mov r2,#6loop: mov a,r0 ; 取需要轉換的數 anl a,#0f0h ; 屏蔽低4位 swap a push dph push dpl ; 保護目的地址 mov dptr,
19、#tab movc a,a+dptr ; 查表得ascii碼 pop dpl pop dph ; 恢復目的地址 movx dptr,a ; 存轉換后的ascii碼 inc dptr ; 修改目的地址指針 mov a,r0 ; 取需要轉換的數 anl a,#0fh ; 屏蔽高4位 push dph push dpl ; 保護目的地址 mov dptr,#tab movc a,a+dptr ; 查表得ascii碼 pop dpl pop dph ; 恢復目的地址 movx dptr,a inc dptr ; 修改目的地址指針 inc r0 ; 修改源地址指針 djnz r2,loop ; 未轉換完
20、則繼續 sjmp $tab: db 0123456789abcdef end評分辦法:程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。 16、內部ram 30h開始的單元中存放著16個0-9的ascii碼(高位字節在前),請將其轉換為壓縮bcd碼(高位在前)并存入外部ram 1000h開始的單元中。解: org 0 mov r0,#30h mov dptr,#1000h mov r2,#8 ; 16個ascii碼轉換為8個壓縮bcd碼loop: mov a,r0 anl a,#0fh ; 屏蔽高4位得到bcd碼 swa
21、p a mov r1,a inc r0 ; 指向下一個ascii碼 mov a,r0 anl a,#0fh ; 屏蔽高4位得到bcd碼 orl a,r1 ; 合成壓縮bcd碼 movx dptr,a ; 存壓縮bcd碼 inc dptr inc r0 djnz r2,loop sjmp $ end評分辦法:程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。17、設有兩個長度為16字節的數組,分別存放在外部ram 0200h和0300h為首址的存儲區域中,試編寫程序求其對應項之和(不考慮溢出的情況),結果存放在以0400h
22、為首址的外部ram中。解: 參考程序清單如下: org 0 mov r2,#16 ; 數組長度為16個字節 mov r3,#02h ; 數組1的首地址高8位 mov r4,#03h ; 數組2的首地址高8位 mov r5,#04h ; 和數組的首地址高8位 mov dpl,#0 ; 數據指針低8位清零loop: mov dph,r3 movx a,dptr ; 取被加數 mov r1,a ; 存被加數 mov dph,r4 movx a,dptr ; 取加數 add a,r1 ; 求和 mov dph,r5 movx dptr,a ; 存和 inc dpl ; 指向下一字節 djnz r2,l
23、oop ; 未加完則循環 end評分辦法:程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。 18、編程求內部ram中40h4fh共16個單元中的內容的和(結果為2字節),并將和放入50h和51h單元中(高8位在50h)。解: 參考程序清單如下:org 0 ljmp start org 30h start: mov r0,#40h ; 數據區首地址送r0 mov r2,#16 ; 單元數送r2 mov r3,#0 ; 和的高8位清零clr a ; 和的低8位清零 loop: clr cadd a,r0 ; 求和 jnc
24、next ; 沒有進位則轉移 inc r3 ; 和的高8位存儲單元內容加1 next: inc r0 ; 指向下一個單元 djnz r2,loop ; 沒加完則循環,和在r3和a中 mov 51h,a ; 存低8位結果 mov 50h,r3 ; 存高8位結果 sjmp $ end評分辦法:程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。 19、有一個長度為16字節的ascii碼字符串存放在外部ram 1000h為首址的存儲區域中,字符串中的每一個字符均不相同,試編寫程序查找字符串中是否存在ascii碼“9”。如果在字符
25、串中存在ascii碼“9”,則將其存儲單元的地址存放到內部ram 30h和31h單元中(高8位地址在30h單元中),同時將ov標志位清零。否則,將30h和31h單元的內容清零,并將ov標志位置“1”。 解: org 0 mov sp,#60h mov dptr,#1000h mov r2,#16 loop: movx a,dptr cjne a,#39h,exit mov 30h,dph mov 31h,dpl clr ov sjmp $ exit: inc dptr djnz r2,loop mov 30h,#0 mov 31h,#0 setb ov sjmp $ end評分辦法:程序設計思
26、路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。 20、有兩個8字節的16進制數a和b,它們分別存放在內部ram中30h37h和40h47h的單元中(高位字節在前)。請編程求a-b,并將差存入30h開始的內部ram單元中(高位字節在前)。若差小于零則將f0標志位置“1”,否則清零。 解:設計思路:從16進制數的最低位字節(37h和47h)開始相應字節帶借位相減,然后修改地址指針在對次低位字節進行相減,一共循環8次完成兩個8字節16進制數的相減。最后將cy標志的內容傳送給f0標志位即可。 org 0 mov r0,#37h mov
27、 r1,#47h mov r2,#8 clr c loop: mov a,r0 subb a,r1 mov r0,a dec r0 dec r1 djnz r2,loop mov f0,c sjmp $ end評分辦法:程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。 21、若外部ram的(3000h)=x,(3001h)=y,編程實現z=x*x+2y,并將結果存到片內ram的40h單元(設z256 )。解: x equ 3000h y equ 3001h z equ 40h org 0 mov dptr,#x ; 變
28、量x的地址送dptr movx a,dptr ; 取變量x mov b,a ; 變量x的值送給b寄存器 mul ab ; 求x*x,根據題意知積為1字節(在a中) mov r0,a ; x*x的結果存入r0中 inc dptr ; 指向變量y movx a,dptr ; 取變量y mov b,#2 mul ab ; 求2*y,根據題意知積為1字節(在a中) add a,r0 ; 求x*x+2*y mov z,a ; 和存入40h單元 sjmp $ ; 停機 end評分辦法:不要求寫出程序的注釋和使用偽指令。程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若
29、僅有少量指令寫錯,可酌情扣1-3分。22、設外部ram 2000h單元為數據塊的起始地址,數據塊長度為10,試編程求數據塊中的最小值,存入內部ram 30h單元。解:設計思路:將數據塊的第1個數據放入結果單元,然后依次與剩余的9個數據進行比較。如果新的數據比結果單元中的數據還小則將該數據存入結果單元,9次比較完成則結果單元中的數據就是最小值。 org 0 mov dptr,#2000h movx a,dptr ;取數據塊的第一個數 mov 30h,a ;存入結果單元 mov r2,#9 ; 共比較9次 inc dptr ;指向第2個數 loop: clr c movx a,dptr subb
30、a,30h jnc lp ; 沒有借位則說明結果單元的數小,不用更換最小值 movx a,dptr mov 30h,a ; 更換最小值 lp: inc dptr ; 指向下一個數 djnz r2,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單元存放結果
31、的高8位,30h單元存放結果的低8位)。解: x equ 1000h zh equ 31h zl equ 30h org 0 mov zh,#0 ;結果單元清零 mov zl,#0 mov dptr,#1000h movx a,dptr ;取x的值 mov b,#2 mul ab ;計算2x add a,zl mov zl,a ;存結果低8位 mov a,b ;取乘積高8位 add a,zh mov zh,a ;存結果高8位 inc dptr ;指向y movx a,dptr ;取y mov b,a mul ab ;計算y*y add a,zl ;計算結果低8位 mov zl,a mov a,b ;取乘積的高8位 addc a,zh ;計算結果高8位,注意必須帶進位加 mov zh,a mov a,zl add a,#5 ;計算結果加5 mov zl,a mov zh,a ;存結果低8位 addc a,#0 ;將低8位進位加到結果高8位,注意必須帶進位加 mov zh,a ;存結果高8位 end評分辦法:不要求寫出程序的注釋和使用偽指令。程序設計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。 24、設外部ram 1000h單元為數據塊的起始地址,數據塊長度為60字節,試
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學校畢業的自我鑒定(7篇)
- 水泥廠中控室操作員述職報告范文(3篇)
- 大學生2025年實習自我鑒定(15篇)
- 人教《道德與法治》八年級下冊5.1 《基本經濟制度》教學設計
- 特長生培養計劃(4篇)
- 2025年酒店經理個人工作總結范文(17篇)
- 簡單勞務關系合同(3篇)
- 2025軍訓生活心得體會范文(9篇)
- 大四教師實習自我鑒定(19篇)
- 共青團自我評價(5篇)
- 光伏工程施工組織設計
- 2024秋期國家開放大學《鋼結構(本)》一平臺在線形考(階段性學習測驗1至4)試題及答案
- 2024-2025學年全國中學生天文知識競賽考試題庫(含答案)
- 激光雕刻切割軟件LaserSoft操作說明書(多文檔版)
- 建筑幕墻安裝工程安全施工施工工藝技術
- 臨床檢驗儀器與技術復習
- 燃氣設備維修保養合同范本
- 供貨方案及供貨計劃(2篇)
- SYT5405-2019酸化用緩蝕劑性能試驗方法及評價指標
- 內鏡下內痔套扎治療
- (正式版)JBT 14581-2024 閥門用彈簧蓄能密封圈
評論
0/150
提交評論