home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / dos_ency / 7 / copyfile.asm < prev    next >
Encoding:
Assembly Source File  |  1988-08-11  |  2.9 KB  |  61 lines

  1. fcb1    db      0               ; drive = default
  2.         db      'MYFILE  '      ; 8 character filename
  3.         db      'DAT'           ; 3 character extension
  4.         db      25 dup (0)      ; remainder of fcb1
  5. fcb2    db      0               ; drive = default
  6.         db      'MYFILE  '      ; 8 character filename
  7.         db      'BAK'           ; 3 character extension
  8.         db      25 dup (0)      ; remainder of fcb2
  9. buff    db      512 dup (?)     ; buffer for file I/O
  10.         .
  11.         .
  12.         .
  13.                                 ; open MYFILE.DAT...
  14.         mov     dx,seg fcb1     ; DS:DX = address of FCB
  15.         mov     ds,dx
  16.         mov     dx,offset fcb1
  17.         mov     ah,0fh          ; Function 0FH = open
  18.         int     21h             ; transfer to MS-DOS
  19.         or      al,al           ; did open succeed?
  20.         jnz     error           ; jump if open failed
  21.                                 ; create MYFILE.BAK...
  22.         mov     dx,offset fcb2  ; DS:DX = address of FCB
  23.         mov     ah,16h          ; Function 16H = create
  24.         int     21h             ; transfer to MS-DOS
  25.         or      al,al           ; did create succeed?
  26.         jnz     error           ; jump if create failed
  27.                                 ; set record length to 512
  28.         mov     word ptr fcb1+0eh,512
  29.         mov     word ptr fcb2+0eh,512
  30.                                 ; set DTA to our buffer...
  31.         mov     dx,offset buff  ; DS:DX = buffer address
  32.         mov     ah,1ah          ; Function 1AH = set DTA
  33.         int     21h             ; transfer to MS-DOS
  34. loop:                           ; read MYFILE.DAT
  35.         mov     dx,offset fcb1  ; DS:DX = FCB address
  36.         mov     ah,14h          ; Function 14H = seq. read
  37.         int     21h             ; transfer to MS-DOS
  38.         or      al,al           ; was read successful?
  39.         jnz     done            ; no, quit
  40.                                 ; write MYFILE.BAK...
  41.         mov     dx,offset fcb2  ; DS:DX = FCB address
  42.         mov     ah,15h          ; Function 15H = seq. write
  43.         int     21h             ; transfer to MS-DOS
  44.         or      al,al           ; was write successful?
  45.         jnz     error           ; jump if write failed
  46.         jmp     loop            ; continue to end of file
  47. done:                           ; now close files...
  48.         mov     dx,offset fcb1  ; DS:DX = FCB for MYFILE.DAT
  49.         mov     ah,10h          ; Function 10H = close file
  50.         int     21h             ; transfer to MS-DOS
  51.         or      al,al           ; did close succeed?
  52.         jnz     error           ; jump if close failed
  53.         mov     dx,offset fcb2  ; DS:DX = FCB for MYFILE.BAK
  54.         mov     ah,10h          ; Function 10H = close file
  55.         int     21h             ; transfer to MS-DOS
  56.         or      al,al           ; did close succeed?
  57.         jnz     error           ; jump if close failed
  58.         .
  59.         .
  60.         .
  61.