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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(完整word版)单片机实验一冒泡法排序 (完整word版)单片机实验一冒泡法排序 (完整word版)单片机实验一冒泡法排序 实验一:冒泡法排序实验 一、 实验要求 实验目的: 掌握控制转移指令的功能,以及冒泡法排序的原理。 实验要求: 设 30H 开始的 10 个储存单元中,寄存的是无符号数,编写程序实现: 10 个数排序,寄存在 50H 开始的单元中。 二、 实验原理 多重循环即循环嵌套构造。 多重循环程序的设计方法和单重循环是同样的, 不过要分别 考虑各重循环的控制条件。 内循环属于外循环体重的详细办理部分。 在多重嵌套中, 不同意各个循环体互相交错, 也不同意从外循环跳入内循环, 不然编译时会犯错。 应当注意每次经过外循环进入内循环式,内循环的初始条件需要重置。 三、程序设计 1、程序流程图 开始 R4 ←外循环次数 R3 ←内循环次数 R0 ←缓冲区首地点 ←((R0)) A ←((R0)+1) ≥(B)? N ((R0)) ←→ ((R0)+1) R0←(R0)+1 (R3)-1=0? Y (R4)-1=0? Y R0←30H R1←31H ((R1)) ←((R0)) ((R0)) ←((R0)+1) ((R1)) ←((R1)+1) (R7)-1=0? Y 结束  Y N N N 图 1 冒泡法程序流程图 2、程序代码 N EQU 10 TAB EQU 30H ORG 0000H MOV 30H, #1 ;在 30H 中输入 10 个随机数 MOV 31H, #3 MOV 32H, #2 MOV 33H, #4 MOV 34H, #6 MOV 35H, #8 MOV 36H, #7 MOV 37H, #11 MOV 38H, #9 MOV 39H, #10 SORT: MOV R4, #N-1 LOOP1: MOV A,R4 ;冒泡法循环 MOV R3, A MOV @R0, #TAB LOOP2: MOV A, @R0 MOV B, A INC R0 MOV A, @R0 CLR C MOV R2, A SUBB A, B JNC UNEXCH MOV A, R2 UNEXCH: DJNZ R3, LOOP2 ;假如 AB ,次序履行 UNEXCH DJNZ R4, LOOP1 LJMP SWITCH EXCH: DEC R0 ;假如 AB ,则 A,B 调动地点 XCH A, @R0 INC R0 MOV @R0, A SWITCH: MOV R0, #30H MOV R1, #50H MOV R2, #N PAIXU: MOV A, @R0 ;将 30H 中排好的数挪动到 50H 中 MOV @R1, A INC R0 INC R1 DEC R2 CJNE 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, B JNC UNEXH 此时 A=(A)-(B)-(cy) ,储存器 A 中的值已经改变,不再是 30H 中的某个数。下边算法 EXCH 中互换 A 、B 的值获得的结果必定是错误的。应在比较完 A 、B 的值后,把 A 复原到 比较前的值。 4、算法中 39H 中的数据“丢掉”问题还需进一步思虑解决。

文档评论(0)

173****1527 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档