📄 2.asm
字号:
DATA SEGMENT
MESS1 DB ' ACCESSORY MANAGEMENT SYSTEM ',0AH,0DH,'$'
MESS2 DB ' THIS IS THE MAIN MENU',0AH,0DH,'$'
MESS3 DB'INSERT(I) ',0AH,0DH,'$'
MESS4 DB'MODIFY(M) ',0AH,0DH,'$'
MESS5 DB'DELETE(D) ',0AH,0DH,'$'
MESS6 DB'QUERY (Q) ',0AH,0DH,'$'
MESS7 DB'COUNT (C) ',0AH,0DH,'$'
MESS8 DB'PRINT (P) ',0AH,0DH,'$'
MESS9 DB'EXIT (E) ',0AH,0DH,'$'
MESS10 DB'**************************************$'
MESS12 DB'INPUT YOUR ORDER:','$'
MESS13 DB'LIST (L)',0AH,0DH,'$'
MESS14 DB'ID NAME PRI AMO TOTAL MIN',0AH,0DH,'$'
MESS15 DB'ID:',0AH,0DH,'$'
MESS16 DB'NAME:',0AH,0DH,'$'
MESS17 DB'PRICE:',0AH,0DH,'$'
MESS18 DB'AMOUNT:',0AH,0DH,'$'
MESS19 DB'TOTAL:',0AH,0DH,'$'
MESS20 DB'MIN:',0AH,0DH,'$'
MESS21 DB'INSERT SUCCESSFUL!',0AH,0DH,'$'
MESS22 DB'ANY KEY TO CONTINUE',0AH,0DH,'$'
MESS23 DB'CAN NOT FIND THIS RECORDER',0AH,0DH,'$'
MESS24 DB'MODIFY SUCCESSFUL!',0AH,0DH,'$'
O_ERR DB'FILE OPEN WRONG$'
W_ERR DB'FILE WRITE WRONG$'
R_ERR DB'FILE READ WRONG$'
C_ERR DB'FILE CLOSE WRONG$'
FNAME DB"F:\MASM\SCORE.TXT"
BUFFER1 DB 39 DUP(?)
BUFFER2 DB 39 DUP(?)
DB '$'
FILEHANDLE DW ?
LENG DW 39
DATA ENDS
ASSEC STRUC
ID DB 3 DUP('')
NAMES DB 12 DUP('')
PRICE DB ?
AMOUNT DB ?
TOTAL DW ?
MIN DB ?
ASSEC ENDS
CURSOR MACRO ROW,COL ;置光标row+1行,col+1列
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH,2
MOV BH,0
MOV DH,ROW
MOV DL,COL
INT 10H
POP DX
POP CX
POP BX
POP AX
ENDM
PUTS MACRO S ;显示字符串
PUSH DX
PUSH AX
MOV AH,9
LEA DX,S
INT 21H
POP AX
POP DX
ENDM
OPENFILE MACRO PNAME,FILEHANDLE,O_ERR ;打开文件
LOCAL O_ERROR,O_QUIT
PUSH DX
MOV AH,3DH
LEA DX,PNAME
MOV AL,2
INT 21H
JC O_ERROR
MOV FILEHANDLE,AX
MOV AL,1
JMP O_QUIT
O_ERROR:
PUTS O_ERR
MOV AL,0
O_QUIT:
POP DX
ENDM
WRITEFILE MACRO LENGTH,BUF,FLIEHANDLE,W_ERR ;写文件
LOCAL W_ERROR,W_QUIT
PUSH BX
PUSH CX
PUSH DX
MOV BX,FILEHANDLE
MOV CX,LENGTH
MOV AH,40H
LEA DX,BUF
INT 21H
JC W_ERROR
MOV AL,1
JMP W_QUIT
W_ERROR:
PUTS W_ERR
MOV AL,0
W_QUIT:
POP DX
POP CX
POP BX
ENDM
READFILE MACRO LENGTH,BUF,FILEHANDLE,R_ERR ;读文件
LOCAL R_ERROR,R_QUIT
PUSH BX
PUSH CX
PUSH DX
LEA DX,BUF
MOV AH,3FH
MOV BX,FILEHANDLE
MOV CX ,LENGTH
INT 21H
JC R_ERROR
; MOV AL,1
JMP R_QUIT
R_ERROR:
PUTS R_ERR
; MOV AL,0
R_QUIT:
POP DX
POP CX
POP BX
ENDM
CLOSEFILE MACRO FILEHANDLE,C_ERR
LOCAL C_ERROR,C_QUIT
PUSH BX
PUSH CX
PUSH DX
MOV AH,3EH
MOV BX,FILEHANDLE
INT 21H
JC C_ERROR
MOV AL,1
JMP C_QUIT
C_ERROR:
PUTS C_ERROR
MOV AL,0
C_QUIT:
POP DX
POP CX
POP BX
ENDM
MOVCUR MACRO A,D,FILEHANDLE ;移动文件指针
MOV AL,A
MOV DX,D
MOV CX,0
MOV BX,FILEHANDLE
MOV AH,42H
INT 21H
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
ZEROIT MACRO BUF ;清零缓冲区
PUSH BX
PUSH CX
PUSH DX
MOV BX,0
MOV CX,39
LOPN: MOV BUF[BX],' '
INC BX
LOOP LOPN
POP DX
POP CX
POP BX
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
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA,ES:DATA
MOV AX,DATA
MOV DS,AX
START:
MOV AX,DATA
MOV DS,AX
MOV AH,0
MOV AL,3
INT 10H
CLEAR
PUTS MESS1
PUTS MESS2
PUTS MESS13
PUTS MESS3
PUTS MESS4
PUTS MESS5
PUTS MESS6
PUTS MESS7
PUTS MESS8
PUTS MESS9
NEWLINE
PUTS MESS10
NEWLINE
PUTS MESS12
CURSOR 12,17
W:
MOV AH,1
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
MOV AH,14 ;警告
MOV AL,7
MOV BH,0
INT 10H
JMP START
EXITF:
MOV AH,4CH
INT 21H
RET
MAIN ENDP
INSERT PROC NEAR
CURSOR 13,0
PUSH AX
PUSH BX
PUSH CX
PUSH DX
ZEROIT BUFFER1
PUTS MESS15 ;id输入缓冲区
CURSOR 13,3
MOV BX,0
LOP2: MOV AH,1
INT 21H
CMP AL,0AH
JZ CONTINUE1
CMP AL,0DH
JZ CONTINUE1
MOV BUFFER1[BX],AL
INC BX
CMP BX,3
JZ CONTINUE1
JMP LOP2
CONTINUE1: ;NAME输入缓冲区
NEWLINE
PUTS MESS16
CURSOR 14,5
MOV BX,5
LOP3: MOV AH,1
INT 21H
CMP AL,0AH
JZ CONTINUE2
CMP AL,0DH
JZ CONTINUE2
MOV BUFFER1[BX],AL
INC BX
CMP BX,17
JZ CONTINUE2
JMP LOP3
CONTINUE2: ;PRICE输入
NEWLINE
PUTS MESS17
CURSOR 15,6
MOV BX,19
LOP4: MOV AH,1
INT 21H
CMP AL,0AH
JZ CONTINUE3
CMP AL,0DH
JZ CONTINUE3
MOV BUFFER1[BX],AL
INC BX
CMP BX,22
JZ CONTINUE3
JMP LOP4
CONTINUE3: ;amount输入
NEWLINE
PUTS MESS18
CURSOR 16,7
MOV BX,24
LOP5: MOV AH,1
INT 21H
CMP AL,0AH
JZ CONTINUE4
CMP AL,0DH
JZ CONTINUE4
MOV BUFFER1[BX],AL
INC BX
CMP BX,27
JZ CONTINUE4
JMP LOP5
CONTINUE4: ;TOTAL输入
NEWLINE
PUTS MESS19
CURSOR 17,6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -