📄 4_8_3.asm
字号:
NAME SYCX2_8_3
STACK SEGMENT PARA STACK 'STACK'
DB 256 DUP(0)
STACK ENDS
DATA SEGMENT
FILEN DB 21 ; 文件名允许长度为20
DB ? ; 实际文件名长度
DB 20 DUP(?) ; 存新文件名
ERROP DB 'Open file error!',0AH,0DH,'$'
ERRWR DB 'Write file error!',0AH,0DH,'$'
ERRRD DB 'Read file error!',0AH,0DH,'$'
ERRMV DB 'Move file pointer error!',0AH,0DH,'$'
INMSG1 DB 'Please input filename:',0AH,0DH,'$'
INMSG2 DB 'Please input char:',0AH,0DH,'$'
BUFIN DB 0F00H DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
Start: MOV AX, DATA ; 装填DS段寄存器
MOV DS, AX
MOV AX, STACK ; 装填SS段寄存器
MOV SS, AX
CALL OPFILE ; DX指向存放要打开的文件名字符串
MOV AL, 0 ; 以只读方式打开
MOV AH, 3DH ; 打开文件
INT 21H
JC OPERR ; 打开出错,转OPERR
MOV BX, AX ; 转存文件号
MOV SI, 0 ; 置缓冲区相对指针
MOV DX, OFFSET BUFIN ; 置缓冲区首地址
MOV CX, 0F000H ; 设读出字节数
MOV AH, 3FH ; 将文件内容读出到缓冲区BUFIN,
INT 21H ; 实际读出字节数在AX中
JC RDERR ; 读出错,转RDERR
MOV DI, AX ; 保存实际读出字节数在DI中
MOV AH, 3EH ; 关闭文件
INT 21H
;
CALL OPFILE ; DX指向存放要打开的另一文件名字符串
MOV AL, 2 ; 以读写方式打开
MOV AH, 3DH ; 打开文件
INT 21H
JC OPERR ; 打开出错,转OPERR
;
MOV BX, AX ; 转存文件号
MOV CX, 0
MOV DX, 0 ; CX:DX表示移动读写指针的位移量,
; 设为0
MOV AL, 2 ; 从文件尾开始移动CX:DX表示的位移量
MOV AH, 42H ; 移动指针到文件尾
INT 21H
JC MVERR ; 移动指针出错,转MVERR
;
MOV DX, OFFSET BUFIN ; 置缓冲区首地址
MOV CX, DI ; 实际读出字节数放CX中
MOV AH, 40H ; 写文件
INT 21H
JC WRERR ; 写出错,转WRERR
JMP CLFILE ; 转关闭文件
;
OPERR: LEA DX, ERROP ; 显示打开文件出错的信息
JMP DISP1
RDERR: LEA DX, ERRRD ; 显示读文件出错的信息
JMP DISP1
WRERR: LEA DX, ERRWR ; 显示写文件出错的信息
JMP DISP1
MVERR: LEA DX, ERRMV ; 显示移动文件指针出错的信息
DISP1: MOV AH, 09H
INT 21H
JMP ENDO
;
CLFILE: MOV AH, 3EH ; 关闭文件
INT 21H
ENDO: MOV AH, 4CH
INT 21H
; 子程序OPFILE功能:准备打开用户指定的文件
; 出口:DX指向存放要打开的文件名字符串
OPFILE PROC ;
PUSH AX
PUSH BX
LEA DX, INMSG1 ; 显示要求输入打开的文件名的信息
MOV AH, 09H
INT 21H
LEA DX, FILEN ; 输入文件名
MOV AH, 0AH
INT 21H
;
MOV BL, FILEN+1 ; 取文件名长度
MOV BH, 0
MOV FILEN[BX+2],BYTE PTR 0 ; 文件名末尾添加0
MOV DL, 0DH ; 输出回车
MOV AH, 2
INT 21H
MOV DL, 0AH ; 输出换行,准备显示后面内容
MOV AH, 2
INT 21H
LEA DX, FILEN+2 ; 指向文件名
POP BX
POP AX
RET
OPFILE ENDP
;
CODE ENDS
END Start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -