以下是冒泡排序子程序,可直接调用:
(请设置es与ds相同)
;===============================
; 字数组排序(有符号数冒泡排序)
SORTWORD PROC NEAR
; 数组长度置入cx,数组首地址置入 si
PUSH AX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
PUSHF
PUSH CX
POP DX
DEC DX
@SORTWL1:
MOV CX,DX
MOV DI,SI
@SORTWL2:
MOV AX,[DI+2]
CMP AX,[DI]
JL @SORTWNEXT ; 从大到小(无符号换成 JB)
XCHG AX,[DI]
MOV [DI+2],AX
@SORTWNEXT:
INC DI
INC DI
LOOP @SORTWL2
DEC DX
JNZ @SORTWL1
POPF
POP DI
POP SI
POP DX
POP CX
POP AX
RET
SORTWORD ENDP
;===============================================
; 字节数组排序(有符号数冒泡排序)
SORTBYTE PROC NEAR
; 数组长度置入cx,数组首地址置入 si
PUSH AX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
PUSHF
PUSH CX
POP DX
DEC DX
@SORTBL1:
MOV CX,DX
MOV DI,SI
@SORTBL2:
MOV AL,[DI+1]
CMP AL,[DI]
JL @SORTBNEXT ; 从大到小(无符号换成 JB)
XCHG AL,[DI]
MOV [DI+1],AL
@SORTBNEXT:
INC DI
LOOP @SORTBL2
DEC DX
JNZ @SORTBL1
POPF
POP DI
POP SI
POP DX
POP CX
POP AX
RET
SORTBYTE ENDP
;===============================================