掌握汇编语言的编程。
编写程序,根据送入的数据转移运行。
程序框图如图4-20所示。
图4-20 程序框图
在20H中分次送入00、01、02、03,每次运行程序后,观察数码管上数字循环情况。
在20H中分次送入00、01、02、…、09H,每次运行程序后,观察数码管上数字循环情况。
再使数码管循环显示1、2、3、4、5、6几个数字。
(1)掌握实验系统启动及使用。
(2)掌握汇编语言程序设计和调试方法。
把2000H的内容拆开,高位送2001H低位,低位送2002H低位,2001H、2002H高位清零,一般本程序用于把数据送到显示缓冲区。
程序框图如图4-21所示。
用连续或单步方式运行程序,检查2000H~2002H中内容变化情况。
(1)如何用断点方式调试本程序。
图4-21 程序框图
(2)假使把2000H、2001H的低位合并,分别送入2002H高低位,程序如何修改,试实现之。
(1)设有两个4位BCD码,分别存放在片内RAM的23H、22H单元和33H、32H单元中,求它们的和,并送入43H、42H单元中去(以上均为低位在低字节,高位在高字节)。
(2)编程将片内RAM的40H~60H单元中的内容送到片外RAM以3000H开始的单元中。
(3)编程计算片内RAM区30H~37H的8个单元中数的算术平均值,结果存在3AH单元中。
(4)设有100个有符号数,连续存放在片外RAM以2200H为首地址的存储区中,试编程统计其中正数、负数、零的个数。
(5)试编一查表程序,从首地址为2000H、长度为9FH的数据块中找出第一个ASCII码A,将其地址送到20A0H和20A1H单元中。
(6)设一个加数在50H~52H单元中,另一个加数在53H~55H中,进位存放在位地址00H中,试编程实现两数求和。
(7)设自变量x为一无符号数,存放在内部RAM的VAX单元,函数y存放在FUNC单元,请编出满足如下关系的程序。
(8)在内部RAM中,有一个以BLOCK为起始地址的数据块,块长在LEN单元。请用查表指令编一程序,先检查它们,若它们是16进制中的A~F,则把它们变为ASCⅡ码;若不是,则把它们变为00H。
(9)试编写程序,查找在内部RAM的30H~50H单元中是否有0AAH这一数据。若有,则将51H单元置为“01H”;若未找到,则将51H单元置为“00H”。
(10)试编写程序,查找在内部RAM的20H~40H单元中出现“00H”这一数据的次数,并将查找到的结果存入41H单元。
(11)若SP=60H,标号LABEL所在的地址为3456H。LCALL指令的地址为2000H,执行如下指令后,堆栈指针SP和堆栈内容发生了什么变化?PC的值等于什么?如果将指令LCALL直接换成ACALL是否可以?如果换成ACALL指令,可调用的地址范围是什么?
2000H LCALL LABEL