⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lchj7.asm

📁 汇编语言程序设计课程设计
💻 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 + -