当前位置:文档之家› 51汇编程序练习题1

51汇编程序练习题1

单片机汇编程序设计练习
一、存储器之间的数据传送
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 开始的连续单元中。

相关主题