?? a8-1.asm
字號(hào):
;A8-1.asm
;綜合程序設(shè)計(jì)實(shí)驗(yàn)-排序?qū)嶒?yàn)
.386p
STACK1 SEGMENT STACK USE16
DB 64 DUP(?)
STACK1 ENDS
DATA SEGMENT USE16
MES1 DB 'The array is:$'
MES2 DB 'After sort:$'
DATA1 DD 110015H,111101D8H,22110002H,111a0004H,1d110009H,111f044H,11d10203H,32H
COUNT =8
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA ;顯示未排序的數(shù)組
MOV DS,AX
MOV DX,OFFSET MES1
MOV AH,09H
INT 21H
CALL KENTER
CALL SAHEX
CALL KENTER
CALL BUBBLE ;顯示排序后的數(shù)組
MOV DX,OFFSET MES2
MOV AH,09H
INT 21H
CALL KENTER
CALL SAHEX
CALL KENTER
MOV AX,4C00H
INT 21H
BUBBLE PROC
XOR ESI,ESI
XOR ECX,ECX
MOV SI,OFFSET DATA1
MOV CX,COUNT
L1: XOR EBX,EBX
L2: CMP EBX,ECX
JAE LB
MOV EAX,[ESI+EBX*4+4]
CMP [ESI+EBX*4],EAX
JGE LNS
XCHG [ESI+EBX*4],EAX
MOV [ESI+EBX*4+4],EAX
LNS: INC EBX
JMP L2
LB: LOOP L1
RET
BUBBLE ENDP
SAHEX PROC NEAR
XOR ESI,ESI
XOR ECX,ECX
MOV SI,OFFSET DATA1
MOV CX,COUNT*4
C1: MOV EBX,ECX
DEC EBX
MOV AL,DS:[ESI+EBX]
AND AL,0F0H ;取高4位
SHR AL,4
CMP AL,0AH ;是否是A以上的數(shù)
JB C2
ADD AL,07H
C2: ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H ;顯示字符
MOV AL,DS:[ESI+EBX]
AND AL,0FH ;取低4位
CMP AL,0AH
JB C3
ADD AL,07H
C3: ADD AL,30H
MOV DL,AL ;顯示字符
MOV AH,02H
INT 21H
TEST EBX,03H
JNZ C4
MOV DL,20H
MOV AH,02H
INT 21H
C4: LOOP C1
RET
SAHEX ENDP
KENTER PROC NEAR
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
RET
KENTER ENDP
CODE ENDS
END START
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -