您好,欢迎访问三七文档
本科实验报告课程名称:单片机原理与接口技术实验项目:排序程序实验地点:电机馆跨越机房专业班级:学号:学生姓名:指导教师:2015年4月14日1.实验目的(1)熟悉MCS-51指令系统,掌握程序设计方法。(2)掌握排序程序算法(3)掌握循环程序实现数据排序的基本方法。2.实验设备计算机一台,配置同上3.实验内容编写并调试一个通用排序子程序,其功能为将RAM的40H~4FH单元16个子字节无符号二进制整数按从小到大顺序排列,将排序后数据存储于RAM的50H~5FH单元中。4.实验原理提示从40H单元的第一个数开始依次和相邻单元的另一个数比较,如果顺序对,则不作任何操作;如果顺序不对,则将这两个数交换位置。这样,在完成第1遍n-1次比较后,最大的数到了最后,所以第2遍比较只是比较n-2次,最多作n-1遍比较就可完成排序。在比较中设立一个标志位flag=1说明排序未完成,进入外循环;若flag=0,说明排序已完成,程序结束。5.实验程序流程图6.实验源程序:ORG0000H;向40H~4FH写入20H~11HMOVR7,#10H;数据长度赋给R7MOVR0,#40H;首地址赋给R0MOVR1,#20H;第一个数赋给R1START:MOVA,R1;(R1)赋给AMOV@R0,A;A赋给R0对应地址单元INCR0;地址加1DECR1;数据减1DJNZR7,START;判断赋值是否完成MOVR7,#0FH;数据长度-1之后赋给R7LP0:MOVR0,#40H;数据区域首地址赋给R0MOVA,R7;(R7)赋给AMOVR6,A;(R7)赋给R6CLR7FH;设定7F为flag位,并flag=0LP1:MOVA,@R0;取得数据赋给AMOV20H,@R0;把当前地址值暂存20HINCR0;地址加1MOV21H,@R0;把当前地址值暂存21HCLRC;清CSUBBA,21H;相邻两数相减JCLP2;如果前者大于后者则交换相邻的数SETB7FH;flag=1MOV@R0,20H;把前边的数赋给后一个地址DECR0;地址减1MOV@R0,21H;把后边的数赋给前一个地址INCR0;地址加1LP2:DJNZR6,LP1;判断是否到达内循环次数JNB7FH,LP3;判断是否FLAG=0.IFflag=0,则表示顺序已经排好DJNZR7,LP0;判断是否到达外循环次数LP3:MOVR7,#10H;获得要传输的数据个数MOVR0,#40H;40H赋给R0MOVR1,#50HLP4:MOVA,@R0;((R0));地址加1AMOV@R1,A;(A);地址加1(R1)INCR0;R0加1INCR1;R1加1DJNZR7,LP4;判断赋值是否完成?SJMP$;程序在此处死循环END7.实验结果
本文标题:实验二
链接地址:https://www.777doc.com/doc-5653885 .html