《单片机》编程题题库答案Word文件下载.docx

上传人:b****2 文档编号:3223311 上传时间:2023-05-01 格式:DOCX 页数:81 大小:32.96KB
下载 相关 举报
《单片机》编程题题库答案Word文件下载.docx_第1页
第1页 / 共81页
《单片机》编程题题库答案Word文件下载.docx_第2页
第2页 / 共81页
《单片机》编程题题库答案Word文件下载.docx_第3页
第3页 / 共81页
《单片机》编程题题库答案Word文件下载.docx_第4页
第4页 / 共81页
《单片机》编程题题库答案Word文件下载.docx_第5页
第5页 / 共81页
《单片机》编程题题库答案Word文件下载.docx_第6页
第6页 / 共81页
《单片机》编程题题库答案Word文件下载.docx_第7页
第7页 / 共81页
《单片机》编程题题库答案Word文件下载.docx_第8页
第8页 / 共81页
《单片机》编程题题库答案Word文件下载.docx_第9页
第9页 / 共81页
《单片机》编程题题库答案Word文件下载.docx_第10页
第10页 / 共81页
《单片机》编程题题库答案Word文件下载.docx_第11页
第11页 / 共81页
《单片机》编程题题库答案Word文件下载.docx_第12页
第12页 / 共81页
《单片机》编程题题库答案Word文件下载.docx_第13页
第13页 / 共81页
《单片机》编程题题库答案Word文件下载.docx_第14页
第14页 / 共81页
《单片机》编程题题库答案Word文件下载.docx_第15页
第15页 / 共81页
《单片机》编程题题库答案Word文件下载.docx_第16页
第16页 / 共81页
《单片机》编程题题库答案Word文件下载.docx_第17页
第17页 / 共81页
《单片机》编程题题库答案Word文件下载.docx_第18页
第18页 / 共81页
《单片机》编程题题库答案Word文件下载.docx_第19页
第19页 / 共81页
《单片机》编程题题库答案Word文件下载.docx_第20页
第20页 / 共81页
亲,该文档总共81页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《单片机》编程题题库答案Word文件下载.docx

《《单片机》编程题题库答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《《单片机》编程题题库答案Word文件下载.docx(81页珍藏版)》请在冰点文库上搜索。

《单片机》编程题题库答案Word文件下载.docx

ORLA,#30H

INCDPTR

MOVA,@R0

INCR0

DJNZR2,LOOP

SJMP$

3、内部RAM20H和30H开始的单元分别存放着16个16进制数,请将对应单元的内容相加(不考虑溢出),并将和存入外部RAM2000H开始的单元中。

ORG0

MOVR0,#20H

MOVR1,#30H

MOVDPTR,#2000H

MOVR2,#08H;

每个单元存放2个16进制数,故16个16进制数占用8个单元

ADDA,@R1

INCR1

4、请编写多字节无符号数减法程序。

被减数存放在内部RAM20H开始的8个单元中,减数存放在内部RAM30H开始的8个单元,请将差存放到外部RAM2000H开始的8个单元中,借位存放到OV标志中。

注意:

所有数据均按照从低字节到高字节的顺序存放。

MOVR2,#08H

CLRC

SUBBA,@R1

MOVOV,C

5、内部RAM40H和41H单元中存放着2个0-9的ASCII码(高位字节在前),请将其转换为压缩BCD码(高位在前)并存入外部RAM2000H单元中。

MOVA,40H

MOVA,41H

MOVDPTR,#2000H

6、将存放在内部RAM20H-2FH单元的压缩型BCD码(高位在前)转换成相应的ASCII码,依次存放到外部RAM1000H开始的单元区中。

MOVR2,#10H

MOVDPTR,#1000H

ORLA,#30H(或ADDA,#30H)

7、内部RAM30H和38H开始的单元分别存放着8个压缩BCD码,请将对应单元的内容相加(不考虑溢出),并将和存入外部RAM1000H开始的单元中。

MOVR0,#30H

MOVR1,#38H

MOVR2,#08

DAA

8、请编写多字节无符号数加法程序。

被加数存放在内部RAM20H开始的8个单元中,加数存放在内部RAM30H开始的8个单元,请将和存放到外部RAM2000H开始的8个单元中,进位存放到F0标志中。

ADDCA,@R1

MOVF0,C

9、两个8字节压缩BCD码分别存放在内部RAM30H和40H开始的连续单元中(低位字节在前),请将二者求和(不考虑溢出情况),并将和存入外部RAM1000H开始的单元中。

解:

MOVR1,#40H

MOVR2,#8

CLRC

LOOP:

10、将存放在内部RAM20H-2FH单元的十六进制数转换成ASCII码,依次存放到外部RAM2000H开始的单元中。

MOVR2,#16

MOVR3,DPH

MOVR4,DPL

ANLA,#0FH

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVDPH,R3

MOVDPL,R4

MOVR3,DPH

MOVR4,DPL

INCR0

TAB:

DB‘0123456789ABCDEF’

11、内部RAM30H和外部RAM2200H开始的单元分别存放着两个8字节十六进制数(低位字节存放在前),请将二者相加(不考虑溢出情况),并将和存入内部RAM40H开始的单元中。

MOVDPTR,#2200H

MOVXA,@DPTR

ADDCA,@R0

MOV@R1,A

12、请编写多字节无符号数减法程序。

被减数存放在内部RAM30H开始的8个单元中,减数存放在内部RAM38H开始的8个单元,请将差存放到外部RAM1000H开始的8个单元中,借位存放到F0标志中。

START:

LOOP:

MOVC,F0

13、请编写多字节无符号数减法程序。

被减数存放在内部RAM20H开始的16个单元中,减数存放在内部RAM30H开始的16个单元,请将差存放到外部RAM2000H开始的16个单元中,借位存放到OV标志中。

ADDR1EQU20H

ADDR2EQU30H

LENEQU16

ADDR3EQU2000H

START:

MOVR0,#ADDR1

MOVR1,#ADDR2

MOVDPTR,#ADDR3

MOVR2,#LEN

14、将存放在内部RAM20H-3FH单元的压缩BCD码转换成ASCII码,依次存放到外部RAM2300H开始的单元中。

(注:

每个单元均先转换高四位)

LENEQU20H

ADDR2EQU2300H

MOVDPTR,#ADDR2

ANLA,#0F0H

不要求使用伪指令。

15、将存放在内部RAM30H-35H单元的十六进制数转换成相应的ASCII码,依次存放到外部RAM1100H开始的单元区中。

每个字节转换时先转换高四位)

MOVDPTR,#1100H

MOVR2,#6

MOVA,@R0;

取需要转换的数

ANLA,#0F0H;

屏蔽低4位

PUSHDPH

PUSHDPL;

保护目的地址

MOVDPTR,#TAB

MOVCA,@A+DPTR;

查表得ASCII码

POPDPL

POPDPH;

恢复目的地址

MOVX@DPTR,A;

存转换后的ASCII码

INCDPTR;

修改目的地址指针

ANLA,#0FH;

屏蔽高4位

INCR0;

修改源地址指针

DJNZR2,LOOP;

未转换完则继续

TAB:

16、内部RAM30H开始的单元中存放着16个0-9的ASCII码(高位字节在前),请将其转换为压缩BCD码(高位在前)并存入外部RAM1000H开始的单元中。

MOVR2,#8;

16个ASCII码转换为8个压缩BCD码

屏蔽高4位得到BCD码

MOVR1,A

指向下一个ASCII码

ORLA,R1;

合成压缩BCD码

存压缩BCD码

17、设有两个长度为16字节的数组,分别存放在外部RAM0200H和0300H为首址的存储区域中,试编写程序求其对应项之和(不考虑溢出的情况),结果存放在以0400H为首址的外部RAM中。

参考程序清单如下:

MOVR2,#16;

数组长度为16个字节

MOVR3,#02H;

数组1的首地址高8位

MOVR4,#03H;

数组2的首地址高8位

MOVR5,#04H;

和数组的首地址高8位

MOVDPL,#0;

数据指针低8位清零

MOVXA,@DPTR;

取被加数

MOVR1,A;

存被加数

MOVDPH,R4

取加数

ADDA,R1;

求和

MOVDPH,R5

存和

INCDPL;

指向下一字节

未加完则循环

18、编程求内部RAM中40H~4FH共16个单元中的内容的和(结果为2字节),并将和放入50H和51H单元中(高8位在50H)。

ORG0

MOVR0,#40H;

数据区首地址送R0

单元数送R2

MOVR3,#0;

和的高8位清零

CLRA;

和的低8位清零

ADDA,@R0;

JNCNEXT;

没有进位则转移

INCR3;

和的高8位存储单元内容加1

NEXT:

指向下一个单元

没加完则循环,和在R3和A中

MOV51H,A;

存低8位结果

MOV50H,R3;

存高8位结果

19、有一个长度为16字节的ASCII码字符串存放在外部RAM1000H为首址的存储区域中,字符串中的每一个字符均不相同,试编写程序查找字符串中是否存在ASCII码“9”。

如果在字符串中存在ASCII码“9”,则将其存储单元的地址存放到内部RAM30H和31H单元中(高8位地址在30H单元中),同时将OV标志位清零。

否则,将30H和31H单元的内容清零,并将OV标志位置“1”。

解:

MOVSP,#60H

CJNEA,#39H,EXIT

MOV30H,DPH

MOV31H,DPL

CLROV

EXIT:

MOV30H,#0

MOV31H,#0

SETBOV

END

20、有两个8字节的16进制数a和b,它们分别存放在内部RAM中30H~37H和40H~47H的单元中(高位字节在前)。

请编程求a-b,并将差存入30H开始的内部RAM单元中(高位字节在前)。

若差小于零则将F0标志位置“1”,否则清零。

设计思路:

从16进制数的最低位字节(37H和47H)开始相应字节带借位相减,然后修改地址指针在对次低位字节进行相减,一共循环8次完成两个8字节16进制数的相减。

最后将Cy标志的内容传送给F0标志位即可。

MOVR0,#37H

MOVR1,#47H

MOV@R0,A

DECR0

DECR1

21、若外部RAM的(3000H)=X,(3001H)=Y,编程实现Z=X*X+2Y,并将结果存到片内RAM的40H单元(设Z<256。

XEQU3000H

YEQU3001H

ZEQU40H

MOVDPTR,#X;

变量X的地址送DPTR

取变量X

MOVB,A;

变量X的值送给B寄存器

MULAB;

求X*X,根据题意知积为1字节(在A中)

MOVR0,A;

X*X的结果存入R0中

指向变量Y

取变量Y

MOVB,#2

求2*Y,根据题意知积为1字节(在A中)

ADDA,R0;

求X*X+2*Y

MOVZ,A;

和存入40H单元

SJMP$;

停机

不要求写出程序的注释和使用伪指令。

22、设外部RAM2000H单元为数据块的起始地址,数据块长度为10,试编程求数据块中的最小值,存入内部RAM30H单元。

将数据块的第1个数据放入结果单元,然后依次与剩余的9个数据进行比较。

如果新的数据比结果单元中的数据还小则将该数据存入结果单元,9次比较完成则结果单元中的数据就是最小值。

取数据块的第一个数

MOV30H,A;

存入结果单元

MOVR2,#9;

共比较9次

指向第2个数

SUBBA,30H

JNCLP;

没有借位则说明结果单元的数小,不用更换最小值

MOVXA,@DPTR

更换最小值

LP:

指向下一个数

没有比较完则继续循环

23、若外部RAM的(1000H)=X,(1001H)=Y,请编程实现Z=2X+Y*Y+5(设Z<

65536),并将结果保存到片内RAM的30H和31H单元(31H单元存放结果的高8位,30H单元存放结果的低8位)。

XEQU1000H

ZHEQU31H

ZLEQU30H

MOVZH,#0;

结果单元清零

MOVZL,#0

取X的值

MOVB,#2

计算2X

ADDA,ZL

MOVZL,A;

存结果低8位

MOVA,B;

取乘积高8位

ADDA,ZH

MOVZH,A;

存结果高8位

指向Y

取Y

MOVB,A

计算Y*Y

ADDA,ZL;

计算结果低8位

MOVZL,A

取乘积的高8位

ADDCA,ZH;

计算结果高8位,注意必须带进位加

MOVZH,A

MOVA,ZL

ADDA,#5;

计算结果加5

ADDCA,#0;

将低8位进位加到结果高8位,注意必须带进位加

若仅有少量指令写

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2