51汇编实现冒泡.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文档。上传文档
查看更多
51汇编实现冒泡

单片机作业 题目要求: 用冒泡排序法实现将一组无序的数据从小到大的排列(本人设计的程序实现的是8个无序数字的排序)。 程序设计: 程序实现(已做详细注释): ; ; 文件名称: Asm2.asm ; 功能描述: 冒泡排序,升序 ; ORG 0000H ;程序的加载地址 LJMP MAIN ;程序加载后执行的第一条语句,即跳刀main函数 ORG 0100H ; ; MAIN: MOV R0,#07H ; MOV 20H,#34H ;把数据存到起始地址为20H的内存中 MOV 21H,#23H ;把数据存到起始地址为21H的内存中 MOV 22H,#89H ;把数据存到起始地址为22H的内存中 MOV 23H,#30H ;把数据存到起始地址为23H的内存中 MOV 24H,#22H ;把数据存到起始地址为24H的内存中 MOV 25H,#01H ;把数据存到起始地址为25H的内存中 MOV 26H,#20H ;把数据存到起始地址为26H的内存中 MOV 27H,#86H ;把数据存到起始地址为27H的内存中 MOV 28H,#38H ;把数据存到起始地址为28H的内存中 MOV 29H,#76H ;把数据存到起始地址为29H的内存中 LOOP1: MOV R1,#20H ;R1指向数据首地址 MOV A,R0 ; MOV R2,A ;把进行一次冒泡的次数存到R2中 LOOP2: MOV A,@R1 ;比较开始,取第一个数 MOV R3,A ;简单的转存一下前一个数,腾出累加器 ; A INC R1 ; 指向下一个地址 SUBB A,@R1 ;取后一个数 ,并与前一个数相减,看 是否有CY位溢出,溢出则说明前一个 数小,要换位 JC LOOP3 ;前一个数小的情况下,两个数交换位 置 ,否则,继续执行 MOV A,R3 ;把后一个数存到累加器下 XCH A,@R1 ;累加器的数与R1指向的数交换 ;位置, 即 ;前一个数和后一个数交 ; 换位置 DEC R1 ;R1自减,准备将后面的数存到前面 MOV @R1,A ;将后面的数存到前面 INC R1 ;R1自增,准备下次转换 LOOP3: DJNZ R2,LOOP2 ;R2自减,为下次冒泡准备 DJNZ R0,LOOP1 ;跳回去进行下一轮冒泡 SJMP $ ;程序结束 END 程序调试: 单步调试,展示内存中存入的无序的数据 存入时的代码: MOV 20H,#34H ;把数据存到起始地址为20H的内存中 MOV 21H,#23H ;把数据存到起始地址为21H的内存中 MOV 22H,#89H ;把数据存到起始地址为22H的内存中 MOV 23H,#30H ;把数据存到起始地址为23H的内存中 MOV 24H,#22H ;把数据存到起始地址为24H的内存中 MOV 25H,#01H ;把数据存到起始地址为25H的内存中 MOV 26H,#20H ;把数据存到起始地址为26H的内存中 MOV 27H,#86H ;把数据存到起始地址为27H的内存中 可以看到已存内存中的数完全无序。且与代码中要存入的数据完全一致。 全速运行程序后: 排序完成。试验成功。

文档评论(0)

hf916589 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档