1、课程名称: 嵌入式系统基础 实验项目: 冒泡排序实验 实验地点: 专业班级: 学号: 学生姓名: 指导教师: 2012 年 3 月 日1、实验目的和要求1、实验目的(1)熟悉 MCS-51 指令系统,掌握程序设计方法(2)掌握排序程序算法(3)掌握用循环程序实现数据排列的基本方法2、实验要求(1)根据试验任务要求,编制 C51 源程序(2)上机调试程序,记录相关调制信息(3)写出实验报告2、实验内容和原理1、实验内容编写并调试一个通用排序子程序,其功能为将 RAM 的 40H4FH 单元 16 个字符无符号二进制整数按从小到大顺序排列,将排序后数据存储于 RAM 的 50H5FH 单元中。2、
2、实验原理从 40H 单元的第一个开始依次和相邻单元的另一个数比较,如果顺序对,则不作任何操作;如果顺序不对,则将这两个数交换位置。这样在完成第一遍 次比较后,最大的1n数到了最后,所以第二遍比较只需要比较 次,最多作 遍比较就可完成排序。在2n比较中设立一个标志位 flag,每次进入外循环时把 flag 清零,在内循环结束时若 flag=1 说明排序未完成,进入外循环;若 flag=0,说明排序完成,程序结束。3、主要仪器设备计算机一台操作系统:Windows98/2000/XP应用软件:WAVE60004、操作方法与实验步骤org 0000hmov r7,#10hmov r0,#40hmov
3、 r1,#20hstart: mov a,r1mov r0,ainc r0DEC r1djnz r7,startmov r7 ,0FHLP0: MOV R0,#40HMOV A,R7MOV R6,#2HCLR 7FHLP1: MOV A,R0MOV 20H,R0INC R0 MOV 21H ,R0CLR CSUBB A,21HJC LP2SETB 7FHMOV R0,20HDEC R0MOV R0,21HINC R0LP2: DJNZ R6,LP1JNB 7FH,LP3MOV R7,#2HDJNZ R7,LP0LP3: MOV R7,#10HMOV R0,#40HMOV R1,#50HLP4:
4、 MOV A,R0MOV R1,AINC R0INC R1DJNZ R7,LP4MOV 60H,R0MOV 80H,R1SJMP $END (1)按输入顺序从小到大的序列: (2) 按输入顺序为从大到小的序列:(3)按输入顺序为混乱序列:五、实验数据记录和处理本实验采用输入为从小到大的顺序,从大到小的顺序,还有混乱排序三种输入方式。(1)按输入顺序从小到大的序列:(2)按输入顺序为从大到小的序列: (3)按输入顺序为混乱序列:六、实验结果与分析由实验结果可以看出数据排序已变成由小到大排序,不论输入是从大到小排序,从小到大排序还是混乱排序,皆可得出通过冒泡排序的排序程序实现由小到大的排序。七、讨论、心得这次的冒泡排序思路上是以前学的软件技术基础里面的思想,但是编写成程序就需要全面考虑,循环程序的使用,调用子程序等方法从这次实验中得到体现,且需要全局把握。