51汇编程序练习题1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机汇编程序设计练习
一、存储器之间的数据传送
1、编程实现将单片机内部RAM60H开始的连续32个单元置为FFH。
2、编程实现将内部RAM30H开始的连续16个数传送到内部RAM50H开始的连续单元中。
3、编程实现将单片机外部RAM2000H为首地址的数据块传送到单片机内部RAM30H开始的单元中,数据块的长度为32个字节。
4、编程实现将单片机内部RAM30H为首地址的数据块传送到外部RAM2000H 开始的单元中,数据块的长度存放于内部RAM的20H单元。
5、编程实现将单片机外部RAM2000H为首地址的数据块传送到单片机内部RAM30H开始的单元中,直到数据内容为0DH时停止传送。
6、编程实现将ROM1000H地址的内容传送到内部RAM的25H单元。
7、编程实现将ROM2000H开始的连续10个地址的内容传送到内部RAM的25H 开始的单元。
8、编程实现将ROM1000H开始的连续100个地址的内容传送到外部RAM2000H 开始的连续单元中。
二、查表程序设计
1、编写查表程序,要查表的数据存放在R7中,其范围为0~9。编程查其平方值,并存放于40H。
2、编写查表程序,要查表的数据存放在R7中,其范围为0~9。编程查其立方值,并存放于R6。
3、单片机外部ROM TAB1地址开始存放一组ASCII码表,试用查表方法,将R2的内容(范围为0~F)转换为与其对应
的ASCII码,并从P1口输出。
4、使用8051的P1口作为段控驱动共阳
LED数码管,硬件连接如图。
编程实现将8051 R7单元内容(在
00H-09H之间)显示在数码管上。00H-09H
的共阳字形代码如下表所示。
04H 05H 06H 07H 08H 09H
三、多字节无符号数的加减法
1、编一个三字节无符号数的减法程序。被减数存放在内部RAM的30H开始的连续三个单元中(高位在高地址),减数存放在内部RAM的40H开始的连续三个单元中(高位在高地址),请将差存放在内部RAM的50H开始的连续三个单元中(高位在高地址),借位存放在01H位地址
2、编一个四字节无符号数的加法程序。被加数存放在内部RAM的25H开始的连续四个单元中(高位在高地址),加数存放在内部RAM的55H开始的连续四个单元中(高位在高地址),请将和存放在内部RAM的25H开始的连续四个单元中(高位在高地址),进位存放29H字节地址中。
3、编一个N字节无符号数的加法程序。被加数存放在内部RAM的符号地址AAA 开始的连续单元中(高位在低地址),加数存放在内部RAM的符号地址BBB开始的连续单元中(高位在低地址),请将和存放在内部RAM的AAA开始的连续单元中,进位存放符号地址JWEI字节。
四、多路散转
1、请编程实现根据A的值进行多路散转的程序。即当A=0时,调用PRO0子程序;当A=1时,调用PRO1子程序……,当A=10时,调用PRO10子程序。
2、请编程实现根据R7 的值进行128路散转的程序。即当(R7)=0时,调用CHULI0子程序;当(R7)=1时,调用CHULI1子程序……,当A=128时,调用CHULI128子程序。
五、软件定时程序设计
计算下面程序的延时时间:
1、MOV R6,#TIME
LOOP:NOP
NOP
DJNZ R6,LOOP
计算当TIME=0、1、2、255时的延时时间
2、MOV R7,#TIME1
LOOP0:MOV R6,#TIME2
LOOP1:NOP
NOP
DJNZ R6,LOOP1
DJNZ R7,LOOP0
六、数据检索程序设计
1、在内RAM20H~3FH地址的32个单元中,存放一批数据,试检索是否有与R0寄存器内容相等的数,若检索成功,将该数据地址存放在R1,否则将FFH 存放在R1中。
2、在内RAM20H~29H地址的10个单元中,存放一批数据,试检索是否含有立即数30H,若检索成功,将该数据地址存放在31H,否则将FFH存放在31H。
3、统计内RAM20H—4FH单元中内容为“0”的个数,并把结果存入50H单元。
七、极值查找
1、将内部RAM50H、51H单元两个无符号数中较大的数存入60H单元。
2、在内部RAM 40-4FH中存在16个无符号数,找出其中的最小数,存放到50H 单元。先画出程序框图,再编程。
3、内部RAM中有一个数据块,首地址为30H,长度存放在2BH单元,要求把其中的最大值找出,并放到以20H单元。、
4、内部RAM以30H为首地址的一个数据块,第一个数据为该数据长度。试求该数据的最大值,把结果放在内部RAM的70H单元中。画出程序流程图并编写程序。
*5、内部RAM20H开始存放一组有符号的数,数据个数存放在内部RAM1FH单元中,请编程统计其中大于0、等于0、小于0的数的个数,分别存放于70H、71H、72H。
*6、内部RAM20H开始存放一组有符号的数,数据个数存放在内部RAM1FH单元中,请编程将其中大于0、等于0、小于0的数分别存放于70H、60H、50H 开始的连续单元中。