文档库

最新最全的文档下载
当前位置:文档库 > 51汇编程序练习题1.

51汇编程序练习题1.

单片机汇编程序设计练习

一、存储器之间的数据传送

1、编程实现将单片机内部 RAM60H 开始的连续 32个单元置为 FFH 。

MOV R0,#60H

MOV R7,#32

MOV R1,#0FFH

MOV A,R1

LOOP: MOV @R0,A

INC R 0

DJNZ R7,LOOP

SJMP $

END

2、编程实现将内部 RAM30H 开始的连续 16个数传送到内部 RAM50H 开始的连续单元中。

MOV R0,#30H

MOV R1,#50H

MOV R7,#16

LOOP: MOV A,@R0

MOV @R1,A

INC R 0

INC R 1

DJNZ R7,LOOP

SJMP $

END

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

的共阳字形代码如下表所示。

51汇编程序练习题1.

51汇编程序练习题1.

三、多字节无符号数的加减法

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 开始的连续单元中。