📄 filefuc.mac
字号:
PUSHREG MACRO
PUSH DX
PUSH CX
PUSH BX
PUSH AX
ENDM
POPREG MACRO
POP AX
POP BX
POP CX
POP DX
ENDM
CLRCRN MACRO
PUSHREG
MOV AH,6
MOV AL,0
MOV BH,1FH
MOV CX,0
MOV DX,184FH
INT 10H
POPREG
ENDM
CURSOR MACRO
PUSH AX
PUSH BX
MOV AH,2H
XOR BH,BH
INT 10H
POP BX
POP AX
ENDM
PUTC MACRO X,Y,CHAR,ATTRIB
PUSHREG
MOV DH,X
MOV DL,Y
CURSOR
MOV AH,09H
MOV AL,CHAR
MOV BH,0
MOV BL,ATTRIB
MOV CX,1D
INT 10H
POPREG
ENDM
PUTS MACRO ROW,COL,S,ATTRIB
LOCAL EXIT5
LOCAL LOOP10
PUSHREG
MOV DH,ROW
MOV DL,COL
CURSOR
LEA BX,S
MOV CX,80D
LOOP10: MOV AL,[BX]
CMP AL,'$'
JE EXIT5
PUTC DH,DL,AL,ATTRIB
INC DL
INC BX
LOOP LOOP10
EXIT5: POPREG
ENDM
; NEWFILE功能: 创建文件
;调用参数: PATHNAM:文件说明;FILEHANDLE:文件句柄
;返回参数: AL=0 成功,FILEHANDLE=文件句柄; AL =1 失败
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,0
JMP N_QUIT
N_ERROR: MOV AL,1
N_QUIT: POP DX
POP CX
POP BX
ENDM
; OPENFILE功能:打开文件
;调用参数: PNAME:文件说明;FILEHANDLE:文件句柄
;返回参数: AL=0成功, FILEHANDLE=文件句柄; AL =1失败
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,0
JMP O_QUIT
O_ERROR: MOV AL,1
O_QUIT: POP DX
ENDM
; WRITEFILE功能: 写文件
;调用参数:LENGTH:写字节数;BUF:缓冲区首址;FILEHANDLE:文件句柄
;返回参数: AL=0 成功;AL =1失败
WRITEFILE MACRO LENGTH,BUF,FILEHANDLE
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,0
JMP W_QUIT
W_ERROR: MOV AL,1
W_QUIT: POP DX
POP CX
POP BX
ENDM
; READFILE功能: 读文件
;调用参数: LENGTH:读字节数;BUF:缓冲区首址; FILEHANDLE:文件句柄
;返回参数: AL=0 成功;AL =1失败
READFILE MACRO LENGTH,BUF,FILEHANDLE
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
JMP R_QUIT
R_ERROR: MOV AL,1
R_QUIT: POP DX
POP CX
POP BX
ENDM
; CLOSEFILE功能: 关闭文件
;调用参数: FILEHANDLE:文件句柄
;返回参数: AL=0 成功;AL =1失败
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,0
JMP C_QUIT
C_ERROR: MOV AL,1
C_QUIT: POP DX
POP CX
POP BX
ENDM
; LOADDS功能: 给DS赋值
;调用参数: 数据段名:DATA_NAME
;返回参数:无
LOADDS MACRO DATA_NAME
MOV AX,DATA_NAME
MOV DS,AX
ENDM
; RETURN功能: 返回DOS
;调用参数:无
;返回参数:无
RETURN MACRO
MOV AX,4C00H
INT 21H
ENDM
LOADDS MACRO DATA
MOV AX,DATA
MOV DS,AX
ENDM
RETURN MACRO
AX,4COOH
INT 21H
ENDM
CURSORPOS MACRO ;返回光标当前行列
push ax
push bx
MOV BH,0
MOV AH,3
INT 10H
MOV CL,DL
MOV CH,DH
CMP DL,15
JL STDS
SUB DL,3
STDS:
SUB DH,3
SUB DL,2
MOV AH,0
MOV AL,DH
MOV BL,2
DIV BL
MOV DH,AL
MOV AH,0
MOV AL,DL
MOV BL,10
DIV BL
MOV DL,AL
pop bx
pop ax
ENDM
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -