一、
[要求] 对数组实施降序排序
[源程序]
STACK1 SEGMENT PARA STACK
STACK_AREA DW 100H DUP(?)
STACK_BTM EQU $ - STACK_AREA
STACK1 ENDS
DATA1 SEGMENT
TABLE_LEN DW 18
TABLE DW 200,300,400,10,20,0,1,8
DW 41H,40,42H,50,60,0FFFFH,2,3
DW 615H,7710H
RESULT DB 5 DUP(?),20H,'$'
NEW_LINE DB 0DH,0AH,'$'
DATA1 ENDS
CODE1 SEGMENT
ASSUME CS:CODE1,DS:DATA1,SS:STACK1
MAIN PROC FAR
start:
MOV AX,STACK1
MOV SS,AX
MOV SP,STACK_BTM
MOV AX,DATA1
MOV DS,AX
LP1: MOV BX,1
MOV CX,TABLE_LEN
DEC CX
MOV SI,OFFSET TABLE
LP2: MOV AX,[SI]
CMP AX,[SI+2]
JAE CONTINUE
XCHG AX,[SI+2]
MOV [SI],AX
MOV BX,0
CONTINUE: ADD SI,2
LOOP LP2
CMP BX,1
JZ EXIT
JMP SHORT LP1
EXIT: MOV AX,4C00H
INT 21H
MAIN ENDP
CODE1 ENDS
END MAIN
[运行截图]
二、
[要求] 在一的基础上,十六进制显示排序结果
[源程序]
STACK1 SEGMENT PARA STACK
STACK_AREA DW 100H DUP(?)
STACK_BTM EQU $ - STACK_AREA
STACK1 ENDS
DATA1 SEGMENT
TABLE_LEN DW 18
TABLE DW 200,300,400,10,20,0,1,8
DW 41H,40,42H,50,60,0FFFFH,2,3
DW 1506H,1077H
RESULT DB 5 DUP(?),20H,'$'
NEW_LINE DB 0DH,0AH,'$'
DATA1 ENDS
CODE1 SEGMENT
ASSUME CS:CODE1,DS:DATA1,SS:STACK1
MAIN PROC FAR
start:
MOV AX,STACK1
MOV SS,AX
MOV SP,STACK_BTM
MOV AX,DATA1
MOV DS,AX
LP1: MOV BX,1
MOV CX,TABLE_LEN
DEC CX
MOV SI,OFFSET TABLE
LP2: MOV AX,[SI]
CMP AX,[SI+2]
JAE CONTINUE
XCHG AX,[SI+2]
MOV [SI],AX
MOV BX,0
CONTINUE: ADD SI,2
LOOP LP2
CMP BX,1
JZ DISPLAY
JMP SHORT LP1
DISPLAY:
MOV CX,TABLE_LEN
MOV SI,OFFSET TABLE
LP3: PUSH CX
MOV CX,5
MOV DI,OFFSET RESULT+4
MOV AX,[SI]
MOV BX,10H
LP3_1: NOP
XOR DX,DX
DIV BX
CMP DL,10
JAE ALPHA
OR DL,30H
JMP STORE
ALPHA:
ADD DL,87
STORE:
MOV [DI],DL
DEC DI
LOOP LP3_1
MOV DX,OFFSET RESULT
MOV AH,9
INT 21H
INC SI
INC SI
POP CX
LOOP LP3
MOV DX,OFFSET NEW_LINE
MOV AH,9
INT 21H
EXIT: MOV AX,4C00H
INT 21H
MAIN ENDP
CODE1 ENDS
END MAIN
三、
[要求] 在一的基础上十进制显示排序结果
[源程序]
STACK1 SEGMENT PARA STACK
STACK_AREA DW 100H DUP(?)
STACK_BTM EQU $ - STACK_AREA
STACK1 ENDS
DATA1 SEGMENT
TABLE_LEN DW 18
TABLE DW 200,300,400,10,20,0,1,8
DW 41H,40,42H,50,60,0FFFFH,2,3
DW 1506,1077
RESULT DB 5 DUP(?),20H,'$'
NEW_LINE DB 0DH,0AH,'$'
DATA1 ENDS
CODE1 SEGMENT
ASSUME CS:CODE1,DS:DATA1,SS:STACK1
MAIN PROC FAR
start:
MOV AX,STACK1
MOV SS,AX
MOV SP,STACK_BTM
MOV AX,DATA1
MOV DS,AX
LP1: MOV BX,1
MOV CX,TABLE_LEN
DEC CX
MOV SI,OFFSET TABLE
LP2: MOV AX,[SI]
CMP AX,[SI+2]
JAE CONTINUE
XCHG AX,[SI+2]
MOV [SI],AX
MOV BX,0
CONTINUE: ADD SI,2
LOOP LP2
CMP BX,1
JZ DISPLAY
JMP SHORT LP1
DISPLAY:
MOV CX,TABLE_LEN
MOV SI,OFFSET TABLE
LP3: PUSH CX
MOV CX,5
MOV DI,OFFSET RESULT+4
MOV AX,[SI]
MOV BX,10
LP3_1: NOP
XOR DX,DX
DIV BX
OR DL,30H
MOV [DI],DL
DEC DI
LOOP LP3_1
MOV DX,OFFSET RESULT
MOV AH,9
INT 21H
INC SI
INC SI
POP CX
LOOP LP3
MOV DX,OFFSET NEW_LINE
MOV AH,9
INT 21H
EXIT: MOV AX,4C00H
INT 21H
MAIN ENDP
CODE1 ENDS
END MAIN