📄 a8-1.asm
字号:
;A8-1.asm
;综合程序设计实验-排序实验
.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 ;显示未排序的数组
MOV DS,AX
MOV DX,OFFSET MES1
MOV AH,09H
INT 21H
CALL KENTER
CALL SAHEX
CALL KENTER
CALL BUBBLE ;显示排序后的数组
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以上的数
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -