回复 2楼 Valenciax
CODE SEGMENT
ASSUME CS:CODE
BUF DB 12H,34H,07H,78H,65H,41H,99H,87H,66H,52H
N EQU $-BUF
START: PUSH CS
POP DS
PUSH CS
POP ES
LEA SI,BUF
MOV CX,N
CALL SORT
LEA SI,BUF
MOV CX,N
CALL DSPBCD
MOV AH,4CH
INT 21H
;===============================
DSPBCD:
PUSH AX
PUSH CX
PUSH DX
PUSH SI
CLD
@BCD1:
LODSB
ROR AL,4
PUSH AX
MOV DL,AL
AND DL,0FH
OR DL,30H
MOV AH,2
INT 21H
POP AX
ROR AL,4
MOV DL,AL
AND DL,0FH
OR DL,30H
MOV AH,2
INT 21H
MOV DL,'H'
INT 21H
MOV DL,32
INT 21H
MOV DL,32
INT 21H
LOOP @BCD1
POP SI
POP DX
POP CX
POP AX
RET
;===============================
; 单个字符串(或者字节数组)内部的排序(冒泡排序)
SORT PROC NEAR
; 串长度置入cx,串首地址置入 si
PUSH AX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
PUSHF
PUSH CX
POP DX
DEC DX
@SORTL1:
MOV CX,DX
MOV DI,SI
@SORTL2:
MOV AL,[DI+1]
CMP AL,[DI]
JA @SORTNEXT ; 无符号 升序
XCHG AL,[DI]
MOV [DI+1],AL
@SORTNEXT:
INC DI
LOOP @SORTL2
DEC DX
JNZ @SORTL1
POPF
POP DI
POP SI
POP DX
POP CX
POP AX
RET
SORT ENDP
;===============================================================
CODE ENDS
END START