📄 wjgl.asm
字号:
IOS MACRO X,Y
LEA DX,X
MOV AH,Y
INT 21H
ENDM
STACKS SEGMENT STACK
DB 1024 DUP(?)
STACKS ENDS
DATAS SEGMENT
COUNT = 30
FILES DB COUNT+1 DUP(0)
SNAME DB COUNT+1,0,COUNT+1 DUP(0)
HANDLE1 DW 0
FILED DB COUNT+1 DUP(0)
DNAME DB COUNT+1,0,COUNT+1 DUP(0)
HANDLE2 DW 0
BUF DB ?
M1 DB 'Please choose the service:',13,10
DB '1,Check the files(unfilished)',13,10
DB '2,Del the files',13,10
DB '3,Copy the files',13,10
DB '4,Create the files',13,10
DB '5,Exit',13,10,'$'
M2 DB '1,Another files',13,10
DB '2,Back',13,10,'$'
MSG1 DB 'please input Source File:$'
MSG2 DB 'please input Destination File:$'
MSG3 DB 'please input Delling File:$'
MSG4 DB 'please input creatint File:$'
ERRMSG1 DB 'Sourse File error!',13,10,'$'
ERRMSG2 DB 'Destination File error!',13,10,'$'
ERRMSG3 DB 'Delling File error!',13,10,'$'
ERRMSG4 DB 'The file has already exist!',13,10,'$'
CR_LF DB 13,10,'$'
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START: MOV AX,DATAS
MOV DS,AX
MOV ES,AX
MAIN: IOS CR_LF,9
IOS M1,9 ;主菜单
MOV AH,1
INT 21H
CMP AL,'1'
JZ LIULAN
CMP AL,'2'
JZ GN2
CMP AL,'3'
JZ GN3
CMP AL,'4'
JZ GN4
CMP AL,'5'
JZ EXIT
EXIT: MOV AX,4C00H
INT 21H
LIULAN: IOS CR_LF,9
IOS M2,9 ;功能的重新调用
MOV AH,1
INT 21H
CMP AL,'1'
JZ LIULAN
CMP AL,'2'
JZ MAIN
GN2: CALL SHANCHU ;删除功能调用
IOS M2,9 ;功能的重新调用
MOV AH,1
INT 21H
CMP AL,'1'
JZ GN2
CMP AL,'2'
JZ MAIN
Q1: JMP MAIN
GN3: CALL FUZHI ;复制功能调用
IOS M2,9 ;功能的重新调用
MOV AH,1
INT 21H
CMP AL,'1'
JZ GN3
CMP AL,'2'
JZ MAIN
JMP EXIT
GN4: CALL QJIANLI ;建立功能调用
IOS M2,9 ;功能的重新调用
MOV AH,1
INT 21H
CMP AL,'1'
JZ GN4
CMP AL,'2'
JZ Q1
JMP EXIT
;--------------------------------------------------------------------------------------------------
SHANCHU PROC NEAR ;删除功能子程序
PUSH AX
PUSH BX
PUSH CX
PUSH DX
IOS CR_LF,9
IOS MSG3,9
IOS SNAME,10
IOS CR_LF,9
LEA SI,SNAME+2
LEA DI,FILES
MOV CL,SNAME+1
MOV CH,0
CALL CHANGE
MOV CX,0
IOS FILES,4EH
JC ERR1
MOV AL,0
IOS FILES,41H
JC ERR1
JMP LL2
ERR1: IOS ERRMSG3,9
LL2: POP DX
POP CX
POP BX
POP AX
RET
SHANCHU ENDP
;--------------------------------------------------------------------------------------------------
FUZHI PROC NEAR ;复制功能子程序
PUSH AX
PUSH BX
PUSH CX
PUSH DX
IOS CR_LF,9
IOS MSG1,9
IOS SNAME,10
IOS CR_LF,9
LEA SI,SNAME+2
LEA DI,FILES
MOV CL,SNAME+1
MOV CH,0
CALL CHANGE
MOV CX,0
IOS FILES,4EH
JC ERR2
MOV AL,0
IOS FILES,3DH
JC ERR2
MOV HANDLE1,AX
IOS MSG2,9
IOS DNAME,10
IOS CR_LF,9
LEA SI,DNAME+2
LEA DI,FILED
MOV CL,DNAME+1
MOV CH,0
CALL CHANGE
MOV CX,0
IOS FILED,3CH
JC ERR3
MOV HANDLE2,AX
COPY: MOV BX,HANDLE1
MOV CX,1
IOS BUF,3FH
CMP AX,1
JNE FILEEOJ
MOV BX,HANDLE2
MOV CX,1
IOS BUF,40H
JMP COPY
FILEEOJ: MOV BX,HANDLE2
MOV AH,3EH
INT 21H
SOURCE: MOV BX,HANDLE1
MOV AH,3EH
INT 21H
JMP LL3
ERR2: IOS ERRMSG1,9
JMP SOURCE
ERR3: IOS ERRMSG2,9
LL3: POP DX
POP CX
POP BX
POP AX
RET
FUZHI ENDP
;--------------------------------------------------------------------------------------------------
QJIANLI PROC NEAR ;建立功能子程序
PUSH AX
PUSH BX
PUSH CX
PUSH DX
IOS CR_LF,9
IOS MSG4,9
IOS SNAME,10
IOS CR_LF,9
LEA SI,SNAME+2
LEA DI,FILES
MOV CL,SNAME+1
MOV CH,0
CALL CHANGE
MOV CX,0
IOS FILES,4EH
JNC ERR4
MOV AL,0
IOS FILES,3CH
JC ERR4
JMP LL4
ERR4: IOS ERRMSG4,9
LL4: POP DX
POP CX
POP BX
POP AX
RET
QJIANLI ENDP
;--------------------------------------------------------------------------------------------------
CHANGE PROC ;把ASCII路径转实际路径
S: LODSB
STOSB
LOOP S
RET
CHANGE ENDP
;--------------------------------------------------------------------------------------------------
CODES ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -