Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.lang.asm.x86    |    Ahh, the lost art of x86 assembly    |    4,675 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 2,924 of 4,675    |
|    Frank Kotler to Kevin Mardoux    |
|    Re: copy bytes in a file    |
|    14 Aug 17 18:21:17    |
      From: fbkotler@nospicedham.myfairpoint.net              Kevin Mardoux wrote:       > Hello, to day : i add :       > You propose to reserve a buffer for each file, then save the total result in       one time, or buffer       > ... instead of recording byte by byte       > Can someone give me an example?              I haven't used DOS for a long time, and A86 for even longer.              > I confirm: byte 0 and all unaltered even bytes (Byte=2n) so        ,2,4,6,8,10,12...       > Bytes 1, 3 and all odd ones are replaced B=2n+1) : 1,3,5,7,9,11,13 ...              What I had in mind was roughly...              >> mov si,0080H ; how many Char after ?       >> lodsb       >> cmp al,0       >> jne suite       >> erreur: mov dx,offset usage       >> mov ah,9       >> int 21h ; indicate the syntax : to run type " R2 S2.DAT "       >> ret ; this file will open automatiquely the file R1.DAT       >>       >> suite: cbw       >> xchg ax,bx       >> mov byte [bx+si],00 ; 0 Terminate       >> inc si ; mov si,0082H       >>       >> mov ax,3d12H       >> mov dx,0082H ; adresse name S2.DAT i MUST tape it       >> int 21H       >> jb err82 ; can i open it ? jnc       >> ; the user MUST type de name of the file with data 1,2,3,4...       >>       >> xchg ax,bx ; Handle       >> mov ah,3fH       >> mov cx,0FFFFh ; ; size max buffer       >> mov dx,offset table ; position file of S2.DAT       >> int 21H ; cmp ax,0000 ; JBE fermer       >> ; i suppose more than 0 byte to read       >> ; i suppose that datas of S2.DAT are on address Table       >>       >> mov word VS2,ax ; just for information Verify S2       >> mov word ntest,ax ; True number of bytes to read in the TABLE S2.DAT       >> ; ntest is usefull : will count number of cycles       >> push bx ; i qave the handle of file S2.DAT       >>       >> mov ax,3d12H ; i will write in this file       >> mov dx,offset S1R1 ; file R1.DAT       >> int 21H       >> jb err1 ; i verify : i have NO error : counter stay at 0       >>       >> xchg ax,bx ; handle of R1.DAT in BX       >> mov ah,3fH ; read file R1       >> mov cx,0FFFFh ; test a large buffer       >> mov dx,offset table+30000 ; i suppose file S2 is less than 30k       >> int 21H ; ; S2.DAT begin at offset TABLE       >> jb err2 ; same no error              mov dat_len, ax              mov si, offset table       mov di, offset table + 30000       xor cx, cx       xor dx, dx       top:       inc di       movsb       inc dx       add cx, 2       cmp dx, ntest       ja ??? ; if we run out of source first, start over?       cmp cx, dat_len       ja done ;?       jmp top       done:       seek back to beginning of "dest" file, handle still in bx       write buffer at "table + 30000", dat_len bytes              That's untested, and probably not correct syntax for A86, but something       along those lines...              Best,       Frank              --- SoupGate-Win32 v1.05        * Origin: you cannot sedate... all the things you hate (1:229/2)    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca