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

📄 main.asm

📁 建立一个安全、完整的学生信息管理系统
💻 ASM
字号:
;;;;;;;;;;;;;;;;;;; MACRO ;;;;;;;;;;;;;;;;;;;;;;;;;;
INCLUDE screen.txt
INCLUDE file.txt

;;;;;;;;;;;;;;;;;;; STACKSG SEGMENT ;;;;;;;;;;;;;;;;;;;;;;;;;;	

STACKSG SEGMENT STACK 'STK'
	    DW 64 DUP('S')
STACKSG ENDS

;;;;;;;;;;;;;;;;;;; DATA    SEGMENT ;;;;;;;;;;;;;;;;;;;;;;;;;;
	
DATA    SEGMENT

MESS1   DB '+*****| Score Database Management System |*****+',0DH,0AH
		DB '|--------------------File:---------------------|',0DH,0AH
		DB '|                                              |',0DH,0AH
		DB '|       1 : CREATE            2 : OPEN         |',0DH,0AH
        DB '+--------------------Edit:---------------------+',0DH,0AH
        DB '|                                              |',0DH,0AH
        DB '|    3 : INSERT   4 : DELETE     5 : DISPLAY   |',0DH,0AH
        DB '+-------------------Others:--------------------+',0DH,0AH
        DB '|                                              |',0DH,0AH
        DB '|                   6 : QUIT                   |',0DH,0AH
        DB '+----------------------------------------------+',0DH,0AH
        DB ' ',0DH,0AH
        DB 'Please input your choise :   < >',0DH,0AH,'$'
        
MESS2	DB ' ',0DH,0AH
		DB ' ',0DH,0AH
		DB '  Students_ID :',0DH,0AH
		DB '  Name        :',0DH,0AH
		DB '  ASM Score   :',0DH,0AH
		DB '  PCO Score   :',0DH,0AH
		DB '  OS  Score   :',0DH,0AH,'$'
MESS3   DB 'STUDENTID   NAME  ASM  PCO  OS   TOTAL',0AH,0DH,'$'
MESS4   DB ' THERE IS NO THIS STUDENT$'
MESS5   DB 'Create a file!$'
MESS6   DB 'Open a file!$'
FNAME   DB 'D:\score.txt',0
N_OK 	DB 'CREATE FILE OK!',0DH,0AH,'$'
N_ERR 	DB 'CREATE FILE ERROR!',0DH,0AH,'$'
O_OK 	DB 'OPEN FILE OK!',0dh,0ah,'$'
O_ERR 	DB 'OPEN FILE ERROR!',0dh,0ah,'$'
D_OK 	DB 'DELETE FILE OK!',0dh,0ah,'$'


BUFFER1 DB 25 DUP(?)
BUFFEER DB 0AH,0DH,'$'
BUFFER2 DB 30 DUP(?)
HANDLE  DW ?
DEL     DB 8 DUP('0')

DATA    ENDS

SCORE STRUC
SID	   DB 10 DUP(' ')
NAM    DB 6  DUP(' ')
ASM    DB 3  DUP(' ')
PCO    DB 3  DUP(' ')
OS     DB 3  DUP(' ')
TOTAL  DB 3  DUP(' ')
SCORE ENDS

;;;;;;;;;;;;;;;;;;; CODE    SEGMENT ;;;;;;;;;;;;;;;;;;;;;;;;;;

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
      ENTER_KEY
      CURSOR_ORIGINAL

MENU_C: MOV AH,7
      INT 21H
      CMP AL,'1'
      JNZ CHOOSE1            
      CALL CREATE
      JMP  MENU_C
CHOOSE1:   CMP AL,'2'
      JNZ  CHOOSE2
      CALL OPEN
      JMP  MENU_C
CHOOSE2:   CMP AL,'3'
      JNZ  CHOOSE3
      CALL INSERT
      JMP  MENU_C
CHOOSE3:   CMP AL,'4'
      JNZ  CHOOSE4
      CALL DELETE
      JMP  MENU_C
CHOOSE4:   CMP  AL,'5'
      JNZ  CHOOSE5
      CALL DISPLAY
      JMP  MENU_C
CHOOSE5:   CMP AL,'6'
      JZ  EXITF
      JMP  MENU_C
EXITF:
       MOV AH,4CH
       INT 21H
       RET
MAIN   ENDP

INSERT PROC NEAR
     PUSH AX
     PUSH BX
     PUSH CX
     PUSH DX
      
       MOV DX,OFFSET FNAME
       MOV AL,2
       MOV AH,3DH
       INT 21H
       MOV BX,AX
       
       CLEAR1
       SHOW MESS2
       SET_P1 14
       
       CALL GET_REC
       
       MOV CX,0               ;MOVE FILE POINTER TO END
       MOV DX,0
       MOV AL,2
       MOV AH,42H
       INT 21H
             
       MOV CX,25                   ;WRITE FILE
       MOV DX,OFFSET BUFFER1
       MOV AH,40H 
       INT 21H
       MOV AH,3EH
       INT 21H
       
       CURSOR_ORIGINAL
       
       POP DX
       POP CX
       POP BX
       POP AX
       RET
INSERT ENDP

GET_REC PROC NEAR
       PUSH AX
       PUSH BX
       PUT BUFFER2,10
       MOV BX,0
       MOV  CX,10
CONTINUE: 
       MOV AL,BUFFER2[BX]
       MOV BUFFER1[BX],AL
       INC BX
       LOOP  CONTINUE
       SET_P1 15
       PUT BUFFER2,6
       MOV AL,BUFFER2
       MOV BUFFER1[BX],AL
       INC BX
       MOV AL,BUFFER2+1
       MOV BUFFER1[BX],AL
       INC BX
       MOV AL,BUFFER2+2
       MOV BUFFER1[BX],AL
       INC BX
       MOV AL,BUFFER2+3
       MOV BUFFER1[BX],AL
       INC BX
       MOV AL,BUFFER2+4
       MOV BUFFER1[BX],AL
       INC BX
       MOV AL,BUFFER2+5
       MOV BUFFER1[BX],AL
       INC BX
       SET_P1 16 
       PUT BUFFER2,3
       MOV AL,BUFFER2
       MOV BUFFER1[BX],AL
       INC BX
       MOV AL,BUFFER2+1
       MOV BUFFER1[BX],AL
       INC BX
       MOV AL,BUFFER2+2
       MOV BUFFER1[BX],AL
       INC BX
       SET_P1 17
       PUT BUFFER2,3
       MOV AL,BUFFER2
       MOV BUFFER1[BX],AL
       INC BX
       MOV AL,BUFFER2+1
       MOV BUFFER1[BX],AL
       INC BX
       MOV AL,BUFFER2+2
       MOV BUFFER1[BX],AL
       INC BX
       SET_P1 18
       PUT BUFFER2,3
       MOV AL,BUFFER2
       MOV BUFFER1[BX],AL
       INC BX
       MOV AL,BUFFER2+1
       MOV BUFFER1[BX],AL
       INC BX
       MOV AL,BUFFER2+2
       MOV BUFFER1[BX],AL
       INC BX
       
       POP BX
       POP AX
       RET
GET_REC ENDP

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CREATE:	
		SET_P3 4,50
        SHOW MESS5
	    SET_P3 6,50
	    
		NEWFILE 	FNAME,HANDLE		    ;创建文件

		CLOSEFILE 	HANDLE	                ;关闭文件
		CURSOR_ORIGINAL
        RET
OPEN:   SET_P3 9,50
        SHOW MESS6
	    SET_P3 11,50     
        OPENFILE    FNAME,HANDLE            ;打开文件
		CURSOR_ORIGINAL
        RET


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

DELETE PROC NEAR
       PUSH AX
       PUSH BX
       PUSH CX
       PUSH DX
       CLEAR2
       SET_P3  15,0
       MOV DX,OFFSET FNAME
       MOV AL,2
       MOV AH,3DH
       INT 21H
       MOV BX,AX
       MOV HANDLE,AX
       PUT BUFFER1,15          ; CONTACT IS IN  BUFFER1
READ5: 
       MOV DX,OFFSET BUFFER2
       MOV CX,23
       MOV AH,3FH
       INT 21H
       LEA SI,BUFFER2
       LEA DI,BUFFER1
       MOV CX,15
C6:   
       MOV DL,BYTE PTR[SI] 
       CMP DL,BYTE PTR[DI]
       JNZ READ5
       INC SI
       INC DI
       LOOP C6
       MOV BX,HANDLE
       MOV AH,42H
       MOV AL,1
       MOV CX,0FFFFH
       MOV DX,-8
       INT 21H
       MOV CX,8
       MOV DX,OFFSET DEL
       MOV AH,40H
       INT 21H
       MOV AH,3EH
       INT 21H
       SHOW D_OK 
       JMP EXIT6

EXIT5: 
       SET_P2
       SHOW MESS4 
EXIT6:
       CURSOR_ORIGINAL 
       POP DX
       POP CX
       POP BX
       POP AX
       RET
DELETE ENDP             

DISPLAY   PROC   NEAR
       PUSH AX
       PUSH BX
       PUSH CX
       PUSH DX
       
       CLEAR3
       CLEAR2
       SET_P3  14,0   ;  cursor
       SHOW MESS3
       SET_P3  15,0   ;  cursor
       
       MOV DX,OFFSET FNAME
       MOV AL,2
       MOV AH,3DH
       INT 21H
       MOV BX,AX
AGAIN: 
       MOV DX,OFFSET BUFFER1
       MOV CX,25
       MOV AH,3FH
       INT 21H
       CMP AX,0
       JZ P
       SHOW_ITEM BUFFER1
       JMP AGAIN
P:         
       MOV AH,3EH
       INT 21H
       CURSOR_ORIGINAL
       POP DX
       POP CX
       POP BX
       POP AX
       RET
DISPLAY   ENDP

CODE   ENDS
       END START

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -