51单片机冒泡排序_51单片机冒泡排序汇编语言子程序

;;入口:待排序的N个单字节无符号整数所在的RAM首址存于R3,N存于R4;

;;返回:由小至大排序完毕的N个数据存于原RAM块。

QUE:  MOV   A,   R3

MOV   R0,   A      ;;R0←RAM首址

MOV   A,    R4

MOV   R7,   A      ;;R7←N

CLR   PSW.5        ;;交换标志清零,表示未交换数

MOV   A,    @R0    ;;A←RAM中首个数

LP1:     INC   R0           ;;RAM指针加1

MOV   R2,   A      ;;送前数于R2暂存

CLR   C            ;;借位清零

SUBB  A,    @R0    ;;A←(A)-(C)-((R0))

MOV   A,   R2     ;;恢复前数于A

JC    LP2          ;;若有借位,表示后数较大,无须交换,转LP2

SETB  PSW.5        ;;若无借位,表示前数≧后数,交换标志置1

XCH   A,    @R0    ;;(A),((R0))交换

DEC   R0           ;;RAM指针-1

XCH   A,   @R0    ;;将较小的数冒泡上移

INC   R0           ;;RAM指针加1

LP2:     MOV   A,   @R0    ;;A←下一个数据

DJNZ  R7,   LP1    ;;若待比较的数据个数未递减至零,转LP1继续比较

RET

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值