📄 lchj7.asm
字号:
ENTER MACRO
MOV AH,02H
MOV DL,0AH
INT 21H
MOV DL,0DH
INT 21H
ENDM
DATA SEGMENT
S STRUC
NUM DB 2 DUP(?)
NAM DB 20 DUP(0)
TLE DB 15 DUP(' ')
S ENDS
STU S 30 DUP(<>)
BJ1 DB 0
BJ2 DB 0
JM DB 'TONG XUE TONG XUN LU$'
ML DB 'NUMBER NAME TELEPHONE $'
CZTS DB 'INPUT THE NUMBER(1-30):$'
DO DB 'WHAT DO YOU WANT TO DO NOW?$'
TJ DB '1--ADD$'
CZ DB '2--FIND$'
LL DB '3--SKIM$'
SC DB '4--CANCEL$'
TC DB '0--QUIT$'
ER DB 'ERROR!$'
NO DB 'NO RECORD OF THE NUMBER!$'
TJNAME DB 'INPUT THE NAME: $'
TJAGE DB 'INPUT THE TELEPHONE: $'
SCCG DB 'CANCEL SUCCEED!$'
NODA DB 'THERE IS NO RECORD NOW!$'
F1 DB 'C:\MASM\CONTENT.TXT',0
DATA ENDS
STACK SEGMENT PARA STACK 'STACK'
DW 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START:MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AX,STACK
MOV SS,AX
CALL OPENFILE
CALL PUTFACE
DOES:MOV DX,OFFSET DO
MOV AH,9H
INT 21H
MOV AH,02H
MOV DL,' '
INT 21H
MOV AH,01H
INT 21H
CMP AL,'1'
JE LTJ
CMP AL,'2'
JE LCZ
CMP AL,'3'
JE LLL
CMP AL,'4'
JE LSC
CMP AL,'0'
JE LTC
ENTER
MOV AH,9H
MOV DX,OFFSET ER
INT 21H
ENTER
JMP DOES
LTJ:CALL ADDITION
CALL STORE
JMP DOES
LCZ:CALL FIND
LLL:CALL SKIM
LSC:CALL CANCEL
CALL STORE
JMP DOES
LTC:MOV AH,4CH
INT 21H
LINE PROC
MOV CX,79
MOV AH,02H
H1: MOV DL,'-'
INT 21H
LOOP H1
RET
LINE ENDP
TO_DOES PROC
JMP DOES
RET
TO_DOES ENDP
PUTFACE PROC
CALL LINE
ENTER
MOV CX,28
MOV AH,02H
H4: MOV DL,' '
INT 21H
LOOP H4
MOV DX,OFFSET JM
MOV AH,9H
INT 21H
ENTER
CALL LINE
MOV CX,31
MOV AH,02H
H3: MOV DL,' '
INT 21H
LOOP H3
MOV DX,OFFSET TJ
MOV AH,9H
INT 21H
ENTER
MOV CX,30
MOV AH,02H
H5: MOV DL,' '
INT 21H
LOOP H5
MOV DX,OFFSET CZ
MOV AH,9H
INT 21H
ENTER
MOV CX,30
MOV AH,02H
H6: MOV DL,' '
INT 21H
LOOP H6
MOV DX,OFFSET LL
MOV AH,9H
INT 21H
ENTER
MOV CX,30
MOV AH,02H
H7: MOV DL,' '
INT 21H
LOOP H7
MOV DX,OFFSET SC
MOV AH,9H
INT 21H
ENTER
MOV CX,30
MOV AH,02H
H8: MOV DL,' '
INT 21H
LOOP H8
MOV DX,OFFSET TC
MOV AH,9H
INT 21H
ENTER
CALL LINE
ENTER
RET
PUTFACE ENDP
OPENFILE PROC
MOV DX,OFFSET F1
MOV CX,0
MOV AH,5BH
INT 21H
MOV BX,AX
MOV AH,3EH
INT 21H
MOV DX,OFFSET F1
MOV AL,0
MOV AH,3DH
INT 21H
MOV SI,AX
MOV BX,AX
MOV CX,SIZE STU
MOV DX,OFFSET STU
MOV AH,3FH
INT 21H
MOV BX,SI
MOV AH,3EH
INT 21H
RET
OPENFILE ENDP
STORE PROC
MOV DX,OFFSET F1
MOV AL,1
MOV AH,3DH
INT 21H
MOV SI,AX
MOV DX,OFFSET STU
MOV CX,SIZE STU
MOV BX,AX
MOV AH,40H
INT 21H
MOV BX,SI
MOV AH,3EH
INT 21H
RET
STORE ENDP
ADDITION PROC
ENTER
MOV DX,OFFSET CZTS
MOV AH,9H
INT 21H
MOV AH,01H
INT 21H
MOV BJ1,AL
MOV AH,01H
INT 21H
MOV BJ2,AL
MOV AL,BJ1
AND AL,0FH
MOV BL,10
MUL BL
MOV BL,BJ2
AND BL,0FH
MOV BH,0
ADD AX,BX
SUB AL,1
MOV BL,TYPE STU
MUL BL
MOV BX,AX
MOV SI,0
MOV AL,BJ1
MOV STU[BX].NUM[SI],AL
INC SI
MOV AL,BJ2
MOV STU[BX].NUM[SI],AL
ENTER
MOV AH,9H
MOV DX,OFFSET TJNAME
INT 21H
MOV SI,0
TJ3:MOV AH,01H
INT 21H
CMP AL,0DH
JE TJ4
MOV STU[BX].NAM[SI],AL
INC SI
JMP TJ3
TJ4:ENTER
MOV AH,9H
MOV DX,OFFSET TJAGE
INT 21H
MOV SI,0
TJ5:MOV AH,01H
INT 21H
CMP AL,0DH
JE TJ8
MOV STU[BX].TLE[SI],AL
INC SI
JMP TJ5
TJ8:ENTER
RET
ADDITION ENDP
FIND PROC
ENTER
MOV DX,OFFSET CZTS
MOV AH,9H
INT 21H
MOV AH,01H
INT 21H
MOV BJ1,AL
MOV AH,01H
INT 21H
MOV BJ2,AL
ENTER
MOV BX,0
MOV DI,30
LCZ9:MOV SI,0
MOV AH,BJ1
CMP AH,STU[BX].NUM[SI]
JNE LCZ8
INC SI
MOV AL,BJ2
CMP AL,STU[BX].NUM[SI]
JE LCZ7
LCZ8:ADD BX,TYPE STU
DEC DI
CMP DI,0
JNE LCZ9
MOV AH,9H
MOV DX,OFFSET NO
INT 21H
ENTER
CALL TO_DOES
LCZ7:CALL LINE
ENTER
MOV DX,OFFSET ML
MOV AH,9H
INT 21H
ENTER
MOV DL,' '
INT 21H
MOV DL,' '
INT 21H
MOV BX,0
LCZ4:MOV SI,0
MOV AH,BJ1
CMP STU[BX].NUM[SI],AH
JNE LCZ5
INC SI
MOV AL,BJ2
CMP STU[BX].NUM[SI],AL
JZ LCZ2
LCZ5:ADD BX,TYPE STU
JMP LCZ4
LCZ2:MOV SI,0
MOV AH,02H
MOV DL,STU[BX].NUM[SI]
INT 21H
INC SI
MOV DL,STU[BX].NUM[SI]
INT 21H
MOV CX,4
MOV AH,02H
HG:MOV DL,' '
INT 21H
LOOP HG
MOV SI,0
LCZ3:MOV DL,STU[BX].NAM[SI]
INT 21H
INC SI
CMP STU[BX].NAM[SI],0
JNE LCZ3
MOV CX,20
SUB CX,SI
HG4:MOV DL,' '
INT 21H
LOOP HG4
MOV SI,0
LDY1:MOV DL,STU[BX].TLE[SI]
CMP DL,' '
JE JJB
INT 21H
INC SI
JMP LDY1
JJB:ENTER
CALL LINE
ENTER
CALL TO_DOES
RET
FIND ENDP
SKIM PROC
ENTER
MOV BX,0
MOV DI,30
YY1:MOV SI,0
CMP STU[BX].NAM[SI],0
JNE KK1
ADD BX,TYPE STU
DEC DI
CMP DI,0
JNE YY1
MOV AH,9H
MOV DX,OFFSET NODA
INT 21H
ENTER
CALL TO_DOES
KK1:CALL LINE
ENTER
MOV AH,9H
MOV DX,OFFSET ML
INT 21H
ENTER
MOV BX,0
MOV DI,30
LL1:MOV SI,0
CMP STU[BX].NAM[SI],0
JNZ PP1
ADD BX,TYPE STU
DEC DI
CMP DI,0
JNE LL1
JMP DOES10
PP1:MOV SI,0
MOV DL,' '
INT 21H
MOV DL,' '
INT 21H
MOV DL,STU[BX].NUM[SI]
INT 21H
INC SI
MOV DL,STU[BX].NUM[SI]
INT 21H
MOV SI,0
MOV CX,4
MOV AH,02H
HG3:MOV DL,' '
INT 21H
LOOP HG3
NA1:MOV DL,STU[BX].NAM[SI]
INT 21H
INC SI
CMP STU[BX].NAM[SI],0
JNZ NA1
MOV CX,20
SUB CX,SI
HG2:MOV DL,' '
INT 21H
LOOP HG2
MOV SI,0
LDY2:MOV DL,STU[BX].TLE[SI]
CMP DL,' '
JE JJ1
INT 21H
INC SI
JMP LDY2
JJ1:ENTER
ADD BX,TYPE STU
DEC DI
CMP DI,0
JNE LL1
DOES10:CALL LINE
ENTER
CALL TO_DOES
RET
SKIM ENDP
CANCEL PROC
ENTER
MOV DX,OFFSET CZTS
MOV AH,9H
INT 21H
MOV AH,01H
INT 21H
MOV BJ1,AL
MOV AH,01H
INT 21H
MOV BJ2,AL
MOV BX,0
MOV DI,30
ALCZ9:MOV SI,0
MOV AH,BJ1
CMP AH,STU[BX].NUM[SI]
JNE ALCZ8
INC SI
MOV AL,BJ2
CMP AL,STU[BX].NUM[SI]
JE ALSC1
ALCZ8:ADD BX,TYPE STU
DEC DI
CMP DI,0
JNE ALCZ9
ENTER
MOV AH,9H
MOV DX,OFFSET NO
INT 21H
ENTER
CALL TO_DOES
ALSC1:MOV BX,0
LSC4:MOV SI,0
MOV AH,BJ1
CMP AH,STU[BX].NUM[SI]
JNE LSC1
INC SI
MOV AL,BJ2
CMP AL,STU[BX].NUM[SI]
JE LSC2
LSC1:ADD BX,TYPE STU
JMP LSC4
LSC2:MOV SI,0
MOV STU[BX].NUM[SI],0
INC SI
MOV STU[BX].NUM[SI],0
MOV SI,0
MOV CX,20
LSC3:MOV STU[BX].NAM[SI],0
INC SI
LOOP LSC3
MOV SI,0
MOV CX,12
SC1:MOV STU[BX].TLE[SI],' '
INC SI
LOOP SC1
ENTER
MOV AH,9
MOV DX,OFFSET SCCG
INT 21H
ENTER
RET
CANCEL ENDP
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -