📄 version1.05.txt
字号:
;----------------------------------------------------------------------------------------------------------
;功能:移动文件到文件尾
;调用参数:文件句柄FILEHANDLE
;返回参数:无
TOFILEEND MACRO FILEHANDLE
MOV BX,FILEHANDLE
MOV CX,0
MOV DX,0
MOV AL,2
MOV AH,42H
INT 21H
ENDM
;----------------------------------------------------------------------------------------------------------
;功能:显示字符串
;调用参数:字符串首地址
;返回参数:无
SHOW MACRO ADDRS
PUSHREG
LEA DX,ADDRS
MOV AH,9
INT 21H
POPREG
ENDM
;-----------------------------------------------------------------------------------------------------------
;功能:设置光标 (00-00)
;调用参数:行号
;返回参数:无
SET_P0 MACRO
MOV AH,2
MOV DH,0
MOV DL,0
MOV BH,0
INT 10H
ENDM
;-----------------------------------------------------------------------------------------------------------
;功能:设置光标 (A-44)
;调用参数:行号
;返回参数:无
SET_P1 MACRO A
MOV AH,2
MOV DH,A
MOV DL,44
MOV BH,0
INT 10H
ENDM
;-----------------------------------------------------------------------------------------------------------
;功能:设置光标 (14-02)
;调用参数:无
;返回参数:无
SET_P2 MACRO
PUSHREG
MOV AH,2
MOV DH,14
MOV DL,2
MOV BH,0
INT 10H
POPREG
ENDM
;-----------------------------------------------------------------------------------------------------------
;功能:设置光标 (10-33)
;调用参数:无
;返回参数:无
SET_P3 MACRO
MOV AH,2
MOV DH,10
MOV DL,33
MOV BH,0
INT 10H
ENDM
;-----------------------------------------------------------------------------------------------------------
;功能:清除全屏幕 (0000-4F4F)
;调用参数:无
;返回参数:无
CLEAR MACRO ;CLEAR ALL SCREEN
MOV AL,0
MOV CL,0
MOV CH,0
MOV DH,4F
MOV DL,4F
MOV BH,1FH
MOV AH,6
INT 21H
ENDM
;-----------------------------------------------------------------------------------------------------------
;功能:右上方方屏幕 (3044-1199)
;调用参数:无
;返回参数:无
CLEAR1 MACRO
MOV AL,0
MOV BH,1FH
MOV CH,3
MOV CL,44
MOV DH,11
MOV DL,99
MOV AH,6
INT 10H
ENDM
;-----------------------------------------------------------------------------------------------------------
;功能:清除下方屏幕 (1200-4F7F)
;调用参数:无
;返回参数:无
CLEAR2 MACRO
MOV AL,0
MOV BH,1FH
MOV CH,12
MOV CL,0
MOV DH,4F
MOV DL,7F
INT 10H
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
;---------------------------------------------------------------------------------------------------------
;功能:输出数据
;调用参数:要输出的缓冲区地址 addrs
;返回参数:无
SHOW_ITEM MACRO ADDRS
LOCAL NLOOP,ILOOP,W10,R1,G1 ,RET,CKLOOP
PUSH BX
PUSH CX
PUSH DX
MOV BX,0
CKLOOP: MOV DL,ADDRS[BX] ;CHECK NULL STRING
CMP DL,32
JNZ ILOOP
INC BX
CMP BX,16
JL CKLOOP
JMP RET
MOV BX,0
NLOOP: MOV DL,ADDRS[BX] ;DISPLAY NUMBER
MOV AH,2
INT 21H
INC BX
CMP BX,10
JL NLOOP
MOV DL,' '
MOV AH,2
INT 21H
ILOOP: MOV DL,ADDRS[BX] ;DISPLAY NAME
MOV AH,2
INT 21H
INC BX
CMP BX,16
JL ILOOP
MOV DL,' '
MOV AH,2
INT 21H
MOV DL,' '
MOV AH,2
INT 21H
MOV DL,' '
MOV AH,2
INT 21H
MOV CX,3 ;DISPLAY SCORE
W10: MOV DL,' '
MOV AH,2
INT 21H
MOV DL,' '
MOV AH,2
INT 21H
MOV DL,' '
MOV AH,2
INT 21H
MOV DL,ADDRS[BX]
MOV AH,2
INT 21H
INC BX
MOV DL,ADDRS[BX]
MOV AH,2
INT 21H
INC BX
MOV DL,ADDRS[BX]
MOV AH,2
INT 21H
INC BX
LOOP W10
MOV DL,' '
MOV AH,2
INT 21H
MOV DL,' '
MOV AH,2
INT 21H
MOV DL,' '
MOV AH,2
INT 21H
;----------------------------------2--10-进制转换(接上)-----------------
XOR DX,DX
MOV AX,WORD PTR ADDRS[25]
MOV CX,100
MOV DX,0
DIV CX
MOV BX,DX
CMP AL,0
JZ G1
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
G1:
MOV AX,BX
MOV DX,0
MOV CX,10
DIV CX
MOV BX,DX
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
MOV DL,BL
ADD DL,30H
INT 21H
NEWLINE
RET: POP DX
POP CX
POP BX
ENDM
;-------------------------------------------------------------------
;功能:设置光标
;调用参数:行号line列号 col
;返回参数:无
SETCURSOR MACRO LINE,COL
MOV AH,2
MOV DH,LINE
MOV DL,COL
XOR BH,BH
INT 21H
ENDM
;----------------------------------------------------
;功能:创建文件
;调用参数:PNAME :文件说明
;反回参数:AL=1 成功,FILEHANDLE=文件句柄,AL=0 失败
NEWFILE MACRO PATHNAME,FILEHANDLE,N_ERR
LOCAL N_ERROR,N_QUIT
PUSH BX
PUSH CX
PUSH DX
MOV AH,3CH
MOV CX,0
LEA DX,PARTHNAME
INT 21H
JC N_ERROR
MOV FILEHANDLE,AX
MOV AL,1
JMP N_QUIT
N_ERROR:
PUTS 15,1,N_ERR,1EH
MOV AL,0
N_QUIT:
POP DX
POP CX
POP BX
ENDM
;----------------------------------------------------------
;功能:读文件
;调用参数:LENTH:写字节数 BUF:缓冲区首址 FILEHANDLE:文件句柄
;返回参数:AL=1 成功,FILEHANDLE=文件句柄,AL=0 失败
READFILE MACRO LENTH,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,LENTH
INT 21H
JC R_ERROR
;MOV AL,1
JMP R_QUIT
R_ERROR:
PUTS 16,1,R_ERR,1EH
MOV AL,0
R_QUIT:
PUSH BX
PUSH CX
PUSH DX
ENDM
;----------------------------------------------------
;功能:打开文件
;调用参数:PNAME :文件说明
;反回参数:AL=1 成功,FILEHANDLE=文件句柄,AL=0 失败
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 16,1,O_ERR,1EH
MOV AL,0
O_QUIT:
POP DX
ENDM
;----------------------------------------------------------
;功能:写文件
;调用参数:LENTH:写字节数 BUF:缓冲区首址 FILEHANDLE:文件句柄
;返回参数:AL=1 成功,FILEHANDLE=文件句柄,AL=0 失败
WRITEFILE MACRO LENTH,BUF,FILEHANDLE,W_ERR
LOCAL W_ERROR,W_QUIT
PUSH BX
PUSH CX
PUSH DX
MOV BX,FILEHANDLE
MOV CX,LENTH
MOV AH,40H
LEA DX,BUF
INT 21H
JC W_ERROR
MOV AL,1
JMP W_QUIT
W_ERROR:
PUTS 16,1,W_ERR,1EH
MOV AL,0
W_QUIT:
PUSH BX
PUSH CX
PUSH DX
; CURSOR
ENDM
;-----------------------------------------------------------------
;功能:关闭文件
;调用参数 : FILEHANDLE:文件句柄
;返回参数:AL=1 成功,AL=0 失败
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 16,1,C_ERR,1EH
MOV AL,0
C_QUIT:
PUSH BX
PUSH CX
PUSH DX
ENDM
;---------------------------------------------------
;功能:给DS赋值
;调用参数: 数据段名:DATA
;返回参数:无
LOADDS MACRO DATA
MOV AX,DATA
MOV DS,AX
ENDM
;----------------------------------------------------
;功能: 返回DOS
;调用参数: 无
;返回参数: 无
RETURN MACRO
MOV AX,4C00H
INT 21H
ENDM
;程序9.1 (文件名:FILEFUC.MAC)
;CLRSCR ;功能:清屏
;CURSOR ;功能:置光标
;PUTS ;功能:在指定位置显示
;NEWFILE ;功能: 创建文件
;OPENFILE ;功能:打开文件
;WRITEFILE ;功能:写文件
;READFILE ;功能:读文件
;CLOSEFILE ;功能:关闭文件
;LOADDS ;功能:给DS赋值
;RETURN ;功能:返回DOS
;-----------------------------------
;功能:清屏
;-----------------------------------
CLRSCRN MACRO
PUSHREG
MOV AH,6
MOV AL,0
MOV BH,1FH
MOV CX,0
MOV DX,4F4FH
INT 10H
POPREG
ENDM
;-----------------------------------
;功能:置光标
;入口参数:DH:DL 行,列 出口参数:无
;-----------------------------------
CURSOR MACRO
PUSH AX
PUSH BX
MOV AH,2
XOR BH,BH
INT 10H
POP BX
POP AX
ENDM
;-----------------------------------------
;功能:在指定位置显示指定颜色的字符串
;入口参数:以$结束的字符串变量S 出口参数:无
;-----------------------------------------
PUTS MACRO ROW,COL,S,ATTRIB
LOCAL EXIT5
LOCAL LOOP10
PUSHREG
MOV DH,ROW
MOV DL,COL
CURSOR
LEA BX,S
MOV CX,80
LOOP10: MOV AL,[BX]
CMP AL,'$'
JE EXIT5
PUTC DH,DL,AL,ATTRIB
INC DL
INC BX
LOOP LOOP10
EXIT5: POPREG
ENDM
;-----------------------------------
;功能:保存寄存器DX、CX、BX、AX
;-----------------------------------
PUSHREG MACRO
PUSH DX
PUSH CX
PUSH BX
PUSH AX
ENDM
;-----------------------------------
;功能:恢复寄存器AX、BX、CX、DX
;-----------------------------------
POPREG MACRO
POP AX
POP BX
POP CX
POP DX
ENDM
;-----------------------------------------
;功能:在指定位置显示指定颜色的字符
;入口参数:X:行,Y:列,CHAR:字符,ATTRIB:颜色
;出口参数:无
;-----------------------------------------
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,1
INT 10H
POPREG ;宏嵌套
ENDM
;------------------------------------------
;功能:接受一个输入串
;入口参数:缓冲区首地址:ADDRS,串长度:COUNT
;出口参数:无
GETIN MACRO ADDRS,COUNT
LOCAL ZEROIT,LP,INPUT_END,EXIT
PUSHREG
MOV BX,0
ZEROIT: MOV ADDRS[BX],' '
INC BX
CMP BX,27
JL ZEROIT
MOV BX,0
LP: MOV AH,1
INT 21H
CMP AL,0AH
JZ INPUT_END
CMP AL,0DH
JZ INPUT_END
MOV ADDRS[BX],AL
INC BX
CMP BX,COUNT
JL LP
INPUT_END: CMP AL,0DH
JZ EXIT
MOV AL,0AH
JZ EXIT
MOV AH,7
INT 21H
JMP INPUT_END
EXIT:
POPREG
ENDM
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -