dseg segment
msg db 'Please input the src file name:', '$' ;提示輸入源文件名
msg2 db 'Please input the dest file name:', '$' ;提示輸入目標文件名
filename db 20, 0, 20 dup(?) ;源文件名
dest db 20, 0, 20 dup(?) ;目標文件名
srcid dw 0 ;源文件號
destid dw 0 ;目標文件號
err db 'File error!', '$' ;錯誤提示
buff db 1024 dup(0) ;1kb的緩衝區
dseg ends
stac segment stack
skt db 80 dup(0) ;堆棧段
stac ends
code segment ;代碼段
assume cs: code, ds: dseg, ss: stac
main proc
mov ax, dseg
mov ds, ax
mov es, ax
mov ax, stac
mov ss, ax
mov sp, length skt ;初始化工作
mov dx, offset msg ;提示輸入源文件名
mov ah, 9
int 21h
mov dx, offset filename
mov ah, 0Ah
int 21h
mov dl, 0Ah
mov ah, 2
int 21h
mov bl, filename + 1
xor bh, bh
mov [bx + filename + 2], bh
mov dx, offset filename + 2 ;打開源文件
mov ax, 3D00h
int 21h
jc exit
mov srcid, ax ;保存源文件號
mov dx, offset msg2 ;提示輸入目標文件名
mov ah, 9
int 21h
mov dx, offset dest
mov ah, 0Ah
int 21h
mov dl, 0Ah
mov ah, 2
int 21h
mov bl, dest + 1
xor bh, bh
mov [bx + dest + 2], bh
mov dx, offset dest + 2 ;打開目標文件
mov ax, 3D01h
int 21h
jc exit
mov destid, ax ;保存目標文件號
L1:
mov bx, srcid ;BX放置源文件號
mov cx, 1024 ;每次保存1kb
mov dx, offset buff
mov ah, 3Fh ;讀入
int 21h
jc exit
mov cx, ax
mov bx, destid ;BX放置目標文件號
mov dx, offset buff
mov ah, 40h ;寫出
int 21h
jc exit
cmp ax, 1024
je L1
mov ah, 3Eh ;關閉目標文件
int 21h
jc exit
mov bx, srcid
mov ah, 3Eh ;關閉源文件
int 21h
jc exit
jmp Other
exit:
mov dx, offset err ;打開文件失敗
mov ah, 9
int 21h
Other:
mov ah, 4ch
int 21h
main endp
code ends
end main
利用IBM PC DOS提供的系統調用,將一個文件的內容複製到另一個文件中去。要求文件名由用戶從鍵盤上輸入。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.