完整版单片机编程题题库答案_第1页
完整版单片机编程题题库答案_第2页
完整版单片机编程题题库答案_第3页
完整版单片机编程题题库答案_第4页
完整版单片机编程题题库答案_第5页
免费预览已结束,剩余24页可下载查看

下载本文档

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

文档简介

1、第1页共27页?单片机原理及应用?编程题题库参考答案六、编程每题10分1、内部RAM30H和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分.假设仅写对少量指令,可酌情

2、给 1-3分;假设仅有少量指令写错,可酌情扣1-3分.2、将存放在内部 RAM 30H-35H单元的压缩型 BCD码转换成相应的 ASCII码,依次存放到外部 RAM 2100H开始的单元区中.ORG 0H LJMP START ORG 30HSTART: MOV R0,#30HMOV R2,#06HMOV DPTR,#2100HLOOP : MOV A,R0SWAP AANL A,#0FH ORL A,#30H MOVX DPTR,AINC DPTRMOV A,R0 ANL A,#0FH ORL A,#30H MOVX DPTR,A INC DPTR INC R0 DJNZ R2,LOOP

3、SJMP $ END评分方法:不要求写出程序的注释.程序设计思路正确可得5分,指令完全写对可得 10分.假设仅写对少量指令,可酌情给 1-3分;假设仅有少量指令写错,可酌情扣 1-3分.3、内部RAM 20H和30H开始的单元分别存放着 16个16进制数,请将对应单元的内容相加不考 虑溢出,并将和存入外部 RAM 2000H开始的单元中.解:ORG 0LJMP START ORG 30HSTART : MOV R0,#20HMOV R1,#30HMOV DPTR,#2000HMOV R2,#08H ;每个单元存放 2个16进制数,故16个16进制数占用8个单元LOOP : MOV A,R0AD

4、D A,R1MOVX DPTR,AINC R0INC R1 INC DPTR DJNZ R2,LOOP SJMP $ END 评分方法:不要求写出程序的注释.程序设计思路正确可得5分,指令完全写对可得10分.假设仅写对少量指令,可酌情给 1-3分;假设仅有少量指令写错,可酌情扣1-3分.4 、请编写多字节无符号数减法程序.被减数存放在内部RAM 20HFF始的8个单元中,减数存放在内部RAM 30H开始的8个单元,请将差存放到外部 RAM 2000HFF始的8个单元中,借位存放到 OV标志中. 注意:所有数据均根据从低字节到高字节的顺序存放.ORG 0LJMP STARTORG 30HSTAR

5、T : MOV R0,#20HMOV R1,#30HMOV DPTR,#2000HMOV R2,#08H CLR C LOOP : MOV A,R0SUBB A,R1MOVX DPTR,AINC R0INC R1INC DPTRDJNZ R2,LOOPMOV OV,C SJMP $ END 评分方法:不要求写出程序的注释.程序设计思路正确可得5分,指令完全写对可得 10分.假设仅写对少量指令,可酌情给 1-3分;假设仅有少量指令写错,可酌情扣1-3分.5、内部RAM40H和41H单元中存放着2个0-9的ASCII码高位字节在前,请将其转换为压缩 BCD 码高位在前并存入外部RAM 2000H单

6、元中.解: ORG 0HLJMP STARTORG 30HSTART MOV A,40HANL A,#0FHSWAP AMOV R0,AMOV A,41HANL A,#0FHORL A,R0MOV DPTR , #2000HMOVX DPTR,AEND评分方法:不要求写出程序的注释.程序设计思路正确可得5分,指令完全写对可得10分.假设仅写对少量指令,可酌情给 1-3分;假设仅有少量指令写错,可酌情扣1-3分.6、将存放在内部 RAM 20H-2FH单元的压缩型 BC加高位在前转换成相应的 ASCII码,依次存放到 外部RAM 1000HFF始的单元区中.ORG 0H LJMP START O

7、RG 30H START: MOV R0,#20H MOV R2,#10H MOV DPTR,#1000H LOOP : MOV A,R0SWAP 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 0LJMP START ORG 30HSTART : MOV R0,#30H第2页共27页MOV R1,#38HMOV DPTR,#1000H MOV R2,#08 LOOP : MOV A,R0ADD 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 20HFF始的8个单元中,加数存放在内部RAM 30H开始的8个单元,请将和存放到外部 RAM 2000HFF始的8个单元中,进位存放到 F0标志中. 注意:所有数据均根据从低字节到高字节的顺序存放.ORG 0 LJMP START ORG 30H START : MOV R0,#20H MOV R1,#30H MOV DPTR,#2000H MOV R2,#08H CLR C LOOP : MOV A,R0ADDC A,R1 MOVX DPTR,A

10、INC R0 INC R1 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,#30HMOV R1,#40HMOV DPTR,#1000HMOV R2,#8 CLR C LOOP: MOV A,R0

11、ADDC A,R1 DA A MOVX DPTR,A INC R0 INC R1 INC DPTR DJNZ R2,LOOP SJMP $ END 评分方法:程序设计思路正确可得 5分;对于仅写出局部指令的学生可酌情给1-4分;程序编制正确可得总分值,假设存在少量错误,可酌情扣 1-3分.10、将存放在内部 RAM 20H-2FH单元的十六进制数转换成ASCII码,依次存放到外部 RAM 2000HFF始的单元中.解: MOV R0,#20HMOV R2,#16MOV DPTR,#2000HMOV R3, DPHMOV R4, DPLLOOP: MOV A,R0ANL A,#0FHMOV DP

12、TR,#TABMOVC A,A+DPTRMOV DPH,R3MOV DPL,R4MOVX DPTR,AINC DPTRMOV R3,DPH第3页共27页MOV R4,DPLMOV A,R0SWAP AANL A,#0FHMOV DPTR,#TABMOVC A,A+DPTRMOV DPH,R3MOV DPL,R4 MOVX DPTR,A INC DPTRMOV R3,DPHMOV R4,DPLINC R0DJNZ R2,LOOPSJMP $TAB: DB'0123456789ABCDEFEND评分方法:程序设计思路正确可得5分;对于仅写出局部指令的学生可酌情给1-4分;程序编制正确可得总

13、分值,假设存在少量错误,可酌情扣1-3分.11、内部RAM 30H和外部RAM 2200H开始的单元分别存放着两个8字节十六进制数低位字节存放在前,请将二者相加不考虑溢出情况 ,并将和存入内部 RAM 40H开始的单元中.解: ORG 0MOV R0,#30HMOV R1,#40HMOV DPTR,#2200HMOV R2,#8 CLR CLOOP: MOVX A,DPTRADDC A,R0 MOV R1,A INC R0INC R1INC DPTRDJNZ R2,LOOP SJMP $评分方法:程序设计思路正确可得5分;对于仅写出局部指令的学生可酌情给1-4分;程序编制正确可得总分值,假设存

14、在少量错误,可酌情扣1-3分.12、请编写多字节无符号数减法程序.被减数存放在内部RAM 30H开始的8个单元中,减数存放在内部RAM38H开始的8个单元,请将差存放到外部 RAM1000H开始的8个单元中,借位存放到 F0标志中. 注意:所有数据均根据从低字节到高字节的顺序存放.解: ORG 0LJMP START ORG 30H START: MOV R0,#30H MOV R1,#38H MOV DPTR,#1000H MOV R2,#8 CLR C LOOP: MOV A,R0 SUBB A,R1 MOVX DPTR,A INC R0 INC R1 INC DPTR DJNZ R2,L

15、OOP MOV C,F0 SJMP $ 评分方法:程序设计思路正确可得5分;对于仅写出局部指令的学生可酌情给1-4分;程序编制正确可得总分值,假设存在少量错误,可酌情扣1-3分.13、请编写多字节无符号数减法程序.被减数存放在内部RAM 20H开始的16个单元中,减数存放在内部RAM 30HFF始的16个单元,请将差存放到外部RAM 2000H开始的16个单元中,借位存放到 OV标志中.注意:所有数据均根据从低字节到高字节的顺序存放.解: ADDR1 EQU 20HADDR2 EQU 30HLEN EQU 16ADDR3 EQU 2000HORG 0LJMP STARTORG 30HSTART

16、: MOV R0,#ADDR1MOV R1,#ADDR2MOV DPTR,#ADDR3第4页共27页MOV R2,#LEN CLR CLOOP:MOV A,R0SUBB 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单元的压缩 BC加转换成 ASCII码,依次存放到外部 RAM 2300HFF

17、 始的单元中.(注:每个单元均先转换高四位) 解: LEN EQU 20HADDR1 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 R

18、2,LOOPSJMP $ END评分方法:程序设计思路正确可得 5分,指令完全写对可得 10分.不要求使用伪指令.假设仅写对少量 指令,可酌情给1-3分;假设仅有少量指令写错,可酌情扣1-3分.15、将存放在内部 RAM 30H-35H单元的十六进制数转换成相应的ASCII码,依次存放到外部RAM1100H开始的单元区中.注:每个字节转换时先转换高四位解:ORG 0MOVR0,#30HMOVDPTR,#1100HMOVR2,#6LOOP: MOV A,R0;取需要转换的数ANLA,#0F0H;屏敝低4位SWAPAPUSHDPHPUSHDPL;保护目的地址MOVDPTR,#TABMOVCA,A+

19、DPTR ;查表得ASCII码POPDPLPOPDPH;恢复目的地址MOVXDPTR,A ;存转换后的ASCII码INCDPTR;修改目的地址指针MOVA,R0;取需要转换的数ANLA,#0FH ;屏蔽高4位PUSHDPHPUSHDPL;保护目的地址MOVDPTR,#TABMOVCA,A+DPTR ;查表得ASCII码POPDPLPOPDPH;恢复目的地址MOVXDPTR,AINCDPTR;修改目的地址指针INCR0;修改源地址指针DJNZR2,LOOP ;未转换完那么继续SJMP$TAB DB'0123456789ABCDE FEND第5页共27页评分方法:程序设计思路正确可得 5分

20、,指令完全写对可得10分.假设仅写对少量指令, 可酌情给1-3 分;假设仅有少量指令写错,可酌情扣1-3分.16、内部RAM 30H开始的单元中存放着 16个0-9的ASCII码高位字节在前,请将其转换为压缩BC加高位在前并存入外部解: ORG 0MOV R0,#30HMOV DPTR,#1000HMOV R2,#8 ; 16LOOP: MOV A,R0ANL A,#0FH ;SWAP AMOV R1,AINC R0 ;MOV A,R0ANL A,#0FH ;ORL A,R1 ;MOVX DPTR,A ;INC DPTRINC R0DJNZ R2,LOOPSJMP $ENDRAM 1000H开

21、始的单元中.个ASCII码转换为8个压缩BC加屏蔽高4位得到BCD马指向下一个ASCII码屏蔽高4位得到BCD马 合成压缩BCD马存压缩BC加评分方法:程序设计思路正确可得 5分,指令完全写对可得10分.假设仅写对少量指令, 可酌情给1-3 分;假设仅有少量指令写错,可酌情扣1-3分.17、设有两个长度为16字节的一维数组数组的每个元素为1个字节,分别存放在外部 RAM 0200H 和0300H为首址的存储区域中,试编写程序求其对应项之和不考虑溢出的情况,结果存放在以 0400H为首址的外部 RAMo解:参考程序清单如下:ORG0MOVR2,#16;数组长度为16个字节MOVR3,#02H;数

22、组1的首地址高8位MOVR4,#03H;数组2的首地址高8位MOVR5,#04H;和数组的首地址高8位MOVDPL,#0 ;数据指针低8位清零LOOP:MOV DPH,R3第6页MOVXA,DPTR ;取被加数MOVR1,A ;存被加数MOVDPH,R4MOVXA,DPTR ;取加数ADDA,R1;求和MOVDPH,R5MOVXDPTR,A ;存和INCDPL;指向卜一字节DJNZR2,LOOP ;未加完那么循环END评分方法:;程序设计思路正确可得5分,指令完全写对可得10分.假设仅写对少量指令,分;假设仅有少量指令写错,可酌情扣 1-3分.可酌情给1-318、编程求内部 RAM43 40H

23、- 4FH共16个单元中的内容的和 结果为2字节,并将和放入50H和51HORG 0LJMPORGSTART30HSTART:MOVR0,#40H ;数据区首地址送 R0MOVR2,#16;单元数送R2MOVR3,#0;和的高8位清零CLRA;和的低8位清零LOOP:CLRCADDA,R0;求和JNCNEXT ;没有进位那么转移INCR3;和的高8位存储单兀内容加1NEXT: INC R0;指向卜一个单兀DJNZR2,LOOP;没加完那么循环,和在 R3和A中MOV51H,A存低8位结果MOV50H,R3;存局8位结果SJMP$END单元中高8位在50H.解:参考程序清单如下:评分方法:程序设

24、计思路正确可得 5分,指令完全写对可得10分.假设仅写对少量指令, 可酌情给1-3分;假设仅有少量指令写错,可酌情扣 1-3分.19、有一个长度为16字节的ASCII码字符串存放在外部 RAM 1000H为首址的存储区域中,字符串中的每一个字符均不相同,试编写程序查找字符串中是否存在ASCII码“9.如果在字符串中存在 ASCII共27页码“9,那么将其存储单元的地址存放到内部RAM 30H和31H单元中高8位地址在30H单元中,同时将O丽志位清零.否那么,将 30H和31H单元的内容清零,并将 O丽志位置“1. 解: ORG 0MOV SP,#60HMOV DPTR,#1000HMOV R2

25、,#16 LOOP: MOVX A,DPTRCJNE A,#39H,EXITMOV 30H,DPHMOV 31H,DPL CLR OV SJMP $ EXIT: INC DPTR DJNZ R2,LOOP MOV 30H,#0 MOV 31H,#0 SETB OV SJMP $ END评分方法:程序设计思路正确可得 5分,指令完全写对可得10分.假设仅写对少量指令, 可酌情给1-3 分;假设仅有少量指令写错,可酌情扣1-3分.20、有两个8字节的16进制数a和b,它们分别存放在内部 RAM43 30H37H和40H47H的单元中 高位字节在前.请编程求a-b,并将差存入30H开始的内部RA元中

26、高位字节在前.假设差小于零 那么将F0标志位置“1,否那么清零.解:设计思路:从16进制数的最低位字节37H和47H开始相应字节带借位相减,然后修改地址 指针在对次低位字节进行相减,一共循环8次完成两个8字节16进制数的相减.最后将Cy标志的内容传送给F0标志位即可.ORG 0MOV R0,#37HMOV R1,#47H MOV R2,#8 CLR C LOOP: MOV A,R0SUBB A,R1 MOV R0,A DEC R0 DEC R1DJNZR2,LOOPMOVF0,CSJMP$END评分方法:程序设计思路正确可得 分;假设仅有少量指令写错,可酌情扣5分,指令完全写对可得10分.假设

27、仅写对少量指令, 可酌情给1-31-3 分.21、假设外部 RAM勺3000H =X,元设 ZV 256 y解: X EQU 3000H3001H =Y,编程实现Z=X*X+2Y,并将结果存到片内YEQU3001HZEQU40HORG0MOVDPTR,#X ;MOVXA,DPTR ;MOVB,A;MULAB;MOVR0,A; X*XINCDPTR;MOVXA,DPTR ;MOVB,#2MULAB;ADDA,R0;MOVZ,A;SJMPEND$;RAM勺40H单变量X的地址送DPTR取变量X变量X的值送给B存放器求X*X,根据题意知积为1字节在A中的结果存入R0中指向变量Y取变量Y求2*Y,根据

28、题意知积为1字节在A中求 X*X+2*Y和存入40H单元停机评分方法:不要求写出程序的注释和使用伪指令.程序设计思路正确可得5分,指令完全写对可得10分.假设仅写对少量指令,可酌情给1-3分;假设仅有少量指令写错,可酌情扣1-3分.22、设外部RAM 2000H单元为数据块的起始地址,数据块长度为10,试编程求数据块中的最小值,存入内部 RAM 30Hll元.解:设计思路:将数据块的第 1个数据放入结果单元,然后依次与剩余的 9个数据进行比较.如果新 的数据比结果单元中的数据还小那么将该数据存入结果单元,9次比较完成那么结果单元中的数据就是最小值.ORG0MOVDPTR,#2000HMOVXA

29、,DPTRMOV30H,A;取数据块的第一个数存入结果单兀第7页共27页MOVR2,#9;共比较9次INCDPTR ;指向第2个数LOOP: CLR CMOVXA,DPTRSUBBA,30HJNCLP;没有借位那么说明结果单兀的数小,不用更换最小值MOVXA,DPTRMOV30H,A;更换最小值LP: INCDPTR ;指向卜一个数DJNZR2,LOOP ;没有比较完那么继续循环SJMP$;停机END评分方法:不要求写出程序的注释.程序设计思路正确可得5分,指令完全写对可得 10分.假设仅写对少量指令,可酌情给 1-3分;假设仅有少量指令写错,可酌情扣1-3分.MOVA,B ;取乘积的图8位A

30、DDCA,ZH ;计算结果高8位,注意必须带进位加MOVZH,AMOVA,ZLADDA,#5;计算结果加5MOVZL,AMOVZH,A ;存结果低8位ADDCA,#0;将低8位进位加到结果局 8位,注思必须巾进位加MOVZH,A ;存结果同8位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 1000HZH EQU 31HZL EQU30HORG0MOVZH,#0;结果单元清零MOVZL,#0MOVDPTR,#1000HMOVXA,DPTR ;取X的值MOVB,#2MULAB;计算2XADDA,ZLMOVZL,A ;存结果低8位MOVA,B ;取乘积图8位ADDA,ZHMOVZH,A ;存结果同8位INCDPTR ;指向YMOVXA,DPTR ;取YMOVB,AMULAB;计算Y*YADDA,ZL ;计算结果低8位MOVZL,A24、设外部RAM 1000H单元为数据块的起始地址,数据块长度为60字节,试编程求数据块中

32、所有数据的和,并将其存入内部RAM 30用口 31H单元30H单元存放和的低 8位,31H单元存放和的高 8位.解:ADDR EQU 100HH;数据块首地址LEN EQU 60;数据块长度ZH EQU 31H;和的高8位地址ZL EQU 30H;和的低8位地址ORG 0MOV DPTR,#ADDR ;数据块首地址送DPTRMOV R7,#LEN ;数据块长度送R7MOV ZH,#0;结果单元清零MOV ZL,#0LOOP: MOVX A,DPTR ;取数据ADD A,ZL ;将数据加到结果单元的低8位MOV ZL,A ;存结果低8位MOV A,ZH ;取结果高8位ADDC A,#0;将低8位

33、计算的进位加到高8位中MOV ZH,A ;存局8位INC DPTR ;修改地址指针,指向卜一个数据DJNZ R7,LOOP ;没有计算完那么继续SJMP $END评分方法:不要求写出程序的注释和使用伪指令.程序设计思路正确可得5分,指令完全写对可得10分.假设仅写对少量指令,可酌情给 1-3分;假设仅有少量指令写错,可酌情扣1-3分.共27页25、假设外部 RAMW 1000H =X,内部 RAM30H =Y,请编程实现 Z=X*X+3Y+18 设 Z<65536,并将结果保存到片内 RAM的40H和41H单元41H单元存放结果的高 8位,40H单元存放结果的低 8位.YEQU30HZH

34、EQU 41HZLEQU40HORG0MOVZH,#0;结果单元清零MOVZL,#0MOVDPTR,#1000HMOVXA,DPTR ;取X的值MOVB,AMULAB;计算X*XADDA,ZLMOVZL,A ;存结果低8位MOVA,B ;取乘积图8位ADDA,ZHMOVZH,A ;存结果高8位MOVXA,Y ;取 YMOVB,#3MULAB;计算3*YADDA,ZL ;计算结果低8位MOVZL,AMOVA,B ;取乘积的高8位ADDCA,ZH ;计算结果高8位,注意必须带进位加MOVZH,AMOVA,ZLADDA,#18;计算结果加18MOVZL,A ;存结果低8位MOVA,ZH ;取结果高8

35、位ADDCA,#0;将低8位进位加到结果局 8位,注思必须巾进位加MOVZH,A ;存结果高8位END评分方法:不要求写出程序的注释和使用伪指令.程序设计思路正确可得5分,指令完全写对可得10分.假设仅写对少量指令,可酌情给1-3分;假设仅有少量指令写错,可酌情扣1-3分.第9页解: X EQU 1000H结果单元清零取X的值求X的平方存低8位存高8位取X的值求2X求低8位和存和的低8位取积的高8位求高8位和存和的高8位加1存和的低8位和的高8位加上低8位运算的进位存和的高8位停机26、假设外部RAM勺 1000H =X,请编程实现 Y4+2X+1 设Y<65536,并将结果保存到片内R

36、AM勺30H和31H单元31H单元存放结果的高 8位,30H单元存放结果的低 8位.解: ORG 0 MOV 30H,#0;MOV 31H,#0 MOV DPTR,#1000H MOV A,DPTR MOV B,A MUL AB ; MOV 30H,A;MOV A,B MOV 31H,A;MOVX A,DPTR MOVB,#2MOVAB;ADDA,30H;MOV30H,A;MOVA,B;ADDCA,31H;MOV31H,A;MOVA,30HADDA,#1;MOV30H,A;MOVA,31HADDCA,#0;MOV31H,A;SJMP $;END评分方法:不要求写出程序的注释.程序设计思路正确可

37、得5分,指令完全写对可得 10分.假设仅写对少量指令,可酌情给 1-3分;假设仅有少量指令写错,可酌情扣1-3分.27、设外部RAM 2000H单元为数据块的起始地址,数据块长度为100字节.假设在数据块中存在唯一的一个ASCII字符“A,试编程找到它,并将其在外部RAM勺存放地址存入内部 RAM30H和31H单元中30H单元存放地址的高 8位,31H单元存放地址的低 8位. 解: ORG 0 共27页MOVDPTR,#2000H ;数据块首地址送DPTRMOVR2,#100;数据块长度送R2LOOP:MOVX A,DPTR; 取数据CJNEA,#41H,NEXT ;数据不是“ A那么转移MO

38、VA,DPHMOV30H,A;存图8位地址MOVA,DPLMOV31H,A;存低8位地址SJMP$;停机NEXT: INCDPTR;修改地址指针DJNZR2,LOOP ;没有找到那么继续SJMP$;停机评分方法:不要求写出程序的注释.程序设计思路正确可得5分,指令完全写对可得10分.假设仅写对少量指令,可酌情给 1-3分;假设仅启少量指令与错,可酌情扣1-3分.28、假设内部 RAM的20H =a,外部RAM( 1300H) =b,请编程实现 y=a2+b2+5 (设 y<65536),并将结果保存到片内RAM勺30H和31H单兀31H单兀存放结果的高 8位,30H单兀存放结果的低8位.

39、解:ORG0MOVA,20H;取aMOVB,AMULAB;求a2MOV30H,A;存和的低8位MOVA,BMOV31H,A;存和的高8位MOVDPTR,#1300HMOVXA,DPTR ;取bMOVB,AMULAB;求b2ADDA,30H;求 a2+b2MOV30H,AMOVA,BADDCA,31HMOV31H,AMOVA,30HADDA,#5;加5MOV30H,AMOVA,31HADDC A,#0;加上低8位的进位MOV 31H,ASJMP $;停机END评分方法:不要求写出程序的注释.程序设计思路正确可得5分,指令完全写对可得 10分.假设仅写第10页共27页对少量指令,可酌情给1-3分;

40、假设仅有少量指令写错,可酌情扣1-3分.29、右内部RAM的(30H)=X, 31H =Y,请编程实现 Z=X+5Y 设Z<65536,并将结果保存到片外RAM勺1000H和1001H单兀1001H单兀存放结果的高 8位,1000H单兀存放结果的低 8位.解:ORG 0MOVDPTR,#1000H ;结果地址指针赋值MOVA,30H;取XMOVB,AMULAB;求X2MOVXDPTR,A ;存X2低8位INC DPTR ;指向结果单兀局8位MOVA,BMOVXDPTR,A ;存X2高8位DECDPL ;指向结果单元低8位MOVA,31H;取YMOVB,#5MULAB;求5YMOVR0,A

41、MOVXA,DPTRADDA,R0 ;2求X+5丫的低8位和MOVXDPTR,A ;存X2+5Y的低8位和INC DPTR ;指向结果单兀局 8位MOVXA,DPTR ;取结果单兀局 8位ADDCA,B ;求X2+5Y的高8位和注意加上低 8位的进位MOVXDPTR,A ;存X2+5Y的高8位和SJMP$;停机END评分方法:不要求写出程序的注释.程序设计思路正确可得5分,指令完全写对可得 10分.假设仅写对少量指令,可酌情给 1-3分;假设仅有少量指令写错,可酌情扣1-3分.30、设内部RAM 20H单元为数据块的起始地址,数据块长度为32字节.请将整个数据块求和共32字节的数据求和,设和小

42、于65536,并把和存入外部 RAM 1000H和1001H的单元中和的高 8位存入1001H 单元.第11页共27页解: ORG 0MOVR0,#20H;数据块首地址送R0MOVR2,#32;数据块长度送R2CLRA;累加器清零MOVDPTR,#1000H ;指向和的低8位MOVXDPTR,A ;和的低8位清零INCDPTR;指向和的高8位MOVXDPTR,A ;和的高8位清零DECDPL;指向和的低8位LOOP: MOV A,R0;取数据MOVR1,A;暂存在R1MOVXA,DPTR ;取和的低8位ADDA,R1;求和MOVXDPTR,A ;存和的低8位INCDPTR;指向和的高8位MOV

43、XA,DPTR ;取和的高8位ADDCA,#0;将和的低8位的进位加到高 8位中MOVXDPTR,A ;存和的高8位DECDPL;指向和的低8位INCR0;数据块指针加1DJNZR2,LOOP ;没有加完那么循环SJMP$;停机END评分方法:不要求写出程序的注释.程序设计思路正确可得5分,指令完全写对可得 10分.假设仅写对少量指令,可酌情给 1-3分;假设仅有少量指令写错,可酌情扣1-3 分.31、假设内部RAM的(20H) =a,(21H) =b,请编程实现 y=a2+b2 (设 y<65536),并将结果保存到片外RAM勺2000H和2001H单兀2001H单兀存放结果的高 8位

44、,2000H单兀存放结果的低8位.解:ORG 0MOVDPTR,#2000H ;结果单元低8位地址送DPTRMOVA,20H;取a的值MOVB,AMULAB;求a2MOVXDPTR,A ;存a2低8位MOVA,BINCDPTR;指向结果单兀局8位MOVXDPTR,A ;存结果同8位DECDPL;指向结果单元低8位MOVA,21H;取b的值MOVB,AMULAB;求b2MOVR0,A;暂存b2的低8位MOVXA,DPTR ;取结果低8位ADDA,R0;求低8位的和MOVXDPTR,A ;存结果低8位INCDPTR;指向结果单兀局8位MOVXA,DPTR ;取结果高8位ADDCA,B;加上b2的高

45、8位和低8位求和的进位MOVXDPTR,A ;存结果同8位SJMP$;停机END评分方法:不要求写出程序的注释,也不要求使用子程序.程序设计思路正确可得5分,指令完全写对可得10分.假设仅写对少量指令,可酌情给1-3分;假设仅有少量指令写错,可酌情扣1-3 分.32、将内部 RAM 40H为起始地址的 32个连续单元中的十六进制数转换成ASCH码存入外部 RAM3000H开始的存储单元中.解:ORG 0MOVR0,#40H;源数据块首地址送 R0MOVR2,#32;数据块长度送R2MOVDPTR,#3000H ;目的数据块首地址送 DPTRLOOP: MOV A,R0;取待转换数据ANLA,#

46、0F0H;取局四位数据SWAPA;上下四位数据交换PUSHDPH;保护目标地址指针PUSHDPLMOVDPTR,#TAB ;数据指针指向表格首地址MOVCA,A+DPTR ;查表得到ASCII码POPDPL;恢复目标地址指针POPDPHMOVXDPTR,A ;存转换结果INCDPTR ;指向下一个存储单元MOVA,R0;取待转换数据ANLA,#0FH ;取低四位数据PUSHDPH;保护目标地址指针PUSHDPLMOVDPTR,#TAB ;数据指针指向表格首地址MOVCA,A+DPTR ;查表彳#至ij ASCII码POPDPL;恢复目标地址指针POPDPHMOVXDPTR,A ;存转换结果IN

47、CDPTR ;指向卜一个存储单兀INCR0;指向下一个待转换数据DJNZR2,LOOP ;没有转换完那么继续SJMP$;停机TAB: DB'0123456789ABCDEFEND评分方法:不要求写出程序的注释.程序设计思路正确可得5分,指令完全写对可得 10分.假设仅写对少量指令,可酌情给 1-3分;假设仅有少量指令写错,可酌情扣 1-3分.33、设内部RAM 20H单元为数据块的起始地址,数据块长度为10H,数据为8位无符号数,试编程找出数据块中的最小值,并将其存入 40H单元.解:ORG0MOVR0,#20H;数据区首地址送R0MOVR2,#10H;数据块长度送R2MOV40H,#

48、0FFH ;结果单兀送入最大值LOOP: MOV A,R0;取数据CLRC;清进位SUBBA,40H;利用减法判断该数据是否比最小值单元的数小JNCNEXT;如果没有借位说明待比较数据比最小值单兀的值大那么转移MOVA,R0;取最小值MOV40H,A;存最小值NEXT: INCR0;修改地址指针DJNZR2,LOOP ;没有比较完那么继续比较.SJMPEND$;停机评分方法:不要求写出程序的注释.程序设计思路正确可得5分,指令完全写对可得 10分.假设仅写对少量指令,可酌情给 1-3分;假设仅有少量指令写错,可酌情扣 1-3分.34、比较两个等长 ASCII码字符串是否相等.字符串长度存放在内部RAM 2FH单元,两字符串分别存放在内部RAM 30H和40H开始的单元中.如果两个字符串相等,那么 CY=1,否那么,CY=Q解: ORG 0MOV R0,#30H;第一个字符串首地址送 R0MOV R1,#40H;第二个字符串首地址送R1取字符串长度MOV R2,2FH ;LOOP: MOV A,R0;CLR C取A个字符串的字符SUBB A,R1;比较两个字符是否相等JNZ STOP;结果不为

温馨提示

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

评论

0/150

提交评论