📄 1.txt
字号:
2.有一个首地址为A的N字数组,请编程序使该数组中的数按从大到小的次序排列。
编程要求及提示:
[1] 参加排序的数据及个数由学生自己定义。
[2] 要将排序前的数组和排序后的数组在屏幕上显示出来。
[3] 实验步骤同内容一。
流程图:
见图 2.
程序如下:
STACK SEGMENT STACK
DB 256 DUP(?)
STACK ENDS
DATA SEGMENT
DATA1 DW 4031H,3859H,0245H,1111H,0A231H,0FFFFH
STRING1 DB 'Original numbers:',0DH,0AH,'$'
STRING2 DB 'The numbers from large to small:',0DH,0AH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AX,STACK
MOV SS,AX
LEA DX,STRING1 ;显示人机交互提示
MOV AH,09H
INT 21H
MOV CX,6
LEA SI,DATA1 ;显示初始数据
L1: MOV AX,[SI]
ADD SI,2
CALL DISPAX
CALL DISPCR
LOOP L1
MOV CX,5
LEA SI,DATA1
ADD SI,10 ;指针指向最后一个数据
LP1: PUSH CX
PUSH SI
LP2: MOV AX,[SI] ;数据排序
CMP AX,[SI-2]
JBE NOXCHG
XCHG AX,[SI-2] ;交换操作
MOV [SI],AX
NOXCHG: DEC SI ;不需排序时继续
DEC SI
LOOP LP2
POP SI
POP CX
LOOP LP1
LEA DX,STRING2 ;显示字符串
MOV AH,09H
INT 21H
MOV CX,6 ;显示排好序后数据
LEA SI,DATA1
L2: MOV AX,[SI]
ADD SI,2
CALL DISPAX
CALL DISPCR
LOOP L2
MOV AH,4CH
INT 21H
DISPAL PROC ;显示AL内容子程序
PUSH AX
PUSH CX
PUSH DX
PUSH AX
MOV CL,4 ;处理高位十六进制数
SHR AL,CL
CALL CHANG
MOV AH,02H
MOV DL,AL
INT 21H ;显示一位字符
POP AX
AND AX,0FH ;处理低位十六进制数
CALL CHANG
MOV AH,02H
MOV DL,AL
INT 21H
POP DX
POP CX
POP AX
RET
DISPAL ENDP
CHANG PROC ;十六进制数转换为ASCII码
CMP AL,10
JNGE CHANG1
ADD AL,7
CHANG1: ADD AL,30H
RET
CHANG ENDP
DISPAX PROC ;显示AX内容子程序
XCHG AL,AH
CALL DISPAL
XCHG AH,AL
CALL DISPAL
RET
DISPAX ENDP
DISPCR PROC ;回车换行子程序
PUSH AX
PUSH DX
MOV AH,2
MOV DL,0AH
INT 21H
MOV AH,2
MOV DL,0DH
INT 21H
POP DX
POP AX
RET
DISPCR ENDP
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -