python冒泡排序实验报告_单片机与接口技术实验报告--冒泡排序实验.doc

单片机与接口技术实验报告--冒泡排序实验.doc

单片机与接口技术实验报告--冒泡排序实验 本科实验报告 课程名称单片机原理与接口技术实验项目冒泡排序实验 实验地点跨越机房 专业班级学号 学生姓名 指导教师 2012 年4 月10 日 一、实验目的和要求 1熟悉MCS-51指令系统,掌握程序设计方法。 2掌握排序程序算法。 3掌握用循环程序实现数据排序的基本方法。 二、实验内容和原理 编写并调试一个通用排序子程序,其功能为将RAM的40H4FH单元的16字节无符号二进制整数按从小到大顺序排列,将排序后数据存储于RAM的50H5FH单元中。 三、主要仪器设备 计算机一台;伟福6000 四、操作方法与实验步骤上机源程序 ORG 0000H ;该段代码向数据区域40H4FH写入20H11H MOV R7,10H ;数据长度→R7 MOV R0,40H ;首地址→R0 MOV R1,20H ;第一个数据→R1 START MOV A,R1 ;R1→A MOV R0,A ;数据→对应地址 INC R0 ;地址加1 DEC R1 ;数据减1 DJNZ R7,START ;判断赋值完成否 MOV R7,0FH ;数据长度-1→R7 LP0 MOV R0,40H ;数据区域首地址→R0 MOV A,R7 ;R7→A MOV R6,A ;R7→R6 CLR 7FH ;设定7FH位为flag,并且flag0 LP1 MOV A,R0 ;取得数据→A MOV 20H,R0 ;当前地址中的值暂存到20H中 INC R0 ;地址加1 MOV 21H,R0 ;当前地址中的值暂存到21H中 CLR C ;清C SUBB A,21H ;相邻两个数相减 JC LP2 ;如果前者大于后者则交换相邻的数 SETB 7FH ;flag1 MOV R0,21H ;把前边的数赋给后一个地址 DEC R0 ;地址减1 MOV R0,21H ;把后边的数赋给前一个地址 INC R0 ;地址加1 LP2 DJNZ R6,LP1 ;判断是否到达内循环次数 JNB 7FH,LP3 ;判断是否flag0.如果flag0,则表示顺序已经排好 DJNZ R7,LP0 ;判断是否到达外循环次数 LP3 MOV R7,10H ;获得要传输的数据个数 ;把40H4FH单元中数据复制到50H5FH单元中 MOV R0,40H ;40H→R0 MOV R1,50H ;50H→R1 LP4 MOV A,R0 ;R0→A MOV R1,A ;A→R1 INC R0 ;地址加1 INC R1 ;地址加1 DJNZ R7,LP4 ;判断赋值是否完成 SJMP ;程序在此处死循环 END 五、实验数据记录和处理 单步执行观察发现,每一个数都会逐次与它之后的数进行比较,排序,直到所有数据都与其后的数据比较排完后才结束。 六、实验结果与分析 最终实验结果为数据按照从小到大的顺序排列,分析原理为从第一个数开始,分别与后一个数比较,大于不变,小于就交换,直到倒数第二个数与最后一个数比完程序才算完成。 七、讨论、心得 实验成功,通过本实验对用汇编编写冒泡排序有了一定的认识,发现虽然汇编离机器更近,但是在语言表达上确实比C语言麻烦很多。 本文档来源于第一文库网https//

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值