《单片机》编程题题库答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第1页共27页《单片机原理及应用》编程题题库参考答案六、编程(每题10分)1、内部RAM30H和31H单元中存放着2个0-9的ASCII码(高位字节在前),请将其转换为压缩BCD码(高位在前)并存入外部RAM2300H单元中。解:ORG0HLJMPSTARTORG30HSTART:MOVA,30HANLA,#0FHSWAPAMOVR0,AMOVA,31HANLA,#0FHORLA,R0MOVDPTR,#2300HMOVX@DPTR,AEND评分办法:不要求写出程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。2、将存放在内部RAM30H-35H单元的压缩型BCD码转换成相应的ASCII码,依次存放到外部RAM2100H开始的单元区中。ORG0HLJMPSTARTORG30HSTART:MOVR0,#30HMOVR2,#06HMOVDPTR,#2100HLOOP:MOVA,@R0SWAPAANLA,#0FHORLA,#30HMOVX@DPTR,AINCDPTRMOVA,@R0ANLA,#0FHORLA,#30HMOVX@DPTR,AINCDPTRINCR0DJNZR2,LOOPSJMP$END评分办法:不要求写出程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。3、内部RAM20H和30H开始的单元分别存放着16个16进制数,请将对应单元的内容相加(不考虑溢出),并将和存入外部RAM2000H开始的单元中。解:ORG0LJMPSTARTORG30HSTART:MOVR0,#20HMOVR1,#30HMOVDPTR,#2000HMOVR2,#08H;每个单元存放2个16进制数,故16个16进制数占用8个单元LOOP:MOVA,@R0ADDA,@R1MOVX@DPTR,AINCR0INCR1INCDPTRDJNZR2,LOOPSJMP$END评分办法:不要求写出程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。第2页共27页4、请编写多字节无符号数减法程序。被减数存放在内部RAM20H开始的8个单元中,减数存放在内部RAM30H开始的8个单元,请将差存放到外部RAM2000H开始的8个单元中,借位存放到OV标志中。注意:所有数据均按照从低字节到高字节的顺序存放。ORG0LJMPSTARTORG30HSTART:MOVR0,#20HMOVR1,#30HMOVDPTR,#2000HMOVR2,#08HCLRCLOOP:MOVA,@R0SUBBA,@R1MOVX@DPTR,AINCR0INCR1INCDPTRDJNZR2,LOOPMOVOV,CSJMP$END评分办法:不要求写出程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。5、内部RAM40H和41H单元中存放着2个0-9的ASCII码(高位字节在前),请将其转换为压缩BCD码(高位在前)并存入外部RAM2000H单元中。解:ORG0HLJMPSTARTORG30HSTART:MOVA,40HANLA,#0FHSWAPAMOVR0,AMOVA,41HANLA,#0FHORLA,R0MOVDPTR,#2000HMOVX@DPTR,AEND评分办法:不要求写出程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。6、将存放在内部RAM20H-2FH单元的压缩型BCD码(高位在前)转换成相应的ASCII码,依次存放到外部RAM1000H开始的单元区中。ORG0HLJMPSTARTORG30HSTART:MOVR0,#20HMOVR2,#10HMOVDPTR,#1000HLOOP:MOVA,@R0SWAPAANLA,#0FHORLA,#30H(或ADDA,#30H)MOVX@DPTR,AINCDPTRMOVA,@R0ANLA,#0FHORLA,#30H(或ADDA,#30H)MOVX@DPTR,AINCDPTRINCR0DJNZR2,LOOPSJMP$END评分办法:不要求写出程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。7、内部RAM30H和38H开始的单元分别存放着8个压缩BCD码,请将对应单元的内容相加(不考虑溢出),并将和存入外部RAM1000H开始的单元中。解:ORG0LJMPSTARTORG30HSTART:MOVR0,#30HMOVR1,#38H第3页共27页MOVDPTR,#1000HMOVR2,#08LOOP:MOVA,@R0ADDA,@R1DAAMOVX@DPTR,AINCR0INCR1INCDPTRDJNZR2,LOOPSJMP$END评分办法:不要求写出程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。8、请编写多字节无符号数加法程序。被加数存放在内部RAM20H开始的8个单元中,加数存放在内部RAM30H开始的8个单元,请将和存放到外部RAM2000H开始的8个单元中,进位存放到F0标志中。注意:所有数据均按照从低字节到高字节的顺序存放。ORG0LJMPSTARTORG30HSTART:MOVR0,#20HMOVR1,#30HMOVDPTR,#2000HMOVR2,#08HCLRCLOOP:MOVA,@R0ADDCA,@R1MOVX@DPTR,AINCR0INCR1INCDPTRDJNZR2,LOOPMOVF0,CSJMP$END评分办法:不要求写出程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。9、两个8字节压缩BCD码分别存放在内部RAM30H和40H开始的连续单元中(低位字节在前),请将二者求和(不考虑溢出情况),并将和存入外部RAM1000H开始的单元中。解:ORG0MOVR0,#30HMOVR1,#40HMOVDPTR,#1000HMOVR2,#8CLRCLOOP:MOVA,@R0ADDCA,@R1DAAMOVX@DPTR,AINCR0INCR1INCDPTRDJNZR2,LOOPSJMP$END评分办法:程序设计思路正确可得5分;对于仅写出部分指令的学生可酌情给1-4分;程序编制正确可得满分,若存在少量错误,可酌情扣1-3分。10、将存放在内部RAM20H-2FH单元的十六进制数转换成ASCII码,依次存放到外部RAM2000H开始的单元中。解:MOVR0,#20HMOVR2,#16MOVDPTR,#2000HMOVR3,DPHMOVR4,DPLLOOP:MOVA,@R0ANLA,#0FHMOVDPTR,#TABMOVCA,@A+DPTRMOVDPH,R3MOVDPL,R4MOVX@DPTR,AINCDPTRMOVR3,DPHMOVR4,DPL第4页共27页MOVA,@R0SWAPAANLA,#0FHMOVDPTR,#TABMOVCA,@A+DPTRMOVDPH,R3MOVDPL,R4MOVX@DPTR,AINCDPTRMOVR3,DPHMOVR4,DPLINCR0DJNZR2,LOOPSJMP$TAB:DB‘0123456789ABCDEF’END评分办法:程序设计思路正确可得5分;对于仅写出部分指令的学生可酌情给1-4分;程序编制正确可得满分,若存在少量错误,可酌情扣1-3分。11、内部RAM30H和外部RAM2200H开始的单元分别存放着两个8字节十六进制数(低位字节存放在前),请将二者相加(不考虑溢出情况),并将和存入内部RAM40H开始的单元中。解:ORG0MOVR0,#30HMOVR1,#40HMOVDPTR,#2200HMOVR2,#8CLRCLOOP:MOVXA,@DPTRADDCA,@R0MOV@R1,AINCR0INCR1INCDPTRDJNZR2,LOOPSJMP$评分办法:程序设计思路正确可得5分;对于仅写出部分指令的学生可酌情给1-4分;程序编制正确可得满分,若存在少量错误,可酌情扣1-3分。12、请编写多字节无符号数减法程序。被减数存放在内部RAM30H开始的8个单元中,减数存放在内部RAM38H开始的8个单元,请将差存放到外部RAM1000H开始的8个单元中,借位存放到F0标志中。注意:所有数据均按照从低字节到高字节的顺序存放。解:ORG0LJMPSTARTORG30HSTART:MOVR0,#30HMOVR1,#38HMOVDPTR,#1000HMOVR2,#8CLRCLOOP:MOVA,@R0SUBBA,@R1MOVX@DPTR,AINCR0INCR1INCDPTRDJNZR2,LOOPMOVC,F0SJMP$评分办法:程序设计思路正确可得5分;对于仅写出部分指令的学生可酌情给1-4分;程序编制正确可得满分,若存在少量错误,可酌情扣1-3分。13、请编写多字节无符号数减法程序。被减数存放在内部RAM20H开始的16个单元中,减数存放在内部RAM30H开始的16个单元,请将差存放到外部RAM2000H开始的16个单元中,借位存放到OV标志中。注意:所有数据均按照从低字节到高字节的顺序存放。解:ADDR1EQU20HADDR2EQU30HLENEQU16ADDR3EQU2000HORG0LJMPSTARTORG30HSTART:MOVR0,#ADDR1MOVR1,#ADDR2MOVDPTR,#ADDR3MOVR2,#LENCLRC第5页共27页LOOP:MOVA,@R0SUBBA,@R1MOVX@DPTR,AINCR0INCR1INCDPTRDJNZR2,LOOPMOVOV,CSJMP$END评分办法:程序设计思路正确可得5分,指令完全写对可得10分。不要求使用伪指令。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。14、将存放在内部RAM20H-3FH单元的压缩BCD码转换成ASCII码,依次存放到外部RAM2300H开始的单元中。(注:每个单元均先转换高四位)解:LENEQU20HADDR1EQU20HADDR2EQU2300HORG0LJMPSTARTORG30HSTART:MOVR0,#ADDR1MOVDPTR,#ADDR2MOVR2,#LENLOOP:MOVA,@R0ANLA,#0F0HSWAPAORLA,#30H(或ADDA,#30H)MOVX@DPTR,AINCDPTRMOVA,@R0ANLA,#0FHORLA,#30H(或ADDA,#30H)MOVX@DPTR,AINCDPTRINCR0DJNZR2,LOOPSJMP$END评分办法:程序设计思路正确可得5分,指令完全写对可得10分。不要求使用伪指令。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。15、将存放在内部RAM30H-35H单元的十六进制数转换成相应的ASCII码,依次存放到外部RAM1100H开始的单元区中。(注:每个字节转换时先转换高四位)解:ORG0MOVR0,#30HMOVDPTR,#1100HMOVR2,#6LOOP:MOVA,@R0;取需要转换的数ANLA,#0F0H;屏蔽低4位SWAPAPUSHDPHPUSHDPL;保护目的地址MOVDPTR,#TABMOVCA,@A+DPTR;查表得ASCII码POPDPLPOPDPH;恢复目的地址MOVX@DPTR,A;存转换后的ASCII码INCDPTR;修改目的地址指针MOVA,@R0;取需要转换的数ANLA,#0FH;屏蔽高4位PUSHDPHPU

1 / 27
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功