习题

习题

4-1 结合实例2回答以下问题:

1)冒泡排序程序结束后为什么A中内容与任何数据单元都不同?

2)ORG 0100H的作用是什么?为什么说ORG是伪指令?

3)分支程序中X=-1时,写入#FFH→A→31H,但最后31H单元中内容为什么不是-1?

4-2 试将4.3节实例的参考程序改为能使64个数从大到小顺序排列,并说明改动理由。

4-3 试编写能将存放在片外RAM的100个数进行从小到大顺序排列的双循环程序,并加以必要说明。

4-4 讨论

在4.3节的实例中

1)在第1轮冒泡排序循环中,R0的最小值是多少?最大值又是多少?

2)在第10轮冒泡排序循环中,R0的最小值是多少?最大值又是多少?

3)在最后1轮冒泡排序循环中,R0的最小值是多少?最大值又是多少?

4-5 在冒泡法排序程序中,如果改变数组长度为7,数据从40单元开始存放,如何修改程序?

4-6 编写程序,把累加器中的8位无符号二进制数转换成为(两个字节)BCD码。百位数存入HUND变量单元,十位数和个位数存入相邻的变量单元TENONE中。这段子程序的入口地址以符号BINBCD表示。

4-7 编写双字节数变补程序(设数据在R6R7中)。

4-8 编写压缩式BCD码分解成为单字节BCD码的程序。

4-9 按照下面邮费计算方法,编写邮费计算程序,设包裹重量已采集存放到WEIGHT单元,邮费存放到MONEY。

邮寄包裹计价:当包裹重量G≤5,邮费M=G×3;

当包裹重量G>5,邮费M=G×3+2×(G-5)

4-10 用计数控制(设定循环计数器、控制循环次数)方法,编写程序为一串7位ASCII码数据的D7位加上奇校验,设数据存放在片外RAM的2001H起始单元,数据长度在2000H单元。

4-11 用特征控制(设定循环结束标志实现循环控制)方法,编写程序找出正数表中的最小值。正数表存在片外RAM中以TAB为起始单元的空间中,用-1作为结束标志。

4-12 设程序存储器中有一个11行×21列的表格,编写程序把下标行变量为INDEXI、列变量为IN-DEXJ的元素读入到累加器A中。

4-13 编写程序将R4R5R6中3个字节数据对半分解,变成6个字节,存入显示缓冲区(DISMEM0~DISMEM5)。

4-14 编写程序比较两个数据串是否完全相等,若完全相等,A=0;否则A=0FFH。字符串长度在LEN中,字符串1的始址为L1,字符串2的始址为L2。

4-15 用堆栈传送参数方式,编写程序查表求出数据的平方数。

4-16 编写一延时0.1s的子程序,fosc=6MHz。