51单片机冒泡排序_改进的冒泡排序单片机汇编语言编程举例

改进的冒泡排序(单字节)

N EQU 10

FIR EQU 40H

LJMP GO

TABL:DB 12,3,45H,22,6,9,33

DB 23H,43,11 ;数组元素表

GO: MOV DPTR,#TABL

MOV R0,#FIR

MOV R7,#N

EVALU:MOV A,0 ;给工作单元赋值

MOVC A,@A+DPTR

MOV @R0,A

INC R0

INC DPTR

DJNZ R7,VALU

SORT: ;排序

MOV R7,#N -1 ;外循环数

CLR F0 ;清交换标志为0

NEXT0:

MOV A,R7

JZ EXIT ;只一个元素,退出

MOV R6,A ;内循环数

MOV R0,#FIR ;R0指向第一个元素

NEXT1:

MOV A,@R0 ;取一个字节

INC R0

MOV B,@R0

CJNE A,B,L1 ;两个相邻字节比较

SJMP L2 ;相等,不必交换

L1:JC L2 ;前一个小于后一个,符合增序

XCH A,@R0 ;前一个大于后一个,交换

DEC R0

MOV @R0,A

INC R0

SETB F0 ;设置交换标志为1

L2:DJNZ R6,NEXT1 ;内循环是否结束?

JNB F0,EXIT ;无交换,提前结束

DJNZ R7,NEXT0 ;外循环是否结束?

EXIT: RET

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值