您的位置: 网站首页 > 电子与嵌入式 > 单片机原理与应用 > 第4章 汇编语言程序设计 > 【4.7 上 机 实 验】

4.7 上 机 实 验

 

4.7 

4.7.1  多分支程序

1.实验目的

掌握汇编语言的编程。

2.实验内容

编写程序,根据送入的数据转移运行。

3.程序框图

程序框图如图4-20所示。

4-20  程序框图

4.实验步骤

20H中分次送入00010203,每次运行程序后,观察数码管上数字循环情况。

5.思考题

20H中分次送入000102、…、09H,每次运行程序后,观察数码管上数字循环情况。

再使数码管循环显示123456几个数字。

4.7.2  拆字程序

1.实验目的

1)掌握实验系统启动及使用。

2)掌握汇编语言程序设计和调试方法。

2.实验内容

2000H的内容拆开,高位送2001H低位,低位送2002H低位,2001H2002H高位清零,一般本程序用于把数据送到显示缓冲区。

3.程序框图

程序框图如图4-21所示。

4.实验步骤

用连续或单步方式运行程序,检查2000H2002H中内容变化情况。

5.思考题

1)如何用断点方式调试本程序。

4-21  程序框图

2)假使把2000H2001H的低位合并,分别送入2002H高低位,程序如何修改,试实现之。

4.8     

1)设有两个4BCD码,分别存放在片内RAM23H22H单元和33H32H单元中,求它们的和,并送入43H42H单元中去(以上均为低位在低字节,高位在高字节)。

2)编程将片内RAM40H60H单元中的内容送到片外RAM3000H开始的单元中。

3)编程计算片内RAM30H37H8个单元中数的算术平均值,结果存在3AH单元中。

4)设有100个有符号数,连续存放在片外RAM2200H为首地址的存储区中,试编程统计其中正数、负数、零的个数。

5)试编一查表程序,从首地址为2000H、长度为9FH的数据块中找出第一个ASCIIA,将其地址送到20A0H20A1H单元中。

6)设一个加数在50H52H单元中,另一个加数在53H55H中,进位存放在位地址00H中,试编程实现两数求和。

7)设自变量x为一无符号数,存放在内部RAMVAX单元,函数y存放在FUNC单元,请编出满足如下关系的程序。

8)在内部RAM中,有一个以BLOCK为起始地址的数据块,块长在LEN单元。请用查表指令编一程序,先检查它们,若它们是16进制中的AF,则把它们变为ASCⅡ码;若不是,则把它们变为00H

9)试编写程序,查找在内部RAM30H50H单元中是否有0AAH这一数据。若有,则将51H单元置为“01H”;若未找到,则将51H单元置为“00H”。

10)试编写程序,查找在内部RAM20H40H单元中出现“00H”这一数据的次数,并将查找到的结果存入41H单元。

11)若SP=60H,标号LABEL所在的地址为3456HLCALL指令的地址为2000H,执行如下指令后,堆栈指针SP和堆栈内容发生了什么变化?PC的值等于什么?如果将指令LCALL直接换成ACALL是否可以?如果换成ACALL指令,可调用的地址范围是什么?

2000H     LCALL   LABEL