单片机实验一 冒泡法排序(参考模板).doc

单片机实验一 冒泡法排序(参考模板).doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE / NUMPAGES 实验一:冒泡法排序实验 实验要求 实验目的:掌握控制转移指令的功能,以及冒泡法排序的原理。 实验要求:设30H开始的10个存储单元中,存放的是无符号数,编写程序实现:10个数排序,存放在50H开始的单元中。 实验原理 多重循环即循环嵌套结构。多重循环程序的设计方法和单重循环是一样的,只是要分别考虑各重循环的控制条件。内循环属于外循环体重的具体处理部分。在多重嵌套中,不允许各个循环体相互交叉,也不允许从外循环跳入内循环,否则编译时会出错。应该注意每次通过外循环进入内循环式,内循环的初始条件需要重置。 三、程序设计 1、程序流程图 图 SEQ 图 \* ARABIC 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 四、程序验证 在30H中输入10个数,显示如下: 图 SEQ 图 \* ARABIC 2 30H单元中存储的10个数 对30H中的10个数排序,结果如下: 图 SEQ 图 \* ARABIC 3 对30H中10个数排序后的结果 将30H中的数转移到50H中,结果如下: 图 SEQ 图 \* ARABIC 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)

789 + 关注
官方认证
内容提供者

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

认证主体阳春市海霄网络科技有限公司
IP属地广东
统一社会信用代码/组织机构代码
91441781MA52HUKW1K

1亿VIP精品文档

相关文档