收藏 分享(赏)

实验一_单片机数据区传送排序程序设计.doc

上传人:精品资料 文档编号:10360602 上传时间:2019-11-03 格式:DOC 页数:7 大小:160KB
下载 相关 举报
实验一_单片机数据区传送排序程序设计.doc_第1页
第1页 / 共7页
实验一_单片机数据区传送排序程序设计.doc_第2页
第2页 / 共7页
实验一_单片机数据区传送排序程序设计.doc_第3页
第3页 / 共7页
实验一_单片机数据区传送排序程序设计.doc_第4页
第4页 / 共7页
实验一_单片机数据区传送排序程序设计.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

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 2000hmov dptr, #Block ; 起始地址mov r0,#12h mov a,#20h ;修改 2000h 开始的地址所存放的内容为 20hLoop:mov r1,#14h

3、 ;增加 r1 计数,用循环方式实现大于 256 的数据传输(思考题 3)Loop1:movx dptr,ainc dptr ; 指向下一个地址djnz r1,Loop1 djnz r0, Loop ; 双循环实现 r0,r1 计数相乘(以上程序实现对某一数据存储区 2000h2168hRAM 赋都相同一个数值 20h,思考题 4)mov r0, #20h ;改变源地址为 2000h(思考题 1)mov r1, #00hmov r2, #50h ;改变目的地址为 5000h(思考题 2)mov r3, #00hmov r7, #0Loop:mov dph, r0mov dpl, r1movx

4、a, dptrmov dph, r2mov dpl, r3movx dptr, acjne r1, #0ffh, Goon1inc r0Goon1:inc r1cjne r3, #0ffh, Goon2inc r2Goon2:inc r3djnz r7, Loopljmp $End7、实验结果及说明1、执行到 mov r0, #20h 的结果:说明:实现对数据存储区 2000h2168hRAM 都赋相同一个数值 20h。2、执行到 ljmp $的结果:说明:5000h 开头的存储区域执行程序之前的内容是 FFh,执行程序之后变为 20h,与2000h20ffh 的内容完全相同,说明程序实现了数

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

6、运行结果,是否最大的移到最后。三、程序流程四、实验参考程序Size equ 10 ; 数据个数Array equ 50h ; 数据起始地址Change equ 0 ; 交换标志Sort:mov r0, #Arraymov r7, #Size-1clr ChangeGoon:mov a, r0mov r2, ainc r0mov B, r0cjne a, B, NotEqualsjmp NextNotEqual:jc Next ; 前小后大, 不交换setb Change ; 前大后小, 置交换标志xch a, r0 ; 交换dec r0xch a, r0inc r0Next:djnz r7,

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

8、:Size equ 10 ; 数据个数图 5 原始地址中的数据图 6 运行后的数据Array equ 50h ; 数据起始地址Change equ 0 ; 交换标志mov r6, #0 ;交换次数寄存器Sort:mov r0, #Arraymov r7, #Size-1clr ChangeGoon:mov a, r0mov r2, ainc r0mov B, r0cjne a, B, NotEqualsjmp NextNotEqual:jnc Next ; 前小后大, 不交换inc r6setb Change ; 前大后小, 置交换标志xch a, r0 ; 交换dec r0xch a, r0inc r0Next:djnz r7, Goonjb Change,Sortljmp $end运行结果如下:图 7 原始数据从运行结果图 8 可以看出:运行后数据按从大到小的顺序排列,从图中也可以看出 R6中的值为 7,说明在排序过程中交换了 7 次。程序中采用的是冒泡法,每次把最小的数沉底,由于原始数据只需把 50H 中的 1 沉底,就能达到从大到小的排列,只需 7 次交换就可,说明程序运行结果与实际结果相符。图 8 运行后的数据

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报