第一个程序设计实现对DATA区中的内存进行大小排序,并按照16进制将结果输出
此程序则主要实现一个冒泡排序算法:
STACK SEGMENT PARA STACK
STACK_AREA DW 100H DUP(0)
STACK_BTM EQU $ - STACK_AREA
STACK ENDS
DATA SEGMENT PARA
TABLE_LEN DW 20
TABLE DW 200,300,400,10,20,1506H,1015H,0,1,8
DW 41H,40,43H,50,60,0FFFFH,2,3,19H,0AH
RESULT DB 5 DUP(0),20H,'$' ;20H为空格
NEWLINE DB 0DH,0AH,'$'
DATA ENDS
CODE SEGMENT PARA
ASSUME CS:CODE,DS:DATA,SS:STACK
MAIN PROC FAR
MOV AX,STACK
MOV SS,AX
MOV AX,STACK_BTM
MOV SP,AX
MOV AX,DATA
MOV DS,AX
SORT:
MOV CX,TABLE_LEN
DEC CX
SORT_LP1:
MOV BX,1
MOV SI,OFFSET TABLE
PUSH CX
SORT_LP2:
MOV AX,[SI]
CMP AX,[SI + 2]
JBE SORT_CONTINUE
XCHG AX,[SI + 2]
MOV [SI],AX
MOV BX,0
SORT_CONTINUE:
ADD SI,2
LOOP SORT_LP2
POP CX
DEC CX
CMP BX,1
JZ PRINT
JMP SHORT SORT_LP1
PRINT:
CALL DISP_TABLE
EXIT: MOV AX,4C00H
INT 21H
MAIN ENDP
DISP_TABLE PROC
MOV SI,OFFSET TABLE
MOV CX,TABLE_LEN
CLD
DISP_TABLE_LP1:
LODSW
CALL DISP_HEX
LOOP DISP_TABLE_LP1
RET
DISP_TABLE ENDP
DISP_HEX PROC ;显示16进制形式输出AX
PUSH CX
MOV BX,AX
MOV CX,4
DISP_HEX_LP1:
PUSH CX
MOV CL,4
ROL BX,CL
MOV AL,BL
AND AL,0FH
ADD AL,30H
CMP AL,39H
JBE DISP_HEX_DIS
ADD AL,'A' - '9' - 1
DISP_HEX_DIS: MOV DL,AL
MOV AH,2
INT 21H
POP CX
LOOP DISP_HEX_LP1
MOV DL,'H'
MOV AH,2
INT 21H
LEA DX,NEWLINE
MOV AH,9
INT 21H
POP CX
RET
DISP_HEX ENDP
CODE ENDS
END MAIN