改進(jìn)的冒泡排序單片機(jī)匯編語(yǔ)言編程舉例
例:改進(jìn)的冒泡排序(單字節(jié))
N EQU 10
FIR EQU 40H
LJMP GO
TABL:DB 12,3,45H,22,6,9,33
DB 23H,43,11 ;數(shù)組元素表
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 ;外循環(huán)數(shù)
CLR F0 ;清交換標(biāo)志為0
NEXT0:
MOV A,R7
JZ EXIT ;只一個(gè)元素,退出
MOV R6,A ;內(nèi)循環(huán)數(shù)
MOV R0,#FIR ;R0指向第一個(gè)元素
NEXT1:
MOV A,@R0 ;取一個(gè)字節(jié)
INC R0
MOV B,@R0
CJNE A,B,L1 ;兩個(gè)相鄰字節(jié)比較
SJMP L2 ;相等,不必交換
L1:JC L2 ;前一個(gè)小于后一個(gè),符合增序
XCH A,@R0 ;前一個(gè)大于后一個(gè),交換
DEC R0
MOV @R0,A
INC R0
SETB F0 ;設(shè)置交換標(biāo)志為1
L2:DJNZ R6,NEXT1 ;內(nèi)循環(huán)是否結(jié)束?
JNB F0,EXIT ;無(wú)交換,提前結(jié)束
DJNZ R7,NEXT0 ;外循環(huán)是否結(jié)束?
EXIT: RET