📄 px.asm
字号:
DATA SEGMENT
DATARR DB 34H,0E4H,56H,9AH,12H,0B1H,0C2H,78H,0F5H,0D3H
SHOW1 DB 'The DATA is : 34H,E4H,56H,9AH,12H,B1H,C2H,78H,F5H,D3H $'
SHOW2 DB 'The Result is : $'
CHR DB 'H$'
DATA ENDS
;------------------------------------
STACK SEGMENT PARA STACK 'STACK'
DB 100 DUP( ? )
STACK ENDS
;------------------------------------
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
MAIN PROC FAR
START: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
;----------------------------------------
CALL CRLF
MOV DX,OFFSET SHOW1
MOV AH,09H
INT 21H
CALL CRLF
MOV DX,OFFSET SHOW2
MOV AH,09H
INT 21H
;---------------------------------------
MOV SI,OFFSET DATARR
MOV CX,10 ; /* LOOP COUNT */
LP1: MOV BX,0
MOV BX,SI
INC BX
MOV DI,BX
PUSH CX
MOV BX,CX
AND BX,0FH
DEC BX
MOV CX,BX
LP2: MOV AL,DATARR[DI]
CMP DATARR[SI],AL
JB NEXT
MOV BL,DATARR[SI]
XCHG BL,AL
MOV DATARR[SI],BL
MOV DATARR[DI],AL
NEXT: INC DI
LOOP LP2
POP CX
INC SI
CMP SI,09
JE EXIT
LOOP LP1
;----------------------------------
EXIT: MOV CX,10
MOV SI,OFFSET DATARR
DISP: CMP CX,10
JE NSHOW
MOV DL,','
MOV AH,02H
INT 21H
NSHOW: MOV AL,DATARR[SI]
PUSH CX
CALL SHOW
LEA DX,CHR
MOV AH,09H
INT 21H
INC SI
POP CX
LOOP DISP
CALL CRLF
RET
MAIN ENDP
;-----------------------------------
CRLF PROC NEAR
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
RET
CRLF ENDP
;------------------------------------
SHOW PROC NEAR
PUSH AX
AND AL,0F0H
MOV CL,4
SHR AL,CL
CMP AL,10
JB SMALH
ADD AL,07H
SMALH: ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
POP AX
AND AL,0FH
CMP AL,10
JB SMALL
ADD AL,07H
SMALL: ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
RET
SHOW ENDP
;------------------------------------
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -