📄 copyfile.asm
字号:
DATAS SEGMENT
;此处输入数据段代码
source db 30 dup(0) ;存储原文件名
target db 30 dup(0) ;存储目标文件名
sourhandle dw ? ;原文件句柄
targhandle dw ? ;目标文件句柄
buffer db 80h dup(?) ;缓冲区,存储从原文件中读取的字符
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
push ds
sub ax,ax
push ax
MOV AX,DATAS
MOV DS,AX
;此处输入代码据段代码
mov si,82h ;取段前缀地址
lea di,source
a1:
mov al,es:[si]
cmp al,' ' ;遇到空格,说明原文件名读完
je next
mov [di],al ;将原文件名存入source
inc si
inc di
jmp a1
next:
inc si ;跳过空格
lea di,target
a2:
mov al,es:[si]
cmp al,0dh ;遇到回车,目标文件名读完
je next1
mov [di],al ;将目标文件名存入target
inc si
inc di
jmp a2
next1:
mov ah,3dh ;为读打开原文件
mov al,00
lea dx,source
int 21h
mov sourhandle,ax ;原文件句柄送sourhandle
mov ah,3ch ;建立一个属性正常的目标文件
mov cx,00
lea dx,target
int 21h
mov targhandle,ax ;目标文件句柄送targhandle
writh:
mov ah,3fh ;读文件,信息存储在缓冲区中
mov bx,sourhandle
mov cx,80h ;每次读取80h个字节
lea dx,buffer
int 21h
cmp ax,80h
jb part ;文件读完
all:
mov cx,80h
mov ah,40h ;将缓冲区中的内容写入目标文件
mov bx,targhandle
lea dx,buffer
int 21h
jmp writh
part:
mov cx,ax ;将读出的数据写入目标文件
mov ah,40h ;将缓冲区中的内容写入目标文件
mov bx,targhandle
lea dx,buffer
int 21h
exit:
mov ah,3eh ;关闭原文件
mov bx,sourhandle
int 21h
mov ah,3eh ;关闭目标文件
mov bx,targhandle
int 21h
MOV AH,4CH
INT 21H
CODES ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -