资源描述:
《实验一_单片机数据区传送排序程序设计.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.实验一单片机数据区传送/排序程序设计一、单片机数据区传送/排序程序设计一、实验目的1.进一步掌握汇编语言程序设计和调试方法。2.了解单片机RAM中的数据操作二、实验说明要求:编写程序把R2、R3源RAM区首地址内的R6、R7字节数据传送到R4、R5目的地址的RAM区。三、实验仪器计算机伟福软件(lab2000P)四、实验内容在R0、R1中输入源地址(例如:3000H),R2、R3中输入目的地址(例如4000H),R6、R7中输入字节数(例如:1FFFH)。查看RAM区3000~30FFH和4000~40FFH内容,也可自己重新赋值。运行程序,首先单步,然后用执行到指定位
2、置,最后用连续运行方式。记录下运行结果,检查3000~30FFH中内容是否和4000~40FFH内容完全一致。五、思考题1、改变源地址,例如00FFH;2、改变目的地址,例如2000H;3、改变传输的个数,小于256个和大于256个的情况。4、把程序改为对某一数据存储区RAM赋都相同一个数值。六、源程序及其修改原理org0000HBlockequ2000hmovdptr,#Block;起始地址movr0,#12hmova,#20h;修改2000h开始的地址所存放的内容为20hLoop:movr1,#14h;增加r1计数,用循环方式实现大于256的数据传输(思考题3)Loo
3、p1:movx@dptr,aincdptr;指向下一个地址djnzr1,Loop1djnzr0,Loop;双循环实现r0,r1计数相乘(以上程序实现对某一数据存储区2000h~2168hRAM赋都相同一个数值20h,思考题4)movr0,#20h;改变源地址为2000h(思考题1)movr1,#00h..movr2,#50h;改变目的地址为5000h(思考题2)movr3,#00hmovr7,#0Loop:movdph,r0movdpl,r1movxa,@dptrmovdph,r2movdpl,r3movx@dptr,acjner1,#0ffh,Goon1incr0Goo
4、n1:incr1cjner3,#0ffh,Goon2incr2Goon2:incr3djnzr7,Loopljmp$End一、实验结果及说明1、执行到movr0,#20h的结果:说明:实现对数据存储区2000h~2168hRAM都赋相同一个数值20h。2、执行到ljmp$的结果:..说明:5000h开头的存储区域执行程序之前的内容是FFh,执行程序之后变为20h,与2000h~20ffh的内容完全相同,说明程序实现了数据区传送。二、单片机数据区数据排序设计一、实验目的(1)、进一步掌握汇编语言程序设计和调试方法。(2)、了解数据排序的简单算法。二、实验内容(1)、要求:有
5、序的数列更有利于查找。本程序用的是“冒泡排序”法,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在数列的最后面。再进行下一轮比较,找出第二大数据,直到全部数据有序。(2)、在CPU内部的RAM50H~5AH中放入不等的数据,查看RAM区50H~5AH的内容,也可自己重新赋值。(3)、运行程序,首先单步,然后用执行到指定位置,最后用连续运行方式。记录下比较一遍后运行结果,是否最大的移到最后。三、程序流程..四、实验参考程序Sizeequ10;数据个数Arrayequ50h;数据起始地址Changeequ0;交换标志Sort:
6、movr0,#Arraymovr7,#Size-1clrChangeGoon:mova,@r0movr2,aincr0movB,@r0cjnea,B,NotEqualsjmpNextNotEqual:jcNext;前小后大,不交换setbChange;前大后小,置交换标志xcha,@r0;交换..decr0xcha,@r0incr0Next:djnzr7,GoonjbChange,Sortljmp$end五、实验步骤及结果分析(1)、编写程序,编译程序,人为修改初始地址中的数据如下图,再运行程序,观察结果,结果如下:图5原始地址中的数据(2)、再运行程序,观察结果,结果如
7、下:图6运行后的数据(3)、从运行结果图6可以看出,从50H开始的10个地址单元中的数据按从小到大顺序排列。六、思考题(1)、改变源地址,例如20H,注意对其他位的影响;将原程序的Arrayequ50h改为Arrayequ20h即可。(2)、将50H~5AH中内容按从大到小排列,并且记录下程序运行前后的结果,分析是否正确。(3)、记录执行交换的次数。程序修改如下:Sizeequ10;数据个数Arrayequ50h;数据起始地址..Changeequ0;交换标志movr6,#0;交换次数寄存器Sort:movr0,#Arraym