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

上传人:李司机 文档编号:5980957 上传时间:2023-09-10 格式:DOCX 页数:47 大小:210.04KB
返回 下载 相关 举报
《单片机》编程题题库答案.docx_第1页
第1页 / 共47页
《单片机》编程题题库答案.docx_第2页
第2页 / 共47页
《单片机》编程题题库答案.docx_第3页
第3页 / 共47页
《单片机》编程题题库答案.docx_第4页
第4页 / 共47页
《单片机》编程题题库答案.docx_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《《单片机》编程题题库答案.docx》由会员分享,可在线阅读,更多相关《《单片机》编程题题库答案.docx(47页珍藏版)》请在三一办公上搜索。

1、单片机原理及应用编程题题库参考答案六1、内部RAM30H和31H单元中存放着2个0-9的ASCII码(高位字节在前),请将其转换为压缩BCD码(高位在前)并存入外部RAM230OH单元中。解:ORGOHLJMPSTARTORG30HSTART:MOVA,30HANLA,#0FHSWAPAMOVR0,AMOVA,31HANLA,#0FHORL,ROMOVDPTR,#230OHMOVXDPTR,AEND评分方法:不要求写出程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。2、将存放在内部RAM30H-35H单元的

2、压缩型BCD码转换成相应的ASCII码,依次存放到外部RAM2100H起先的单元区中。ORGOHLJMPSTARTORG30HSTART:MOVR0,#30HMOVR2,#06HMOVDPTR,#2100HLOOP:MOVA,R0SWAPAANLA,#0FHORLA,#30HMOVXDPTR,AINCDPTRMOVA,R0ANLA,#0FHORLA,#30HMOVXDPTR,AINCDPTRINCRODJNZR2,LOOPSJMP$END评分方法:不要求写出程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。3

3、、内部RAM20H和30H起先的单元分别存放着16个16进制数,请将对应单元的内容相加(不考虑溢出),并将和存入外部RAM2000H起先的单元中。解:ORG0LJMPSTARTORG30HSTART:MOVR0,#20HMOVRl,#30HMOVDPTR,#2000HMOVR2,#08H;每个单元存放2个16进制数,故16个16进制数占用8个单元LOOP:MOVA,R0DDA,RIMOVXWTR,INCROINCRlINCDPTRDJNZR2,LooPSJMP$END评分方法:不要求写出程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量

4、指令写错,可酌情扣1-3分。4、请编写多字节无符号数减法程序。被减数存放在内部RAU20H起先的8个单元中,减数存放在内部RAM30H起先的8个单元,请将差存放到外部RAM2000H起先的8个单元中,借位存放到OV标记中。留意:全部数据均依据从低字节到高字节的依次存放。ORG0LJMPSTARTORG30HSTART:MOVR0,#20HMOVRl,#30HMOVDPTR,#200OHMOVR2,#08HCLRCLOOP:MOVA,ROSUBBA,RlMOVXDPTR,AINCROINCRlINCDPTRDJNZR2,LOOPMOVOV,CSJMP$END评分方法:不要求写出程序的注释。程序设

5、计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。5、内部RAM40H和41H单元中存放着2个0-9的ASCII码(高位字节在前),请将其转换为压缩BCD码(高位在前)并存入外部RAM200OH单元中。解:ORGOH1.JMPSTARTORG30HSTART:MOVA,40HANLA,#OFHSWAPAMOVR0,AMOVA,4IHANLA,#0FHORLA,ROMOVDPTR,#200OHMOVXDPTR,AEND评分方法:不要求写出程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-

6、3分;若仅有少量指令写错,可酌情扣1-3分。6、将存放在内部RAM20H-2FH单元的压缩型BCD码(高位在前)转换成相应的ASCII码,依次存放到外部RAMIOoOH起先的单元区中。ORGOHLJMPSTARTORG30HSTART:MOVR0,#20HMOVR2,#10HMOVDPTR,#1000HLOOP:MOVA,RoSWAPAANLA,#0FHORLA,#30H(或MOVXDPTR,AINCDPTRMOVA,R0ADDA,#30H)ANLA,#0FHORLA,#30H(或ADDA,#30H)MOVXDPTR,AINCDPTRINCRODJNZR2,LOOPSJMP$END评分方法:不

7、要求写出程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。7、内部RAM30H和38H起先的单元分别存放着8个压缩BCD码,请将对应单元的内容相加(不考虑溢出),并将和存入外部RAM100oH起先的单元中。解:ORG0LJMPSTARTORG30HSTART:MOVR0,#30HMOVRl,ft38HMOVDPTR,#1000HMOVR2,#08LOOP:MOV,R0ADDA,R1DAAMOVXODPTR,AINCROINCRlINCDPTRDJNZR2,LOoPSJMP$END评分方法:不要求写出程序的注释

8、。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。8、请编写多字节无符号数加法程序。被加数存放在内部RAM20H起先的8个单元中,加数存放在内部RAM30H起先的8个单元,请将和存放到外部RAM2000H起先的8个单元中,进位存放到FO标记中。留意:全部数据均依据从低字节到高字节的依次存放。ORG0LJMPSTARTORG30HSTART:MOVR0,#20HMOVRl,#30HMOVDPTR,#200OHMOVR2,#08HCLRCLOOP:MOVA,RoADDCA,RlMOVXDPTR,AINCROINCRlINC

9、DPTRDJNZR2,LOOPMOVFO,CSJMP$END评分方法:不要求写出程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。9、两个8字节压缩BCD码分别存放在内部RAM30H和40H起先的连续单元中(低位字节在前),请将二者求和(不考虑溢出状况),并将和存入外部RAM100OH起先的单元中。解:ORG0MOVR0,#3011MOVRl,#40HMOVDPTR,#1000HMOVR2,#8CLRCLOOP:MOVA,R0ADDCA,RlDAMOVXDPTR,AINCROINCRlINCDPTRDJNZR

10、2,LOOPSJMP$END10、将存放在内部RAM20H-2FH单元的十六进制数转换成ASCII码,依次存放到外部RAM2000H起先的单元中O解:MOVR0,#20HMOVR2,#16MOVDPTR,#2000HMOVR3,DPHMOVR4,DPLLOOP:MOVA,R0ANLA,#OFHMOVDPTR,#TABMOVCA,0A+DPTRMOVDPH,R3MOVDPL,R4MOVX0DPTR,AINCDPTRMOVR3,DPHMOVR4,DPLMOVA,0ROSWAPAANLA,#OFHMOVDPTR,#TABMOVCA,A+DPTRMOVDPH,R3MOVDPL,R4MOVX0DPTR,

11、AINCDPTRMOVR3,DPHMOVR4,DPLINCRODJNZR2,LoOPSJMP$TAB:DBEND0123456789ABCDEF11、内部RAM30H和外部RAM220OH起先的单元分别存放着两个8字节十六进制数(低位字节存放在前),请将二者相加(不考虑溢出状况),并将和存入内部RAM40H起先的单元中。解:ORG0MOVR0,#30HMOVRl,MOHMOVDPTR,#2200HMOVR2,#8CLRCLOOP:MOVXA,DPTRADDCA,R0MOVR1,AINGROINCRlINCDPTRDJNZR2,LOOPSJMP$END12、请编写多字节无符号数减法程序。被减数存

12、放在内部RAU30H起先的8个单元中,减数存放在内部RAM38H起先的8个单元,请将差存放到外部RAMloOOH起先的8个单元中,借位存放到FO标记中。留意:全部数据均依据从低字节到高字节的依次存放。解:ORG0LJMPSTARTORG30HSTART:MOVR0,#30HMOVR1,#38HMOVMOVCLR1.OOP:MOVSUBBMOVXINCINCINCDJNZMOVSJUPENDDPTR,#1000HR2,#8C,ROA,R1DPTR,ARORlDPTRR2,LOOPC,FO$13、请编写多字节无符号数减法程序。被减数存放在内部RAM20H起先的16个单元中,减数存放在内部RAM30

13、H起先的16个单元,请将差存放到外部RAM2000H起先的16个单元中,借位存放到OV标记中。留意:全部数据均依据从低字节到高字节的依次存放。解:ADDRlADDR21.ENADDR3EQU20HEQU30HEQU16EQU2000HORG01.JMPSTARTORG30HSTART:MOVR0,ftADDRlMOVRl,ftADDR2MOVDPTR,#ADDR3MOVR2,#LENCLRCLOOP:MOVA,R0SUBBA,R1MOVXDPTR,AINCROINCRlINCDPTRDJNZR2,LOOPMOV0V,CSJMP$END14、将存放在内部RAM20H-3FH单元的压缩BCD码转换

14、成ASCII码,依次存放到外部RAM2300H起先的单元中。(注:每个单元均先转换高四位)解:LENEQU20HADDRlEQU20HADDR2EQU2300HORG0LJMPORGSTART:MOVMOVMOV1.OOP:MOVANLSWAPORLMOVXINCMOVANLORLMOVXINCINCDJNZSJMPENDSTART30HR0,#ADDRIDPTR,SDDR2R2,#LENA,R0,#0FOHA,#30H(或ADDA,#30H)DPTR,ADPTRA,R0A,#0FH,#30H(或ADD,#30H)DPTR,ADPTRROR2,LOOP$评分方法:程序设计思路正确可得5分,指令

15、完全写对可得10分。不要求运用伪指令。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。15、将存放在内部RAM30H-35H单元的十六进制数转换成相应的ASCII码,依次存放到外部RAMIlOoH起先的单元区中。(注:每个字节转换时先转换高四位)解:ORG0MOVR0,#30HMOVDPTR,#1100HMOVR2,#6LOOP:MOVA,R0;取须要转换的数ANLA,#0FOH;屏蔽低4位SWAPAPUSHDPHPUSHDPL;爱护目的地址MOVDPTR,#TABMOVCA,A+DPTR;查表得ASCIl码POPDPLPOPDPH;复原目的地址MOVXDPTR,A;

16、存转换后的ASCIl码INCDPTR;修改目的地址指针MOVA,R0;取须要转换的数ANLA,#0FH;屏蔽高4位PUSHDPHPUSHDPL;爱护目的地址MOVDPTR,STABMOVCA,A+DPTR;查表得ASCIl码POPDPLPOPDPH;复原目的地址MOVXDPTR,AINCDPTR;修改目的地址指针INCRO;修改源地址指针DJNZR2,LOOP;未转换完则接着SJUP$TAB:DB0123456789ABCDEFEND评分方法:程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。16、内部RAM30H起先的

17、单元中存放着16个0-9的ASCH码(高位字节在前),请将其转换为压缩BCD码(高位在前)并存入外部RAM100OH起先的单元中。解:ORG0MOVR0,#30HMOVDPTR,#1000HMOVR2,#8;16个ASCH码转换为8个压缩BCD码LOOP:MOVA,R0ANLA,#0FH;屏蔽高4位得到BCD码SWAPAMOVRl,AINCRO;指向下一个ASCIl码MOVA,R0ANLA,#0FH屏蔽高4位得到BCD码ORLA,Rl合成压缩BCD码MOVXDPTR,A存压缩BCD码INCDPTRINCRODJNZR2,LOOPSJMP$END17、设有两个长度为16字节的数组,分别存放在外部

18、RAM0200H和030OH为首址的存储区域中,试编写程序求其对应项之和(不考虑溢出的状况),结果存放在以(MOOH为首址的外部RAM中。解:参考程序清单如下:ORG0MOVR2,#16;数组长度为16个字节MOVR3,#02H;数组1的首地址高8位MOVR4,#03H;数组2的首地址高8位MOVR5,#04H;和数组的首地址高8位MOVDPL,#0;数据指针低8位清零LOOP:MOVDPH,R3MOVXA,DPTR;取被加数MOVRl,A;存被加数MOVDPH,R4MOVXA,DPTR;取加数ADDA,R1;求和MOVDPH,R5MOVXDPTR,A;存和INCDPL;指向下一字节DJNZE

19、NDR2,LOoP;未加完则循环评分方法:程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。18、编程求内部RAM中40H4FH共16个单元中的内容的和(结果为2字节),并将和放入50H和51H单元中(高8位在50H)。解:参考程序清单如下:ORG0LJMPSTARTORG30HSTART:MOVR0,#40H数据区首地址送ROMOVR2,ftl6单元数送R2MOVR3,ft0和的高8位清零CLRA和的低8位清零LoOP:CLRCADDA,RO求和JNCNEXT没有进位则转移INCR3和的高8位存储单元内容加1NEXT:

20、INCRO指向下一个单元DJNZR2,LOOP没加完则循环,和在R3和A中MOV51H,A存低8位结果MOV50H,R3存高8位结果SJMP$END19、有一个长度为16字节的ASCil码字符串存放在外部RAM100oH为首址的存储区域中,字符串中的每一个字符均不相同,试编写程序查找字符串中是否存在ASCn码“9。假如在字符串中存在ASCII码“9”,则将其存储单元的地址存放到内部RAM30H和31H单元中(高8位地址在30H单元中),同时将OV标记位清零。否则,将30H和31H单元的内容清零,并将OV标记位置“1”。解:ORG0MOVSP,#60HMOVDPTR,#1000HMOVR2,#1

21、6LOOP:MOVXA,DPTRCJNEA,#39H,EXITMOV30H,DPHMOV31H,DPLCLROVSJMP$EXIT:INCDPTRDJNZR2,LOOPMOV30H,#0MOV31H,#0SETBOVSJMP$END20、有两个8字节的16进制数a和b,它们分别存放在内部RMI中30H-37H和40H47H的单元中(高位字节在前)。请编程求a-b,并将差存入30H起先的内部RAM单元中(高位字节在前)。若差小于零则将FO标记位置“1”,否则清零。解:设计思路:从16进制数的最低位字节(37H和47H)起先相应字节带借位相减,然后修改地址指针在对次低位字节进行相减,一共循环8次完

22、成两个8字节16进制数的相减。最终将Cy标记的内容传送给FO标记位即可。ORG0MOVR0,#37HMOVR1,#47HMOVR2,#8CLRCLooP:MOVA,ROSUBBA,RlMOVR0,ADECRODECRlDJNZR2,LOOPMOVF0,CSJMP$END21、若外部RAM的(300OH)=X,(3001H)=Y,编程实现Z=X*X+2Y,并将结果存到片内RAM的40H单元(设Z256)。解:XEQU3000HYEQU300IHZEQU40HORG0MOVDPTR,#X变量X的地址送DPTRMOVXA,DPTR取变量XMOVB,A变量X的值送给B寄存器MULAB求X*X,依据题意

23、知积为1字节(在A中)MOVRO,AX*X的结果存入RO中INCDPTR指向变量丫MOVXA,DPTR取变量YMOVB,#2MULAB;求2*Y,依据题意知积为1字节(在A中)ADDA,RO;求求X+2*YMOVZ,A;和存入40H单元SJMP$;停机END评分方法:不要求写出程序的注释和运用伪指令。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。22、设外部RAM200OH单元为数据块的起始地址,数据块长度为10,试编程求数据块中的最小值,存入内部RAM30H单元。解:设计思路:将数据块的第1个数据放入结果单元,然后

24、依次与剩余的9个数据进行比较。假如新的数据比结果单元中的数据还小则将该数据存入结果单元,9次比较完成则结果单元中的数据就是最小值。ORG0MOVDPTR,#200OHMOVXA,DPTR;取数据块的第一个数MOV30H,;存入结果单元MOVR2,#9;共比较9次INCDPTR;指向第2个数LOOP:CLRCMOVXA,DPTRSUBBA,30HJNCLP;没有借位则说明结果单元的数小,不用更换最小值MOVXA,DPTRMOV30H,;更换最小值LP:INCDPTR;指向下一个数DJNZR2,LOOP;没有比较完则接着循环SJMP$;停机END评分方法:不要求写出程序的注释。程序设计思路正确可得

25、5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。23、若外部RAM的(100OH)=X,(100lH)=Y,请编程实现Z=2X+Y*Y+5(设Z65536),并将结果保存到片内RAM的30H和31H单元(31H单元存放结果的高8位,30H单元存放结果的低8位)。解:XEQU100OHZHEQU31HZLEQU30HORG0MOVZH,#0;结果单元清零MOVZL,#0MOVDPTR,#1000HMOVXA,DPTR;取乂的值MOVB,#2MULAB;计算2XADDA,ZLMOVZL,A;存结果低8位MOV,B;取乘积高8位ADD,ZHMO

26、VZH,A;存结果高8位INCDPTR;指向YMOVXA,DPTR;取丫MOVB,AMULAB;计算Y*YADD,ZL;计算结果低8位MOVZUAMOVA,B;取乘积的高8位ADDCA,ZH;计算结果高8位,留意必需带进位加MOVZH,AMOVA,ZLADDA,#5;计算结果加5MOVZL,AMOVZH,A;存结果低8位ADDCA,#0;将低8位进位加到结果高8位,留意必需带进位加MOVZH,A;存结果高8位END评分方法:不要求写出程序的注释和运用伪指令。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。24、设外部R

27、AUIoOoH单元为数据块的起始地址,数据块长度为60字节,试编程求数据块中全部数据的和,并将其存入内部RAM30H和31H单元(30H单元存放和的低8位,31H单元存放和的高8位)。解:ADDREQU100HH;数据块首地址LENEQU60;数据块长度ZHEQu31H;和的高8位地址ZLEQU30H;和的低8位地址ORG0MOVDPTR,#ADDR;数据块首地址送DPTRMOVR7,#LEN;数据块长度送R7MOVZH,#0;结果单元清零MOVZL,#0LOOP:MOVXA,DPTR;取数据ADDA,ZL;将数据加到结果单元的低8位MOVZL,A;存结果低8位MOV,ZH;取结果高8位ADD

28、CA,#0;将低8位计算的进位加到高8位中MOVZH,A;存高8位INCDPTR;修改地址指针,指向下一个数据DJNZR7,LOOP;没有计算完则接着SJMP$END评分方法:不要求写出程序的注释和运用伪指令。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。25、若外部RAM的(IoOOH)=X,内部RAM(30H)=Y,请编程实现Z=X*X+3Y+18(设Z65536),并将结果保存到片内RAM的40H和41H单元(41H单元存放结果的高8位,40H单元存放结果的低8位)。解:XEQU1000HYEQU30HZHEQ

29、U41HZLEQU40HORG0MOVZH,#0;结果单元清零MOVZL,#0MOVDPTR,#1000HMOVXA,0DPTR;取乂的值MOVB,AMULAB;计算X*XADDA,ZLMOVZL,A;存结果低8位MOVA,B;取乘积高8位ADDA,ZHMOVZH,A;存结果高8位MOVXA,Y;取丫MOVB,#3MULAB;计算3*YADDA,ZL;计算结果低8位MOVZL,AMOVA,B;取乘积的高8位ADDCAtZH;计算结果高8位,留意必需带进位加MOVZH,AMOVA,ZLADDA,#18;计算结果加18MOVZL,A;存结果低8位MOVA,ZH;取结果高8位ADDCA,#0;将低8

30、位进位加到结果高8位,留意必需带进位加MOVZH,A;存结果高8位END评分方法:不要求写出程序的注释和运用伪指令。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。26、若外部RAM的(100OH)=X,请编程实现Y=X+2X+1(设Y65536),并将结果保存到片内RAM的30H和31H单元(31H单元存放结果的高8位,30H单元存放结果的低8位)。解:ORG0MOV30H,#0;结果单元清零MOV31H,#0MOVDPTR,#1000HMOVA,DPTR;取乂的值MOVB,AMULAB;求乂的平方MOV30H,A;

31、存低8位MOVA,BMOV31H,A;存高8位MOVXA,DPTR;取乂的值MOVB,#2MOVAB;求2*ADDA,30H;求低8位和MOV30H,A;存和的低8位MOVA,B;取积的高8位ADDCA,31H;求高8位和MOV31H,A;存和的高8位MOVA,30HADDA,ftl;加1MOV30H,A;存和的低8位MOVA,31HADDCA,#0;和的高8位加上低8位运算的进位MOV31H,A;存和的高8位SJMP$;停机END27、设外部RAM2000H单元为数据块的起始地址,数据块长度为100字节。假设在数据块中存在唯一的一个ASCII字符“A”,试编程找到它,并将其在外部RAM的存放

32、地址存入内部RAU30H和31H单元中(30H单元存放地址的高8位,31H单元存放地址的低8位)。解:ORG0MOVDPTR,#200OH;数据块首地址送DPTRMOVR2,#100;数据块长度送R2LOOP:MOVXA,DPTR;取数据CJNEA,#41H,NEXT;数据不是“A”则转移MOV,DPHMOV30H,A;存富8位地址MOVA,DPLMOV31H,A;存低8位地址SJMP$;停机NEXT:INCDPTR;修改地址指针DJNZR2,LOOP;没有找到则接着SJMP$;停机28、若内部RAM的(20H)=a,外部RAM(1300H)=b,请编程实现y=a2+b%5(设y65536),

33、并将结果保存到片内RAM的30H和31H单元(31H单元存放结果的高8位,30H单元存放结果的低8位)。解:ORG0MOVA,20H;aMOVB,AMULAB;求TMOV30H,A;存和的低8位MOVA,BMOV31H,A;存和的高8位MOVDPTR,#130OHMOVXA,DPTR;取匕MOVB,AMULAB加?ADDA,30H;求a2+b2MOV30H,AMOVA,BADDCA,31HMOV31H,AMOVA,30HADDA,#5;加5MOV30H,AMOVA,31HADDCA,#0;加上低8位的进位MOV31H,ASJMP$;停机END评分方法:不要求写出程序的注释。程序设计思路正确可得

34、5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。29、若内部RAM的(30H)=X,(31H)=Y,请编程实现Z=X?+5Y(设Z65536),并将结果保存到片外RAM的100OH和100lH单元(IOolH单元存放结果的高8位,100OH单元存放结果的低8位)。解:ORG0MOVDPTR,#100OH;结果地址指针赋值MOV,30H;mxMOVB,AMULAB;求*2MOVXDPTR,A;存乂?低8位INCDPTR;指向结果单元高8位MOVA,BMOVXDRTR,A;存乂2高8位DECDPL;指向结果单元低8位MOVA,31H;取丫MO

35、VB,#5MULAB;求5丫MOVRO,AMOVXA,DPTRADDA,ROiX2+5Y的低8位和MOVXDRTR,A;存X2+5Y的低8位和INCDPTR;指向结果单元高8位MOVXA,DPTR;取结果单元高8位ADDCA,B;求乂?+5丫的高8位和(留意加上低8位的进位)MOVXDRTR,A;存X2+5Y的高8位和SJMP$;停机END评分方法:不要求写出程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。30、设内部RAM20H单元为数据块的起始地址,数据块长度为32字节。请将整个数据块求和(共32字节的

36、数据求和,设和小于65536),并把和存入外部RAM 1000H和IOOlH的单元中(和的高8位存解:ORG0MOVR0, #20HMOVR2, #32入IoOIH单元)。;数据块首地址送RO ;数据块长度送R2CLRA;累加器清零MOVDIyR,#1000H;指向和的低8位MOVX如PTR,A;和的低8位清零INCDRTR;指向和的高8位MOVXDPTR,A;和的高8位清零DECDPL;指向和的低8位LOOP:MOVA,R0;取数据MOVRl,A;暂存在RlMOVXA,DPTR;取和的低8位ADDA,Rl;求和MOVX如PTR,A;存和的低8位INCDRTR;指向和的高8位MOVXA,DPTR;取和的高8位ADDCA,#0;将和的低8位的进位加到高8位中MOVXDPTR,A;存和的高8位DECDPL;指向和的低8位INCRO;数据块指针加1DJNZR2,LOOP;没有加完则循环SJMP$;停机END评分方法:不要求写出程序的注释。程序设计思路正确可得5分,指令完全写对可得10分。若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号