?? 數(shù)據(jù)塊排序(增序).asm
字號:
;***************雙字節(jié)數(shù)據(jù)塊排序(增)****************
;在源地址完成排序(增序)
;占用A、R1~R7 255個數(shù)據(jù)
SORT: MOV R0,#040H ;數(shù)據(jù)塊的首址在R0中,
MOV R7,#02H ;字節(jié)數(shù)在R7中
MOV A,R7
MOV R5,A ;比較次數(shù)初始化
SRT1: CLR F0 ;交換標(biāo)志初始化
MOV A,R5 ;取上遍比較次數(shù)
DEC A ;本遍比上遍減少一次
MOV R5,A ;保存本遍次數(shù)
MOV R2,A ;復(fù)制到計數(shù)器中
JZ SRT5 ;若為零,排序結(jié)束
MOV 06FH,R0 ;保存數(shù)據(jù)指針
SRT2: MOV A,@R0 ;讀取一個數(shù)據(jù)
MOV R3,A ;H
INC R0 ;指向下一個數(shù)據(jù)
MOV A,@R0 ;;再讀取一個數(shù)據(jù)
MOV R4,A ;L
INC R0
MOV A,@R0
MOV R1,A ;H
INC R0
MOV A,@R0 ;
MOV R6,A ;L
CLR C
SUBB A,R4 ;比較兩個數(shù)據(jù)的大小
MOV B,A
MOV A,R1
SUBB A,R3
JNC SRT4 ;順序正確(增序或相同),不必交換
SETB F0 ;設(shè)立交換標(biāo)志
MOV A,R4 ;將兩個數(shù)據(jù)交換位置
MOV @R0,A
DEC R0
MOV A,R3
MOV @R0,A
DEC R0
MOV A,R6
MOV @R0,A
DEC R0
MOV A,R1
MOV @R0,A
INC R0
INC R0
INC R0 ;指向下一個數(shù)據(jù)
SRT4: DEC R0
DJNZ R2,SRT2 ;完成本遍的比較次數(shù)
MOV R0,06FH ;恢復(fù)數(shù)據(jù)首址
JB F0,SRT1 ;本遍若進(jìn)行過交換,則需繼續(xù)排序
SRT5: NOP ;RET ;排序結(jié)束
CLR C
RET
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -