📄 3.asm
字号:
DATA SEGMENT
MESS1 DB ' STUDENT GRADE MANAGEMENT SYSTEM ',0AH,0DH,'$'
MESS2 DB ' THIS IS THE MAIN MENU',0AH,0DH,'$'
MESS3 DB'INSERT(I) PLEASE INPUT:',0AH,0DH,'$'
MESS4 DB'MODIFY(M) NAME :',0AH,0DH,'$'
MESS5 DB'DELETE(D) MATHS :',0AH,0DH,'$'
MESS6 DB'QUERY (Q) ENGLISH :',0AH,0DH,'$'
MESS7 DB'COUNT (C) COMPUTER:',0AH,0DH,'$'
MESS8 DB'PRINT (P) CHINESE :',0AH,0DH,'$'
MESS9 DB'EXIT (E) ',0AH,0DH,'$'
MESS10 DB'**************************************$'
MESS11 DB'NAME MA EN CO CH',0AH,0DH,'$'
MESS12 DB'MATHS <60 <70 <80 <90 <100',0AH,0DH,'$'
MESS13 DB'LIST (L)',0AH,0DH,'$'
ERR1 DB'THERE IS NO THIS STUDENT$'
ERR2 DB'FILE CLOSE WRONG$'
FNAME DB"F:\MASM\SCORE.TXT"
BUFFER1 DB 23 DUP(?)
BUFFERR DB 0AH,0DH,'$'
BUFFER2 DB 30 DUP(?)
BUFFER3 DB 8 DUP('0')
COUNT DB 5
HANDLE DW ?
DEL DB 8 DUP(?)
X DB ?
DATA ENDS
SCORE STRUC
NAMES DB 15 DUP('')
MATHS DB 0,0
ENGLISH DB 0,0
COMPUTER DB 0,0
CHINESE DB 0,0
SCORE ENDS
SHOW MACRO ADDRS ;显示字符串
LEA DX,ADDRS
MOV AH,9
INT 21H
ENDM
SET_P1 MACRO A ;显示光标位置0页11行37列
MOV AH,2
MOV DH,A
MOV DL,36
MOV BH,0
INT 10H
ENDM
SET_P2 MACRO ;显示光标位置0页13行2列
MOV AH,2
MOV DH,12
MOV DL,2
MOV BH,0
INT 10H
ENDM
SET_P3 MACRO ;显示光标位置0页2行31列
MOV AH,2
MOV DH,1
MOV DL,30
MOV BH,0
INT 10H
ENDM
CLEAR MACRO ;清屏
MOV AL,0
MOV CL,0
MOV CH,0
MOV DH,24
MOV DL,79
MOV BH,7
MOV AH,6
INT 21H
ENDM
CLEAR1 MACRO ;清除定义的靠左边部分
MOV AL,0
MOV BH,7
MOV CH,4
MOV CL,36
MOV DH,10
MOV DL,79
MOV AH,6
INT 10H
ENDM
CLEAR2 MACRO ;清除定义的靠下边部分屏幕
MOV AL,0
MOV BH,7
MOV CH,12
MOV CL,0
MOV DH,24
MOV DL,79
INT 10H
ENDM
NEWLINE MACRO ;换行
PUSH AX
PUSH DX
MOV DL,0DH
MOV AH,2
INT 21H
MOV DL,0AH
MOV AH,2
INT 21H
POP DX
POP AX
ENDM
SHOW_ITEM MACRO ADDRS ;显示一行数据
LOCAL ILOOP,W10
PUSH BX
PUSH CX
MOV BX,0
ILOOP: MOV DL,ADDRS[BX] ;前15位NAMES
MOV AH,2
INT 21H
INC BX
CMP BX,15
JL ILOOP
MOV CX,4
W10: MOV DL,'' ;后8位成绩
MOV AH,2
INT 21H
MOV DL,''
MOV AH,2
INT 21H
MOV DL,''
MOV AH,2
INT 21H
MOV DL,ADDRS[BX]
MOV AH,2
INC BX
MOV DL,ADDRS[BX]
MOV AH,2
INT 21H
INC BX
LOOP W10
NEWLINE
POP CX
POP BX
ENDM
GETIN MACRO ADDRS,COUNT2
LOCAL ZEROIT,LP,INPUT_END,EXIT
PUSH BX
PUSH AX
MOV BX,0
ZEROIT MOV ADDRS[BX],'' ;清零names
INC BX
CMP BX,15
JL ZEROIT
MOV BX,0
LP: MOV AH,1
INT 21H
CMP AL,0AH
JZ INPUT_END
CMP AL,0DH
JZ INPUT_END
MOV ADDRS[BX],AL
INC BX
CMP BX,COUNT2
JL LP
INPUT_END:
CMP AL,0DH
JZ EXIT
CMP AL,OAH
JZ EXIT
MOV AH,7
INT 21H
JMP INPUT_END
EXIT:
POP AX
POP BX
ENDM
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA,ES:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AH,0
MOV AL,3
INT 10H
CLEAR
SHOW MESS1
SHOW MESS2
SHOW MESS13
SHOW MESS3
SHOW MESS4
SHOW MESS5
SHOW MESS6
SHOW MESS7
SHOW MESS8
SHOW MESS9
NEWLINE
SHOW MESS10
SET_P3
W:
MOV AH,7
INT 21H
CMP AL,'I'
JNZ N1
CALL INSERT
JMP W
N1: CMP AL,'M'
JNZ N2
CALL MODIFY
JMP W
N2: CMP AL,'D'
JNZ N3
CALL DELETE
JMP W
N3: CMP AL,'Q'
JNZ N4
CALL QUERY
JMP W
N4: CMP AL,'C'
JNZ N5
CALL COUN
JMP W
N5: CMP AL,'P'
JNZ N6
CALL PRINT
JMP W
N6: CMP AL,'L'
JNZ N7
CALL LIST
JMP W
N7: CMP AL,'E'
JZ EXITF
JMP W
EXITF:
MOV AH,4CH
INT 21H
RET
MAIN ENDP
INSERT PROC NEAR
RET
INSERT ENDP
MODIFY PROC NEAR
RET
MODIFY ENDP
DELETE PROC NEAR
RET
DELETE ENDP
QUERY PROC NEAR
RET
QUERY ENDP
COUN PROC NEAR
RET
COUN ENDP
PRINT PROC NEAR
RET
PRINT ENDP
LIST PROC NEAR
RET
LIST ENDP
CODE ENDS
END MAIN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -