📄 sort.asm
字号:
;========================================================
;子程序名:SORT.ASM
;功能:从键盘输入一个数组,将其保存,并将其排序,最后输出
;========================================================
MLENGTH EQU 50
N EQU 10
DATA SEGMENT
STRING DB 'Please input the arry which you want to sort:',0DH,0AH,'$'
BUFFER DB MLENGTH ;调用0A号功能的缓冲区
DB ? ;实际长度
DB 4 DUP(?)
BUFF DB MLENGTH DUP(?),'$';保存输入的数组
TABLE DB 0,1,10,100
STR DB 0DH,0AH,'The arry after sorting is:',0DH,0AH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET STRING
MOV AH,09H
INT 21H
;====================================================
;以下是关于输入的代码
;====================================================
MOV DI,OFFSET BUFF
MOV CL,10;设置循环计数标志
XOR CH,CH
NEXT:
PUSH CX
MOV SI,OFFSET BUFFER+2;存放字符的缓冲区首地址
MOV DX,OFFSET BUFFER;输出提示信息
MOV AH,0AH
INT 21H
CALL INPUT;调用输入子程序
CALL NEWLINE;回车换行子程序
POP CX
LOOP NEXT
;=====================================================
;以下是关于排序的代码
;=====================================================
CALL SORT;调用排序子程序
;=====================================================
;以下是关于输出的代码
;=====================================================
MOV DX,OFFSET STR
MOV AH,09H
INT 21H
MOV CL,10;设置输出时候的计数标志
XOR CH,CH
MOV SI,1
;======================================================
SHUCHU:
CALL OUTPUT;调用输出子程序
CALL NEWLINE;调用回车换行子程序
LOOP SHUCHU
;======================================================
MOV AX,4C00H
INT 21H
;=====================================================
;子程序名:INPUT
;功能:调用0A号功能从键盘输入一个数组,放在BUFF缓冲区中
;======================================================
INPUT PROC
MOV DX,0
MOV CL, BUFFER+1
XOR CH,CH
NEXT1:
MOV BX,CX
MOV AL,[SI]
INC SI
;INC SI
SUB AL,30H
MOV BL,TABLE[BX]
MUL BL
ADD DX,AX
LOOP NEXT1
MOV [DI],DL
INC DI
;INC DI
RET
INPUT ENDP
;=====================================================
;程序名:NEWLINE
;功能:输出回车换行
;=====================================================
NEWLINE PROC
PUSH AX
PUSH DX
MOV DL,0DH
MOV AH,02H
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
POP DX
POP AX
RET
NEWLINE ENDP
;=====================================================
;子程序名:SORT
;功能:对BUFF中的数组进行排序
;=====================================================
SORT PROC
MOV BX,OFFSET BUFF-1
MOV SI,1
FORI:
MOV DI,SI
INC DI
FORJ:
MOV AL,[BX+SI]
CMP AL,[BX+DI]
JBE NEXTJ
XCHG AL,[BX+DI]
MOV [BX+SI],AL
NEXTJ:
INC DI
CMP DI,N
JBE FORJ
NEXTI:
INC SI
CMP SI,N-1
JBE FORI
RET
SORT ENDP
;============================================================
;子程序名:OUTPUT
;功能:将排好序的数组输出
;============================================================
OUTPUT PROC
MOV BX,OFFSET BUFF-1
MOV AL,[BX+SI]
INC SI
XOR AH,AH
MOV BL,10
DIV BL
MOV BL,AH
CMP AL,0
JZ YU
ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
YU:
ADD BL,30H
MOV DL,BL
MOV AH,2
INT 21H
RET
OUTPUT ENDP
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -