利用IBM PC DOS提供的系統調用,將一個文件的內容複製到另一個文件中去。要求文件名由用戶從鍵盤上輸入。

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章