该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
;学生成绩名次表
DSEG SEGMENT
WORD1 DB 'Please enter the score of student '
NUMBER DB '1','(00~99)',':','$' ;存放学号
STRING DB 0AH,0DH,'$'
DATA1 DB 27 DUP(0),'$'
DATA2 DB 27 DUP(0),'$'
DSEG ENDS
SSEG SEGMENT
DB 100H DUP(0)
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,SS:SSEG
START: MOV AX,DSEG
MOV DS,AX
LEA SI,DATA1
ADD SI,2
PRINT1:LEA DX,WORD1 ;显示输入分数提示信息
MOV AH,9
INT 21H
MOV AL,NUMBER
MOV [SI-2],AL
MOV CX,2
RECORD1:MOV AH,7
INT 21H
CMP AL, '0'
JB RECORD1
CMP AL, '9'
JA RECORD1
MOV [SI],AL
MOV DL,AL
MOV AH,2
INT 21H
DEC SI
DEC CX
JNZ RECORD1
LEA DI,NUMBER
MOV AL,[DI]
CMP AL,'9'
JE PAIXU
INC AL
MOV [DI],AL
LEA DX,STRING
MOV AH,9
INT 21H
ADD SI,5
JMP PRINT1
PAIXU:MOV AH,7 ;按ENTER键开始排序显示
INT 21H
CMP AL, 0DH
JNE PAIXU
LEA DI,DATA2
L2:LEA SI,DATA1
INC SI
MOV CH,9
MOV CL,[SI-1] ;CL中记录AX存放成绩的学号
MOV AX,[SI]
PUSH SI
L0:ADD SI,3
DEC CH
JZ L1 ;比较结束
MOV BX,[SI]
CMP AX,BX
JAE L0
MOV AX,BX
MOV CL,[SI-1]
MOV DX,SI
POP SI
MOV SI,DX
PUSH SI
JMP L0
L1:MOV [DI],CL
MOV [DI+1],AH
MOV [DI+2],AL
ADD DI,3
POP SI ;将DATA1中的最高值清0
MOV AX,0000H
MOV [SI],AX
LEA AX,DATA2
ADD AX,27
CMP AX,DI
JNE L2
LEA DI,DATA2
MOV CX,9
L3:LEA DX,STRING
MOV AH,9
INT 21H
MOV DL,[DI]
MOV AH,2
INT 21H
MOV DL,':'
MOV AH,2
INT 21H
INC DI
MOV DL,[DI]
MOV AH,2
INT 21H
INC DI
MOV DL,[DI]
MOV AH,2
INT 21H
INC DI
DEC CX
JNZ L3
MOV AH,4CH
INT 21H
CSEG ENDS
END START