收藏 分享(赏)

单片机实验一 冒泡法排序.doc

上传人:精品资料 文档编号:10793820 上传时间:2020-01-09 格式:DOC 页数:5 大小:75.50KB
下载 相关 举报
单片机实验一 冒泡法排序.doc_第1页
第1页 / 共5页
单片机实验一 冒泡法排序.doc_第2页
第2页 / 共5页
单片机实验一 冒泡法排序.doc_第3页
第3页 / 共5页
单片机实验一 冒泡法排序.doc_第4页
第4页 / 共5页
单片机实验一 冒泡法排序.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

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

2、0) (R0)+1)R0 (R0)+1(R3)-1=0?(R4)-1=0?R0 30HR1 31H(R1) (R0)(R0) (R0)+1)(R1) (R1)+1)(R7)-1=0?内内B (R0)A (R0)+1)(A) (B)? YNNY NYNY图 1 冒泡法程序流程图2、程序代码N EQU 10TAB EQU 30HORG 0000HMOV 30H, #1 ;在 30H 中输入 10 个随机数 MOV 31H, #3MOV 32H, #2MOV 33H, #4MOV 34H, #6MOV 35H, #8MOV 36H, #7MOV 37H, #11MOV 38H, #9MOV 39H,

3、 #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: DJNZ R3, LOOP2 ;如果 AB,则 A,B 调换位置XCH A, R0INC R0MOV R0, ASWITCH: MOV R0, #30H MOV R1, #50HMOV R2, #NPAIXU: MOV A, R0;将 30H 中排好的数移动到 50H 中MOV R1,

4、 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 中 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 中的数据“丢失 ”问题还需进一步思考解决。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报