实验一_单片机数据区传送排序程序设计_第1页
实验一_单片机数据区传送排序程序设计_第2页
实验一_单片机数据区传送排序程序设计_第3页
实验一_单片机数据区传送排序程序设计_第4页
实验一_单片机数据区传送排序程序设计_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验一 单片机数据区传送/排序程序设计 一、单片机数据区传送/排序程序设计1、 实验目的1进一步掌握汇编语言程序设计和调试方法。 2了解单片机RAM中的数据操作2、 实验说明要求:编写程序把R2、R3源RAM区首地址内的R6、R7字节数据传送到R4、R5目的地址的RAM区。3、 实验仪器计算机伟福软件( lab2000P ) 4、 实验内容在R0、R1中输入源地址(例如:3000H),R2、R3中输入目的地址(例如4000H),R6、R7中输入字节数(例如:1FFFH)。查看RAM 区300030FFH和400040FFH内容,也可自己重新赋值。运行程序,首先单步,然后用执行到指定位置,最后用

2、连续运行方式。记录下运行结果,检查300030FFH中内容是否和400040FFH内容完全一致。5、 思考题1、改变源地址,例如00FFH; 2、改变目的地址,例如2000H; 3、改变传输的个数,小于256个和大于256个的情况。4、把程序改为对某一数据存储区RAM赋都相同一个数值。6、 源程序及其修改原理org 0000HBlock equ 2000h mov dptr, #Block ; 起始地址 mov r0,#12h mov a,#20h ;修改2000h开始的地址所存放的内容为20hLoop: mov r1,#14h ;增加r1计数,用循环方式实现大于256的数据传输(思考题3)L

3、oop1: movx dptr,a inc dptr ; 指向下一个地址 djnz r1,Loop1 djnz r0, Loop ; 双循环实现r0,r1计数相乘(以上程序实现对某一数据存储区2000h2168hRAM赋都相同一个数值20h,思考题4) mov r0, #20h;改变源地址为2000h(思考题1) mov r1, #00h mov r2, #50h;改变目的地址为5000h(思考题2) mov r3, #00h mov r7, #0Loop: mov dph, r0 mov dpl, r1 movx a, dptr mov dph, r2 mov dpl, r3 movx dp

4、tr, a cjne r1, #0ffh, Goon1 inc r0Goon1: inc r1 cjne r3, #0ffh, Goon2 inc r2Goon2: inc r3 djnz r7, Loop ljmp $ End7、 实验结果及说明1、 执行到mov r0, #20h的结果:说明:实现对数据存储区2000h2168hRAM都赋相同一个数值20h。2、执行到 ljmp $的结果:说明:5000h开头的存储区域执行程序之前的内容是FFh,执行程序之后变为20h,与2000h20ffh的内容完全相同,说明程序实现了数据区传送。二、单片机数据区数据排序设计一、实验目的(1)、进一步掌握

5、汇编语言程序设计和调试方法。 (2)、了解数据排序的简单算法 。 二、实验内容(1)、要求:有序的数列更有利于查找。本程序用的是“冒泡排序”法,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在数列的最后面。再进行下一轮比较,找出第二大数据,直到全部数据有序。 (2)、在CPU内部的RAM 50H5AH中放入不等的数据,查看RAM 区50H5AH的内容,也可自己重新赋值。(3)、运行程序,首先单步,然后用执行到指定位置,最后用连续运行方式。记录下比较一遍后运行结果,是否最大的移到最后。三、程序流程四、实验参考程序Size equ 10 ; 数据个

6、数Array equ 50h ; 数据起始地址Change equ 0 ; 交换标志Sort: mov r0, #Array mov r7, #Size-1 clr ChangeGoon: mov a, r0 mov r2, a inc r0 mov B, r0 cjne a, B, NotEqual sjmp NextNotEqual: jc Next ; 前小后大, 不交换 setb Change ; 前大后小, 置交换标志 xch a, r0 ; 交换 dec r0 xch a, r0 inc r0Next: djnz r7, Goon jb Change,Sort ljmp $ end

7、五、实验步骤及结果分析(1)、编写程序,编译程序,人为修改初始地址中的数据如下图,再运行程序,观察结果,结果如下:图5 原始地址中的数据(2)、再运行程序,观察结果,结果如下:图6 运行后的数据(3) 、从运行结果图6可以看出,从50H开始的10个地址单元中的数据按从小到大顺序排列。六、思考题(1)、改变源地址,例如20H,注意对其他位的影响; 将原程序的 Array equ 50h改为Array equ 20h 即可。 (2)、将50H5AH中内容按从大到小排列,并且记录下程序运行前后的结果,分析是否正确。(3)、记录执行交换的次数。程序修改如下:Size equ 10 ; 数据个数Arra

8、y equ 50h ; 数据起始地址Change equ 0 ; 交换标志 mov r6, #0;交换次数寄存器Sort: mov r0, #Array mov r7, #Size-1 clr ChangeGoon: mov a, r0 mov r2, a inc r0 mov B, r0 cjne a, B, NotEqual sjmp NextNotEqual: jnc Next ; 前小后大, 不交换 inc r6 setb Change ; 前大后小, 置交换标志 xch a, r0 ; 交换 dec r0 xch a, r0 inc r0Next: djnz r7, Goon jb Change,Sort ljmp $ end运行结果如下:图7 原始数据图8 运行后的数据 从运行结果图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论