📄 stu.asm
字号:
CRLF MACRO
MOV AH,02H
MOV DL,0DH
INT 21H
MOV AH,02H
MOV DL,0AH
INT 21H
ENDM
DATA SEGMENT
STUNUM EQU 10
MESS1 DB 'PLEASE INPUT THE THE GRADE OF STUDENTS(1-10)',0DH,0AH,'$'
ERROR DB 'INPUT ERROR ,INPUT AGAIN! ',0DH,0AH,'$'
MESS2 DB 'THE SEQUENCE OF STUDENTS IS:' , 0DH,0AH,'$'
EMARK DB ?
ORG 1000H
SCORE DB 30 DUP(?)
ORG 2000H
SEQU DB 30 DUP(?)
DATA ENDS
STACK SEGMENT
STA DW 32 DUP(?)
TOP DW ?
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV SP,TOP
MOV AH,09H
MOV DX, OFFSET MESS1
INT 21H
MOV SI,OFFSET SCORE
MOV CX, STUNUM
MOV EMARK,0
UUU: CALL GETNUM
CMP EMARK,01H
JE START
MOV [SI],DL
INC SI
LOOP UUU
MOV CX, STUNUM
MOV DI,OFFSET SEQU
VVV: CALL SCAN
MOV AL, STUNUM
SUB AL,CL
INC AL
MOV BX,DX
DAA
MOV [DI+BX],AL
LOOP VVV
MOV AH,09H
LEA DX,MESS2
INT 21H
MOV CX,STUNUM
MOV SI,OFFSET SEQU
WWW: MOV AL,[SI]
CALL DISPI
PUSH DX
PUSH AX
MOV AH,02
MOV DL,20H
INT 21H
POP AX
POP DX
INC SI
LOOP WWW
MOV AX ,4C00H
INT 21H
SCAN PROC NEAR
MOV DX, 0
PUSH CX
MOV CX,STUNUM
MOV AL,00H
MOV BX,OFFSET SCORE
MOV SI,BX
CCC: CMP AL,[SI]
JAE JJJ
MOV AL,[SI]
MOV DX,SI
SUB DX,BX
JJJ: INC SI
LOOP CCC
ADD BX,DX
MOV BYTE PTR[BX],00H
POP CX
RET
SCAN ENDP
DISPI PROC NEAR
PUSH CX
MOV BL,AL
MOV DL,BL
MOV CL,04H
ROL DL,CL
AND DL,0FH
CALL DISPL
MOV DL,BL
AND DL,0FH
CALL DISPL
POP CX
RET
DISPI ENDP
DISPL PROC NEAR
ADD DL,30H
CMP DL,3AH
JB DDD
AND DL,27H
DDD: MOV AH,02H
INT 21H
RET
DISPL ENDP
GETNUM PROC NEAR
PUSH CX
XOR DX,DX
GGG: MOV AH,01H
INT 21H
CMP AL,0DH
JZ PPP
SUB AL,30H
JB KKK
CMP AL,09H
JBE GETS
JMP KKK
GETS: PUSH AX
MOV AL,DL
MOV CL,10
MUL CL
MOV DX,AX
POP AX
XOR AH,AH
ADD DX,AX
CMP DX,100
JA KKK
JMP GGG
KKK: MOV AH,09H
MOV DX,OFFSET ERROR
INT 21H
MOV EMARK,01H
PPP: PUSH DX
CRLF
POP DX
POP CX
RET
GETNUM ENDP
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -