单片机实验一冒泡法排序

上传人:M****1 文档编号:422969992 上传时间:2023-04-21 格式:DOC 页数:5 大小:74KB
返回 下载 相关 举报
单片机实验一冒泡法排序_第1页
第1页 / 共5页
单片机实验一冒泡法排序_第2页
第2页 / 共5页
单片机实验一冒泡法排序_第3页
第3页 / 共5页
单片机实验一冒泡法排序_第4页
第4页 / 共5页
单片机实验一冒泡法排序_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《单片机实验一冒泡法排序》由会员分享,可在线阅读,更多相关《单片机实验一冒泡法排序(5页珍藏版)》请在金锄头文库上搜索。

1、.实验一:冒泡法排序实验一、 实验要求实验目的:掌握控制转移指令的功能,以及冒泡法排序的原理。实验要求:设30H开始的10个存储单元中,存放的是无符号数,编写程序实现:10个数排序,存放在50H开始的单元中。二、 实验原理多重循环即循环嵌套结构。多重循环程序的设计方法和单重循环是一样的,只是要分别考虑各重循环的控制条件。内循环属于外循环体重的具体处理部分。在多重嵌套中,不允许各个循环体相互交叉,也不允许从外循环跳入内循环,否则编译时会出错。应该注意每次通过外循环进入内循环式,内循环的初始条件需要重置。三、程序设计1、程序流程图精品.图 1 冒泡法程序流程图2、程序代码N EQU 10TAB E

2、QU 30HORG 0000HMOV 30H, #1 ;在30H中输入10个随机数 MOV 31H, #3MOV 32H, #2MOV 33H, #4MOV 34H, #6MOV 35H, #8MOV 36H, #7MOV 37H, #11MOV 38H, #9MOV 39H, #10 精品.SORT:MOV R4, #N-1 LOOP1: MOV A,R4 ;冒泡法循环MOV R3, AMOV R0, #TABLOOP2: MOV A, R0MOV B, AINC R0MOV A, R0CLR CMOV R2, ASUBB A, BJNC UNEXCHMOV A, R2 UNEXCH: DJ

3、NZ R3, LOOP2 ;如果AB,则A,B调换位置XCH A, R0INC R0MOV R0, A SWITCH: MOV R0, #30H MOV R1, #50H MOV R2, #NPAIXU:MOV A, R0;将30H中排好的数移动到50H中MOV R1, AINC R0INC R1DEC R2CJNE R2, #0, PAIXU SJMP $END四、程序验证1、 在30H中输入10个数,显示如下:精品.图 2 30H单元中存储的10个数2、 对30H中的10个数排序,结果如下:图 3 对30H中10个数排序后的结果3、 将30H中的数转移到50H中,结果如下:图 4 30H中

4、10个数转移到50H之后的结果结论:程序基本符合实验要求。但第10个数会“丢失”。因为按Loop1、Loop2循循环,第10个数(39H)要跟第11个数(40H)交换,而(40H)=00。故39H中的数会“丢失”。五、实验总结1、本实验用汇编语言写冒泡法程序,算法基本思路与C语言的冒泡法程序相似,可参照C语言程序编写汇编语言程序。2、先画算法流程图再写程序有助于理清思路。3、本实验汇编程序参考了课本P 的冒泡法例程。但书上的程序Loop2处有错误:书上的算法是:SUBB A, BJNC UNEXH精品.此时A=(A)-(B)-(cy),存储器A中的值已经改变,不再是30H中的某个数。下面算法EXCH中交换A、B的值得到的结果必然是错误的。应在比较完A、B的值后,把A还原到比较前的值。4、算法中39H中的数据“丢失”问题还需进一步思考解决。如有侵权请联系告知删除,感谢你们的配合!精品

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号