📄 fileio.mac
字号:
; --------------------------------------------------------------------
; 文件I/O宏指令库 - FILE_IO.MAC
; --------------------------------------------------------------------
; 创建文件
; 调用:NEWFILE 文件说明, 文件句柄
; 返回:AL - 返回1表示成功,0表示失败
; FILEHANDLE - 文件句柄
NEWFILE MACRO PATHNAM, FILEHANDLE
LOCAL N_ERROR, N_QUIT
PUSH BX
PUSH CX
PUSH DX
MOV AH, 3CH
MOV CX, 0
LEA DX, PATHNAM
INT 21H
JC N_ERROR
MOV FILEHANDLE, AX
MOV AL, 1
JMP N_QUIT
N_ERROR:MOV AL, 0
N_QUIT: POP DX
POP CX
POP BX
ENDM
; 打开文件
; 调用:OPENFILE 文件说明, 文件句柄
; 返回:AL - 返回1表示成功,0表示失败
; FILEHANDLE - 文件句柄
OPENFILE MACRO PNAME, FILEHANDLE
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: MOV AL, 0
O_QUIT: POP DX
ENDM
; 写入文件
; 调用:WRITEFILE 写字节数, 缓冲区首址, 文件句柄
; DX - 缓冲区首地址
; 返回:AL - 返回1表示成功,0表示失败,2表示写入0字节
WRITEFILE MACRO LENG, FILEHANDLE
LOCAL W_ERROR, W_QUIT, W_END
PUSH BX
PUSH CX
MOV BX, FILEHANDLE
MOV CX, LENG
MOV AH, 40H
INT 21H
JC W_ERROR
CMP AX, 0
JE W_END
MOV AL, 1
JMP W_QUIT
W_END: MOV AL, 2
JMP W_QUIT
W_ERROR: MOV AL, 0
W_QUIT: POP CX
POP BX
ENDM
; 读文件
; 调用:READFILE 读字节数, 文件句柄
; DX - 缓冲区首地址
; 返回:AL - 返回1表示成功,0表示失败,2表示读到文件尾
READFILE MACRO LENG, FILEHANDLE
LOCAL R_ERROR, R_QUIT, R_END
PUSH BX
PUSH CX
MOV AH, 3FH
MOV BX, FILEHANDLE
MOV CX, LENG
INT 21H
JC R_ERROR
CMP AX, 0
JE R_END
MOV AL, 1
JMP R_QUIT
R_END: MOV AL, 2
JMP R_QUIT
R_ERROR: MOV AL, 0
R_QUIT: POP CX
POP BX
ENDM
; 关闭文件
; 调用:CLOSEFILE 文件句柄
; 返回:AL - 返回1表示成功,0表示失败
CLOSEFILE MACRO FILEHANDLE
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: MOV AL, 0
C_QUIT: POP DX
POP CX
POP BX
ENDM
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -