《单片机》编程题题库答案_第1页
《单片机》编程题题库答案_第2页
《单片机》编程题题库答案_第3页
免费预览已结束,剩余57页可下载查看

下载本文档

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

文档简介

1、INC DPTRMOV A, ROANL A, #OFHORL A,#30HMOVX DPTR,AINC DPTRINC RODJNZ R2, LOOPSJMP $END评分办法:不要求写岀程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写 对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。3、内部RAM : 2011和3011开始的单元分别存放着16个16进制数,请将对应单元的内容相加(不考 虑溢并将和存入外部RAM 2000H开始的单元中。出),ORG 0解:LJMP STARTORG 30HSTART MOV RO,#20HMOV Rl,#30HMOV

2、 DPTR,W2000HMOV R2, #08H;每个单元存放2个16进制数,故16个16进制数占用8个单元LOOP MOV A, R0ADD A, R1MOVX ?DPTR,AINCROINCR1INCDPTRDJNZR2, LOOPSJMP$END评分办法:不要求写岀程序的注释。程序设计思路正确可得5分,指令完全写对可得 10分。若仅写 对少量指令,可酌情给1 - 3分;若仅有少量指令写错,可酌情扣1 - 3分。单片机原理及应用编程题题库参考答案六、编程(每题10分)1、内部RAM 30H和31H单元中存放着2个0-9的ASCII码(高位字节在前),请将其转换为压缩BCD码(高位在前)并存

3、入外部 RAM 2300H单元中。OH START30H解:ORG A, 30HLJMP OR<A, #OFH A RO, A A, 31HSTARTMOV anla,#ofhSWAP a, ROMOV DPTR, #2300H DPTR, AMOVANLORLMOVMOVXEND评分办法:不要求写岀程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写 对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。2、将存放在内部 RAM 30H-35H单元的压缩型BCD码转换成相应的ASCII码,依次存放到外部 RAM 2100H开始 的单元区中。ORG 0H L

4、JMP START ORG 30HSTART MOV RO, #30HMOV R2, #06HMOV DPTR, W2100HLOOP MOV A, R0SWAP AANL A,#OFHORL A,#30HMOVX DPTR, AMOV DPTR, #2000HMOVX DPTR, AEND评分办法:不要求写岀程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写 对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣 1-3分。6、将存放在内部RAM20H-2FH单元的压缩型BCDB(高位在前)转换成相应的ASCII码,依次存放到 外部RAM 1000H开始的单元区中。OR

5、G 0HLJMP STARTORG30HSTARTMOVRO, #20HMOVR2, #10HMOVDPTR,#1000HLOOPMOVA, R0SWAP AANL A,#OFHORL A, #30H (或 ADD A, #30H)MOVX DPTR,AINC DPTRMOV A, R0ANL A,#0FHORL A, #30H (或 ADD A, #30H)MOVX DPTR,AINC DPTRINC RODJNZ R2, LOOPSJMP $END评分办法:不要求写岀程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写 对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌

6、情扣1-3分。7、内部RAM30H和38H开始的单元分别存放着8个压缩BCD码,请将对应单元的内容相加(不考 虑溢出), 并将和存入外部RAM 1000H开始的单元中。解:ORG0LJMP START4、请编写多字节无符号数减法程序。被减数存放在内部RAM 20H开始的8个单元中,减数存放在内 部RAM30H开始的8个单元,请将差存放到外部 RAM 2000H开始的8个单元中,借位存放到 0V标志中。注意:所有数据均按照从低字节到高字节的顺序存放。ORG0LJMPSTARTORG30HSTART MOV RO,#20HMOVRl,#30HMOVDPTR, #2000HMOVR2,#08HCLR

7、CLOOP MOVA, R0SUBB A, R1MOVXDPTR,AINCROINCR1INCDPTRDJNZR2, LOOPMOVOV,CSJMP$END评分办法:不要求写岀程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写 对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。5、内部RAM40H和41H单元中存放着2个0-9的ASCII码(高位字节在前),请将其转换为压缩 BCD码(高 位在前)并存入外部 RAM 2000H单元中。解:ORG0HLJMP STARTORG 30HSTART MOV A, 40HANL A,#0FHSWAP AMOV RO,

8、 AMOV A,41HANLA, #0FHORLA, ROEND评分办法:不要求写出程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写 对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。9、两个8字节压缩BCD码分别存放在内部RAM 30H和40H开始的连续单元中(低位字节在前),请将二者求和(不考虑溢出情况),并将和存入外部 RAM 1 0 0 0 H开始的单元中解:ORG0MOVRO,#3OHMOVRI,#40HMOVDPTR,#1000HMOVR2,#8CLRCLOOP:MOVA, R0ADDCA, R1DAAMOVXDPTR,AINCROINCR1I

9、NCDPTRDJNZR2, LOOPSJMP$END评分办法:程序设计思路正确可得5 分;对于仅写出部分指令的学生可酌情给14 分;程序编制正确可得满分,若存在少量错误,可酌情扣1-3分。10、将存放在内部RAM 20H-2FH单元的十六进制数转换成 ASCII码,依次存放到外部 RAM 2000H开 始的单元中。解:MOVRO, #20HMOVR2, #16MOVDPTR,#2000HMOVR3, DPHMOVR4, DPLLOOP:MOVA, R0ANLA, #OFHMOVDPTR,#TABMOVCA, A+DPTRMOVDPH, R3MOVDPL, R4STARTMOVRO, #30HM

10、OVRl, #38HMOVDPTR,#1000HMOVR2, #08MOVA, R0ADDA, R1DAAMOVX DPTR, AINCROINCR1INCDPTRDJNZR2, LOOPSJMP$ENDORG 30HLOOP评分办法:不要求写岀程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写 对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。8、请编写多字节无符号数加法程序。被加数存放在内部RAM 20H开始的8个单元中,加数存放在内部RAM30H开始的8个单元,请将和存放到外部 RAM 2000H开始的8个单元中,进位存放到 F0标志中。 注意:所有数

11、 据均按照从低字节到高字节的顺序存放。DJNZR2, LOOPORG0LJMPSTARTORG30HSTART MOV RO,#20HMOVRl,#30HMOVDPTR, #2000HMOVR2,#08HCLRCLOOP MOVA, R0ADDC A, R1MOVXDPTR,AINCROINCR1INCDPTRDJNZR2, LOOPMOVFO,C评分办法:程序设计思路正确可得5分;对于仅写出部分指令的学生可酌情给14分;程序编制正 确可得满分,若存在少量错误,可酌情扣1-3分。12、请编写多字节无符号数减法程序。被减数存放在内部RAM30H开始的8个单元中,减数存放在 内部RAM38H开始的

12、8个单元,请将差存放到外部 RAM 1000H开始的8个单元中,借位存放到 F0标志中。 注意:所有数 据均按照从低字节到高字节的顺序存放。解:ORG0LJMPSTARTORG30HSTART:MOVRO, #30HMOVR1,#38HMOVDPTR,MOVttlO°°l#8CLRCLOOP:MOVA, R0SUBBA, R1MOVXDPTR, AINCROINCR1INCDPTRDJNZR2,LOOPMOVC, FOSJMP$评分办法:程序设计思路正确可得5分;对于仅写出部分指令的学生可酌情给1 4分;程序编制正 确可得满分,若存在少量错误,可酌情扣1-3分。13、请编写

13、多字节无符号数减法程序。被减数存放在内部RAM 20H开始的16个单元中,减数存放在内部RAM 30H开始的16个单元,请将差存放到外部 RAM 2000H开始的16个单元中,借位存放到0V标志 中。注意:所有数据均按照从低字节到高字节的顺序存放。解:ADDR1EQU20HADDR2EQU30HLENEQU16ADDR3EQU2000HORG0LJMPSTARTTAB:MOVXDPTR, AINCDPTRMOVR3, DPHMOVR4, DPLMOVA, R0SWAPAANLA, #OFHMOVDPTR, #TABMOVCA, A+DPTRMOVDPH, R3MOVDPL, R4MOVXDPT

14、R, AINCDPTRMOVR3, DPHMOVR4,DPLINCRODJNZR2,LOOPSJAIP$DB'0123456789ABCDEF'END1 4分;程序编制正确可评分办法:程序设计思路正确可得5分;对于仅写出部分指令的学生可酌情给得满分,若存在少量错误,可酌情扣1-3分。11、内部RAM30H和外部RAM2200H开始的单元分别存放着两个 8字节十六进制数(低位字节存 放在前), 请将二者相加(不考虑溢出情况),并将和存入内部RAM 40H开始的单元中。解:ORG0MOVRO, #30HMOVRl,#40HMOVDPTR, W2200HMOVR2,#8CLRCLOO

15、P:MOVX A, DPTRADDCA, R0MOVR1,AINCROINCR1NCDPTRMOV A, ROANL A, #OFHORL A, #30H (或 ADD A, #30H)MOVX DPTR, AINC DPTRINC RODJNZ R2,LOOPSJMP $END评分办法:程序设计思路正确可得5分,指令完全写对可得10分。不要求使用伪指令。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。15、将存放在内部RAM 30H-35H单元的十六进制数转换成相应的ASCII码,依次存放到外部 RAM 1100H开始的单元区中。(注:每个字节转换时先转换高四位)解

16、:ORG0MOVRO, #30HMOVDPTR,#1100HMOVR2, #6LOOP:MOVA, R0取需要转换的数ANLA,#OFOH屏蔽低4位SWAPAPUSHDPHPUSHDPL保护目的地址MOVDPTR,#TABMOVCA,A+DPTR查表得ASCU码POPDPLPOPDPH恢复目的地址MOVXDPTR, A存转换后的ASCII码INCDPTR修改目的地址指针MOVA, R0取需要转换的数ANLA, #OFH屏蔽高4位PUSHDPHPUSHDPL保护目的地址MOVDPTR,#TABMOVCA,A+DPTR查表得ASCU码POPDPLPOPDPH恢复目的地址ORG30HSTART:MO

17、VRO, #ADDR1MOVRl, #ADDR2MOVDPTR,#ADDR3MOVR2, #LENCLRCLOOP:MOVA, R0SUBBA, R1MOVX?DPTR, AINCROINCR1INCDPTRDJNZR2, LOOPMOVOV,CSJMP$END评分办法:程序设计思路正确可得5分,指令完全写对可得10分。不要求使用伪指令。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。14、将存放在内部RAM 20H-3FH单元的压缩BCD码转换成ASCII码,依次存放到外部 RAM 2300H开始的单元中。(注:每个单元均先转换高四位)解:LENEQU20HADDR

18、1EQU20HADDR2EQU2300HORG0LJMPSTARTORG30HSTART:MOVRO,#ADDR1MOVDPTR, #ADDR2MOVR2,#LENLOOP:MOVA, R0ANLA,#0F0HSWAPAORLA, #30H (或 ADD A, #30H)MOVXDPTR, AINCDPTR解:参考程序清单如下:ORG0MOVR2, #16;数组长度为16个字节MOVR3, #02H;数组1的首地址高8位MOVR4, #03H;数组2的首地址高8位MOVR5, #04H;和数组的首地址高8位MOVDPL, #0;数据指针低8位清零LOOP:MOVDPH, R3MOVXA,DPT

19、R;取被加数MOVR1,A;存被加数MOVDPH, R4MOVXA, DPTR;取加数ADDA, R1;求和MOVDPH, R5MOVX?DPTR, A;存和INCDPL;指向下一字节DJNZR2,LOOP;未加完则循环END评分办法:程序设计思路正确可得 5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。18、编程求内部RAM中 40H-4FH共16个单元中的内容的和(结果为 2字节),并将和放入 50H和51H单元 中(高8位在50H)o解:参考程序清单如下:ORGLJMPORG0START30HSTARTMOVRO, #40H数据区首

20、地址送ROMOVR2,#16单元数送R2MOVR3,#0和的高8位清零CLRA和的低8位清零LOOPCLRCADDA, R0求和JNCNEXT没有进位则转移INCR3和的高8位存储单元内容加1NEXT:INCRO指向下一个单元DJNZR2,LOOP没加完则循环,和在 R3和A中M0VX DPTR, AINCDPTRINCRO;修改目的地址指针;修改源地址指针DJNZ R2, LOOP;未转换完则继续SJMP $TAB: DB'0123456789ABCDEF'END评分办法:程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错

21、,可酌情扣1-3分。位在前)BCD码(高16、内部RAM 30H开始的单元中存放着16个0-9的ASCII码(高位字节在前),请将其转换为压缩并存入外部 RAM 1000 H 开始的单元中解:ORG 0MOV RO, #30HMOV DPTR, ttlOOOHMOVR2,#8;16个ASCII码转换为8个压缩BCD码LOOP:MOVA, R0ANLA, #0FH;屏蔽高4位得到BCD码SWAPAMOVR1,AINCRO;指向下一个ASCII码MOVA, R0ANLA, #OFH ;屏蔽高4位得到BCD码ORLA,R1 ;合成压缩BCD码MOVX?DPTR,A ;存压缩BCD码INCDPTRIN

22、CRODJNZR2,LOOPSJMP$END评分办法:程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。17、设有两个长度为16字节的数组,分别存放在外部RAM 0200H和0300H为首址的存储区域中,试编写程序求其对应项之和(不考虑溢出的情况),结果存放在以0400H为首址的外部RAM中°LOOP:ORG0MOVRO, #37HMOVRl, #47HMOVR2, #8CLRCMOVA, R0SUBBA, R1MOVRO,ADECRODECR1DJNZR2,LOOPMOVFO,CSJA|P$END1-3评分办

23、法:程序设计思路正确可得 5分,指令完全写对可得10分。若仅写对少量指令,可酌情给分;若仅有少量指令写错,可酌情扣1-3分21、若外部RAM 的(3000H) =X,(3001H)二Y,编程实现Z=X*X+2Y,并将结果存到片内RAM的40H单元(设 Z<256) o解:XEQU3000HYEQU3001HZEQU40HORG0MOVDPTR, #X:变量X的地址送 DPTRMOVXA,DPTR;取变量XMOVB,A;变量X的值送给B寄存器MULAB;求X*X,根据题意知积为1字节(在A中)MOVRO, A:X*X的结果存入R0中INCDPTR;指向变量YMOVXA,DPTR;取变量YM

24、OVB, #2MULAB;求2*Y,根据题意知积为1字节(在A中)ADDA, RO;求 X*X+2*YMOVZ,A:和存入4011单元SJMP$;停机END评分办法:不要求写出程序的注释和使用伪指令。程序设计思路正确可得5分,指令完全写对可得MOV 51H,A;存低8位结果MOV 50H, R3SJMP $END;存高8位结果评分办法:程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分19、有一个长度为16字节的ASCII码字符串存放在外部 RAM 1000H为首址的存储区域中,字符串中 的每一 个字符均不相同,试编写程序

25、查找字符串中是否存在ASCII码"9 ”。如果在字符串中存在 ASCII码“9”,则将其存储单元的地址存放到内部 RAM 30H和31H单元中(高8位地址在30H单元中),同时将 0V标志位清零。否则,将30H和31H单元的内容清零,并将 0V标志位置“1”。解:ORG0MOVSP,#60HMOVDPTR, #1000HLOOP: MOVXCJNEMOVMOVCLRSJMPEXIT: INCDJNZMOVA, ?DPTRA, #39H, ex35h, DPH31H, DPLOV$DPTRR2, LOOP 30H,#0MOVR2,#16MOV 31H, #0SETBOVSJMP$END

26、1-3 分;评分办法:程序设计思路正确可得 5分,指令完全写对可得10分。若仅写对少量指令,可酌情给若仅有少量指令写错,可酌情扣1-3分20、有两个8字节的16进制数a和b,它们分别存放在内部 RAM中 30H-37H和40H-47H的单元中 (高位字节 在前)。请编程求a-b,并将差存入30H开始的内部RAM单元中(高位字节在前)。若差小于零则将F0标志位置“1 ”,否则清零。解:设计思路:从16进制数的最低位字节 (37H和47H)开始相应字节带借位相减,然后修改地址 指针 在对次低位字节进行相减,一共循环 8次完成两个8字节16进制数的相减。最后将 Cy标志的内容传 送给F0标 志位即可

27、。MULAB;计算2XADDA, ZLMOVZL, A;存结果低8位MOVA,B;取乘积高8位ADDA, ZHMOVZH, A;存结果高8位INCDPTR;指向丫MOVXA, DPTR;取丫MOVB,AMULAB;计算Y*YADDA, ZL;计算结果低8位MOVZL, AMOVA,B;取乘积的高8位ADDCA, ZH;计算结果高8位,注意必须带进位加MOVZH, AMOVA, ZLADDA, #5;计算结果加5MOVZL, AMOVZH, A;存结果低8位ADDCA, #0;将低8位进位加到结果高8位,注意必须带进位加MOVZH, A;存结果高8位END评分办法:不要求写出程序的注释和使用伪指

28、令。程序设计思路正确可得5分,指令完全写对可得 10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。24、设外部RAM 1000H单元为数据块的起始地址,数据块长度为60字节,试编程求数据块中所有数据的和,并将其存入内部 RAM 30H和31H单元(30H单元存放和的低8位,31H单元存放和的高8位)。解:ADDREQU100HH;数据块首地址LENEQU60;数据块长度ZHEQU31H;和的高8位地址ZLEQU30H;和的低8位地址ORG0MOVDPTR, #ADDR ;数据块首地址送 DPTRMOVR7, #LEN;数据块长度送 R7MOVZH, #0;结果单

29、元清零10分。若仅写对少量指令,可酌情给 1-3分;若仅有少量指令写错,可酌情扣1-3分。22、设外部RAM 2000H单元为数据块的起始地址,数据块长度为10,试编程求数据块中的最小值,存入内部RAM 30H单元。解:设计思路:将数据块的第1个数据放入结果单元,然后依次与剩余的9个数据进行比较。如果新 的数据比结果单元中的数据还小则将该数据存入结果单元,9次比较完成则结果单元中的数据就是最小值。ORG0MOVDPTR, W2000HMOVXA,DPTR;取数据块的第一个数MOV30H, A;存入结果单元MOVR2,#9;共比较9次INCDPTR;指向第2个数LOOP:CLRCMOVXA, ?

30、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单元存放结果的

31、高8位,30H单元存放结果的低8位。解:XEQU1000HZHEQU31HZLEQU30HORG0MOVZH, #0;结果单元清零MOVZL, #0MOVDPTR, ttlOOOHMOVXA, DPTR;取乂的值MOVB, #2MOVA,B;取乘积的高8位ADDCA, ZH;计算结果高8位,注意必须带进位加MOVZH, AMOVA, ZLADDA, #18;计算结果加18MOVZL, A;存结果低8位MOVA, ZH;取结果高8位ADDCA,#0;将低8位进位加到结果高8位,注意必须带进位加MOVZH, A;存结果高8位END评分办法:不要求写出程序的注释和使用伪指令。程序设计思路正确可得5分

32、,指令完全写对可得 10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。26、若外部RAM的(1000H)二X,请编程实现Y=X+2X+1 (设YV65536),并将结果保存到片内 RAM勺30H和31H单元(31H单元存放结果的高8位,30H单元存放结果的低8位)。解:ORG0MOVMOV30H,#031H,#0;结果单元清零MOVDPTR, #1000HMOVA, DPTR;取乂的值MOVB, AMULAB;求X的平方MOV30H,A;存低8位MOVA,BMOV31H,A;存高8位MOVXA, DPTR;取乂的值MOVB, #2MOVAB;求2 乂ADDA,

33、30H;求低8位和MOV30H,A;存和的低8位MOVA,B;取积的高8位ADDCA, 31H;求高8位和MOV31H,A;存和的高8位MOVA, 30HMOV ZL, #0LOOP: MOVXA,?DPTR取数据ADD A, ZL将数据加到结果单元的低 8位MOV ZL, A存结果低8位MOV A, ZH取结果高8位ADDC A, #0将低8位计算的进位加到高8位中MOV ZH, A存高8位INCDPTR修改地址指针,指向下一个数据DJNZ R7, LOOP没有计算完则继续SJMP $END评分办法:不要求写出程序的注释和使用伪指令。程序设计思路正确可得5分,指令完全写对可得 10分。若仅写

34、对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。25、若外部 RAM的(1000H) =X,内部 RAM (30H) =Y,请编程实现 Z=X*X+3Y+18 (设 Z<65536),并每 结果保存 到片内RAM的40H和41H单元(41H单元存放结果的高8位,40H单元存放结果的低8位)。解:XEQU1000HYEQU30HZHEQU41HZLEQU40HORG0MOVZH, #0;结果单元清零MOVZL, #0MOVDPTR, #1000HMOVXA,DPTR;取乂的值MOVB,AMULAB;计算x*xADDA, ZLMOVZL, A;存结果低8位MOVA,B;取

35、乘积高8位ADDA, ZHMOVZH, A;存结果高8位MOVXA,Y;取丫MOVB, #3MULAB;计算3*YADDA, ZL;计算结果低8位MOVZL,AMOV30H, A;存和的低8位MOVA,BMOV31H, A;存和的高8位MOVDPTR, #1300HMOVXA,DPTR;AbMOVB,AMULAB;求质ADDA, 30H;求 a2+b2MOV30H, AMOVA,BADDCA,31HMOV31H, AMOVA, 30HADDA, #5;加5MOV30H, AMOVA, 31HADDCA, #0;加上低8位的进位MOV31H, ASJMP$;停机END评分办法:不要求写出程序的注

36、释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。29、若内部RAM勺(30H) =X, (31H) =Y,请编程实现Z=X+5Y (设Z<65536),并将结果保存到片外RAM勺1000H和1001H单元(1001H单元存放结果的高8位,1000H单元存放结果的低8位。解:ORG0MOVDPTR, #1000H;结果地址指针赋值MOVA, 30H;取乂MOVB, AMULAB;求般MOVXDPTR, A;存般低8位INCDPTR;指向结果单元高8位MOVA,BMOVXDPTR,A;存才高8位DECDPL;指向

37、结果单元低8位MOVA, 31H;取丫MOVB, #5ADDA, #1;加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”,试编程找到它,并将其在外部(30H单元存放地址的高8 位, 解:RAM的存放地

38、址存入内部 31H单元存放地址的低8位。RAM 3 0H和31H单元中MOVDPTR, S2000H;数据块首地址送DPTRMOVR2,#100;数据块长度送R2LOOP MOVXA, ?DPTR;取数据CJNEA, #41H, NEXT;数据不是“A”则转移MOVA, DPHMOV30H, A;存高8位地址MOVA,DPLMOV31H, A;存低8位地址SJMP$;停机NEXT: INCDPTR;修改地址指针DJNZR2,LOOP;没有找到则继续SJMP$;停机ORG0评分办法:不要求写出程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写 对少量指令,可酌情给1-3分;若仅

39、有少量指令写错,可酌情扣1-3分。28、若内部RAM的(20H) =a,外部RAM (1300H) =b,请编程实现y=a2+b2+5 (设y<65536),并将结果保存到片内RAM的30H和31H单元(31H单元存放结果的高解:8位,30H单元存放结果的低8位)ORG0MOVA, 20H航MOVB,AMULAB;求#DJNZ R2, LOOPSJMP $END;没有加完则循环;停机评分办法:不要求写出程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写 对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。31、若内部RAM的(20H) =a, (21H)

40、 =b,请编程实现y=a2+b2 (设y<65536),并将结果保存到片外RAM的2000H和0 0 1 H 单元(2001 H单元存放结果的高8位,2 0 0 0 H单元存放结果的低8位。解:ORG0MOVDPTR,#2000H;结果单元低8位地址送DPTRMOVA, 20HMa的值MOVB,AMULAB;求 a2MOVXDPTR, A;存事低8位MOVA,BINCDPTR;指向结果单元高8位MOVXDPTR, A;存结果高8位DECDPL;指向结果单元低8位MOVA,21H;取1A的值MOVB,AMULAB;求$MOVRO, A;暂存b2的低8位MOVXA,?DPTR;取结果低8位A

41、DDA, RO;求低8位的和MOVX?DPTR, A;存结果低8位INCDPTR;指向结果单元高8位MOVXA,?DPTR;取结果高8位ADDCA,B;加上b2的高8位和低8位求和的进位MOVX?DPTR, A;存结果高8位SJMP$;停机END评分办法:不要求写出程序的注释,也不要求使用子程序。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分32、将内部RAM40H为起始地址的32个连续单元中的十六进制数转换成ASCII码存入外部RAM3000H开始的存储单元中。解:ORG0MOVRO, AMOVXA, DPTRADD

42、A, RO;求乂之+5 丫的低8位和MOVXDPTR,A;存乂之+5 丫的低8位和INCDPTR;指向结果单元高8位MOVXA, DPTR;取结果单元高8位ADDCA,B;求乂之+5 丫的高8位和(注意加上低8位的进MOVXDPTR,A位);存才+5 丫的高8位和SJMP$;停机ENDMUL AB;求5 丫对少量指32字节评分办法:不要求写出程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。30、设内部RAM 20H单元为数据块的起始地址,数据块长度为32字节。请将整个数据块求和(共的数据求和,设和小于 65536)

43、,并把和存入外部RAM 1000H和1001H的单元中(和的高8位存入1001H 单元)。解:ORG0MOVRO, #20H数据块首地址送ROMOVR2, #32数据块长度送R2CLRA累加器清零MOVDPTR,#1000H指向和的低8位MOVXDPTR, A和的低8位清零INCDPTR指向和的高8位MOVX?DPTR, A和的高8位清零DECDPL指向和的低8位LOOP: MOVA, R0取数据MOVRl, A暂存在R1MOVXA, DPTR取和的低8位ADDA,R1求和MOVX?DPTR, A存和的低8位INCDPTR指向和的高8位MOVXA, DPTR取和的高8位ADDCA, #0将和的

44、低8位的进位加到高8位中MOVX?DPTR, A存和的高8位DECDPL指向和的低8位INCRO数据块指针加1MOVRO,#2OH;数据区首地址送ROMOVR2,#10H;数据块长度送R2MOV40H, #OFFH;结果单元送入最大值LOOP: MOVA, R0;取数据CLRC;清进位SUBBA, 40H;利用减法判断该数据是否比最小值单元的数小?JNCNEXT;如果没有借位说明待比较数据比最小值单元的值大则转移MOVA, R0;取最小值MOV40H, A;存最小值NEXT: INCRO;修改地址指针DJNZR2,LOOP;没有比较完则继续比较。SJMP$;停机END评分办法:不要求写出程序的

45、注释。程序设计思路正确可得5分,指令完全写对可得 10分。若仅写 对少量指令,可酌情给1 - 3分;若仅有少量指令写错,可酌情扣1-3 分。34、比较两个ASCII码字符串是否相等。字符串长度在内部RAM 2FH单元,两字符串的首地址分别为 30H、40Ho如果两个字符串相等,置C:Y =1,否则,置CY =0。解:ORG0MOVRO, #30H;第一个字符串首地址送 ROMOVR1,#4OH;第一个字符串首地址送 R1MOVR2,2FH;取字符串长度LOOP: MOVA, R0;取第一个字符串的字符CLRCSUBBA, R1;比较两个字符是否相等JNZSTOP;结果不为零说明两个字符串不相等INCRO;修改地址指针INCR1DJNZR2,LOOP;没有比较完则继续SETBC;比较完,置两字符串相等标志SJMP$;停机STOP: CLRC;两字符串不相等,清进位标志SJMP$;停机END评分办法:不要求写出程序的注释。程序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论