当前位置:首页 > 单片机 > 单片机
[导读]例:改进的冒泡排序(单字节)N EQU 10FIR EQU 40HLJMP GOTABL:DB 12,3,45H,22,6,9,33DB 23H,43,11 ;数组元素表GO: MOV DPTR,#TABLMOV R0,#FIRMOV R7,#NEVALU:MOV A,0 ;给工作单元赋值MOVC A,@A+D

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

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭