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

📄 tempfile.asm

📁 用汇编编写的仓库零件管理系统
💻 ASM
字号:
;---------清屏,设置颜色
CLRSRC  MACRO  
		PUSH AX
		PUSH BX
		PUSH CX
		PUSH DX                
        MOV AX,0600H
        MOV BH,0AH
        XOR CX,CX
        MOV DX,184FH
        INT 10H
        POP DX
        POP CX
        POP BX
        POP AX
        ENDM
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
         
         
DATA     SEGMENT
MSG0 	DB 'Open file error!','$'
MSG1 	DB 'Read file error!','$'
MSG3 	DB 'Write file error!','$'
MSG4	DB 'Close file error!','$'
MSG5    DB '---------MAIN MENU----------',0AH,0DH,'$'
MSG6    DB'         INSERT(I)       ',0AH,0DH,'$'
MSG7    DB'         MODIFY(M)       ',0AH,0DH,'$'
MSG8    DB'         DELETE(D)       ',0AH,0DH,'$'
MSG9    DB'         QUERY (Q)       ',0AH,0DH,'$'
MSG10   DB'         COUNT (C)       ',0AH,0DH,'$'
MSG11   DB'         PRINT (P)       ',0AH,0DH,'$'
MSG12   DB'         EXIT  (E) 		',0AH,0DH,'$'
MSG13   DB'         LIST  (L)       ',0AH,0DH,'$'
MSG14	DB '----------------------------',0AH,0DH,'$'
MSG15	DB'Please select the option:','$'
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



         
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
         CLRSRC
         PUTS MSG5
	     PUTS MSG6
	     PUTS MSG7
	     PUTS MSG8
	     PUTS MSG9
	     PUTS MSG10
	     PUTS MSG11
	     PUTS MSG12
	     PUTS MSG13

         NEWLINE
         PUTS MSG14
         NEWLINE
         PUTS MSG15
         CURSOR 12,25
         
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
         MOV  BX,29
                           
LOP6:    MOV  AH,1
         INT  21H
         CMP  AL,0AH
         JZ   CONTINUE5
         CMP  AL,0DH
         JZ   CONTINUE5
         MOV  BUFFER1[BX],AL 
         INC  BX
         CMP  BX,34
         JZ   CONTINUE5
         JMP  LOP6  
CONTINUE5:                       ;MIN输入
         NEWLINE
         PUTS MESS20
         CURSOR 18,4
         MOV  BX,36
         
LOP7:    MOV  AH,1
         INT  21H
         CMP  AL,0AH
         JZ   CONTINUE6
         CMP  AL,0DH
         JZ   CONTINUE6
         MOV  BUFFER1[BX],AL 
         INC  BX
         CMP  BX,39
         JZ   CONTINUE6
         JMP  LOP7                                  
CONTINUE6:
          
         OPENFILE  FNAME,FILEHANDLE,O_ERR
         MOVCUR  2,0,FILEHANDLE              ;移动文件指针至文件尾
     
         WRITEFILE 39,BUFFER1,FILEHANDLE,W_ERR 
         PUTS MESS21 
         PUTS MESS22
         CLOSEFILE  FILEHANDLE,C_ERR
         
         MOV  AH,07                   ;任意键返回
         INT  21H         
         POP  DX
         POP  CX
         POP  BX
         POP  AX
         
         JMP START  
INSERT   ENDP         

LIST     PROC NEAR
         
         NEWLINE
         PUTS MESS14
         ;ZEROIT BUFFER2
         MOV  BX,0
         MOV  CX,39
LLOP1:   MOV  BUFFER2[BX],' '
         INC  BX
         LOOP LLOP1
               
         OPENFILE  FNAME,FILEHANDLE,O_ERR
         MOVCUR 0,0,FILEHANDLE                       ;移动文件指针至文件首
         
LIST1:   READFILE  39,BUFFER2,FILEHANDLE,R_ERR
         CMP     AX,0                                ;判断文件是否结束
         JE      LIST2
         PUTS    BUFFER2
         NEWLINE
         JMP  LIST1
LIST2:   
         CLOSEFILE  FILEHANDLE,C_ERR
         PUTS MESS22
         MOV  AH,7
         INT  21H         
         JMP  START         
LIST     ENDP        
         


QUERY    PROC NEAR
         
         NEWLINE
         PUTS MESS15
         CURSOR 13,3
         MOV  BX,0
         MOV  CX,39
QLOP1:   MOV  BUFFER1[BX],' '
         INC  BX
         LOOP QLOP1
                  
         MOV  BX,0 
Q1:      MOV  AH,1
         INT  21H
         CMP  AL,0AH
         JZ   Q2
         CMP  AL,0DH
         JZ   Q2
         MOV  BUFFER1[BX],AL 
         INC  BX
         CMP  BX,3
         JZ   Q2
         JMP  Q1
Q2:      
         OPENFILE  FNAME,FILEHANDLE,O_ERR
         MOVCUR 0,0,FILEHANDLE          
        ; ZEROIT BUFFER2
         MOV     BX,0
         MOV     CX,39
QLOP2:   MOV     BUFFER2[BX],' '
         INC     BX
         LOOP    QLOP2
                  
Q3:      READFILE  39,BUFFER2,FILEHANDLE,R_ERR
         MOV     DI,0
         MOV     SI,0
         MOV     CX,3
Q4:      CMP     AX,0                                ;判断文件是否结束
         JE      Q5
         MOV     DL,BUFFER1[DI]
         CMP     DL,BUFFER2[DI]             ;判断相符
         JNZ     Q3
         INC     DI
         LOOP    Q4
         MOV     SI,1
         NEWLINE
         PUTS    MESS14 
         PUTS    BUFFER2
Q5:      CLOSEFILE  FILEHANDLE,C_ERR 
         CMP  SI,1                          ;未发现相同项
         JZ   Q6
         PUTS MESS23 
Q6:      NEWLINE
         PUTS MESS22
         MOV  AH,7
         INT  21H         
         JMP  START           
QUERY    ENDP

MODIFY   PROC NEAR
         RET        
MODIFY   ENDP
DELETE   PROC NEAR
         RET        
DELETE   ENDP

COUN     PROC NEAR
         RET
COUN     ENDP

PRINT    PROC NEAR
         RET
PRINT    ENDP 
        


CODE     ENDS
         END  MAIN

⌨️ 快捷键说明

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