|
;;入口:待排序的N個(gè)單字節(jié)無符號(hào)整數(shù)所在的RAM首址存于R3,N存于R4;
;;返回:由小至大排序完畢的N個(gè)數(shù)據(jù)存于原RAM塊。
QUE: MOV A, R3
MOV R0, A ;;R0←RAM首址
MOV A, R4
MOV R7, A ;;R7←N
CLR PSW.5 ;;交換標(biāo)志清零,表示未交換數(shù)
MOV A, @R0 ;;A←RAM中首個(gè)數(shù)
LP1: INC R0 ;;RAM指針加1
MOV R2, A ;;送前數(shù)于R2暫存
CLR C ;;借位清零
SUBB A, @R0 ;;A←(A)-(C)-((R0))
MOV A, R2 ;;恢復(fù)前數(shù)于A
JC LP2 ;;若有借位,表示后數(shù)較大,無須交換,轉(zhuǎn)LP2
SETB PSW.5 ;;若無借位,表示前數(shù)≧后數(shù),交換標(biāo)志置1
XCH A, @R0 ;;(A),((R0))交換
DEC R0 ;;RAM指針-1
XCH A, @R0 ;;將較小的數(shù)冒泡上移
INC R0 ;;RAM指針加1
LP2: MOV A, @R0 ;;A←下一個(gè)數(shù)據(jù)
DJNZ R7, LP1 ;;若待比較的數(shù)據(jù)個(gè)數(shù)未遞減至零,轉(zhuǎn)LP1繼續(xù)比較
RET
|
評(píng)分
-
查看全部評(píng)分
|