欢迎来到天天文库
浏览记录
ID:44060132
大小:101.50 KB
页数:3页
时间:2019-10-18
《单片机与接口技术实验报告--冒泡排序实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、本科实验报告课程名称:单片机原理与接口技术实验项目:冒泡排序实验实验地点:跨越机房专业班级:学号:学生姓名:指导教师:2012年4月10H一、实验目的和要求(1)熟悉MCS-51指令系统,掌握程序设计方法。(2)掌握排序程序算法。(3)掌握用循环程序实现数据排序的基本方法。二、实验内容和原理编写并调试一个通用排序子程序,其功能为将RAM的40H〜4FH单元的16字节无符号二进制整数按从小到大顺序排列,将排序后数据存储于RAM的50H〜5FH单元中。三、主要仪器设备计算机一台;伟福6000ORG0000H;该段代码向数据区域40H~4FH写入20H〜11HMOVR7
2、,#10H;数据长度一R7MOVR0,#40H;首地址一ROMOVRl,#20H;第一个数据一R1START:MOVARI;(R1LAMOV@R0,A;数据一对应地址INCRO;地址加1DECR1;数据减1DJNZR7,START;判断赋值完成否MOVR7,#0FH;数据长度-1-R7LP0:MOVR0,#40H;数据区域首地址一R0MOVA,R7;(R7LAMOVR6,A;(R7)fR6CLR7FH;设定7FH位为dag,并且flag=OLP1:MOVA,@R0;取得数据一AMOV20H,@R0;当前地址中的值暂存到20H中INCRO;地址加1MOV21H,@R
3、0;当前地址中的值暂存到21H中CLRC;iWcSUBBA,21H;相邻两个数相减JCLP2;如果前者大于后者则交换相邻的数SETB7FH;flag=lMOV@R0,21H;把前边的数赋给后一个地址DECRO;地址减1MOV@R0,21H;把后边的数赋给前一个地址INCRO;地址加1LP2:DJNZR6,LP1;判断是否到达内循环次数JNB7FH,LP3;判断是否flag=O.如果flag二0,则表示顺序已经排好DJNZR7,LP0;判断是否到达外循环次数LP3:MOVR7,#10H;获得要传输的数据个数;把40H〜4FH单元中数据复制到50H〜5FH单元中MOV
4、R0,#40H;40H-R0MOVRl,#50H;50H-R1LP4:MOVA,@R0;((R0)LAMOV@R1,A;(A)-*(R1)INCRO;地址加1INCR1;地址加1DJNZR7,LP4;判断赋值是否完成SJMP$;程序在此处死循环END五、实验数据记录和处理单步执行观察发现,每一个数都会逐次与它之后的数进行比较,排序,直到所有数据都与其后的数据比较排完后才结束。六、实验结果与分析最终实验结果为数据按照从小到大的顺序排列,分析原理为从第一个数开始,分别与后一个数比较,大于不变,小于就交换,直到倒数第二个数与最后一个数比完程序才算完成。七、讨论、心得实验
5、成功,通过本实验对用汇编编写冒泡排序有了一定的认识,发现虽然汇编离机器更近,但是在语言表达上确实比C语言麻烦很多。
此文档下载收益归作者所有