📄 zhsy.asm
字号:
DATA SEGMENT
GRADE DB 50 DUP(0)
RANK DB 50 DUP(0)
SNO DB ?
COUNT DW ?
MES1 DB 'INPUT GRADE:$'
MES2 DB 'SNO GRADE RANK$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
CALL INPUT
MOV DI,0
MOV CX,COUNT
B1: PUSH CX
MOV CX,COUNT
MOV SI,0
MOV AL,GRADE[DI]
MOV DX,1
B2:CMP GRADE[SI],AL
JBE CONU
INC DX
CONU:ADD SI,1
LOOP B2
POP CX
MOV RANK[DI],DL
ADD DI,1
LOOP B1
CALL OUTPUT
MOV AH,1
INT 21h
MOV AX,4CH
INT 21H
INPUT PROC ;输入子程序
MOV AH,09H
MOV DX,OFFSET MES1
INT 21H
CALL CRLF
MOV SI,0
A1: MOV BX,0
MOV CX,2
A2: PUSH CX
MOV AH, 1 ;键盘输入
INT 21h
SUB AL,30h
JL EXIT ; <0退出
CMP AL,9
JG EXIT ; >9退出
CBW
XCHG AX,BX
MOV CX,10
MUL CX
XCHG AX,BX
ADD BX,AX
POP CX
LOOP A2
MOV GRADE[SI],BL
INC SI
INC COUNT
CALL SPACE
JMP A1
EXIT: RET
INPUT ENDP
OUTPUT PROC ;输出子程序
LEA DX,MES2
MOV AH,09H
INT 21H
CALL CRLF
MOV CX,COUNT
MOV SI,OFFSET GRADE
MOV DI,OFFSET RANK
C1: PUSH CX
ADD SNO,1
MOV DL,SNO
ADD DL,30H
MOV AH,2
INT 21H
MOV CX,5
C2: CALL SPACE
LOOP C2
MOV AL,[SI]
CALL ZH
INC SI
MOV CX,5
C3: CALL SPACE
LOOP C3
MOV AL,[DI]
CALL ZH
INC DI
CALL CRLF
POP CX
LOOP C1
RET
OUTPUT ENDP
ZH PROC
PUSH BX
PUSH CX
PUSH SI
PUSH DI
SUB AH,AH
MOV CL,10D
DIV CL
MOV BH,AH
MOV DL,AL
ADD DL,30H
MOV AH,02H
INT 21H
MOV DL,BH
ADD DL,30H
MOV AH,02H
INT 21H
POP DI
POP SI
POP CX
POP BX
RET
ZH ENDP
SPACE PROC NEAR ;空格
PUSH AX
PUSH DX
MOV AH,2
MOV DL,20H
INT 21H
POP DX
POP AX
RET
SPACE ENDP
CRLF PROC NEAR ;回车换行
PUSH AX
PUSH DX
MOV DL,0DH
MOV AH,2
INT 21h
MOV DL,0AH
MOV AH,2
INT 21H
POP DX
POP AX
RET
CRLF ENDP
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -