《单片机》编程题题库答案_第1页
《单片机》编程题题库答案_第2页
《单片机》编程题题库答案_第3页
《单片机》编程题题库答案_第4页
《单片机》编程题题库答案_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论