; datsrch.นบบ Dนบนนน Fนนน Dนบน Sนนบนน บบบ.910623 ; Cบบบบนนนบ (น) 1991 Nนนบ Sบบบนนบ Sบนบบนบน Cนนนนบบ, Aนนนบบน ; Aบบนนนนบ นบบ Lนนบนบบ Pบบนนนบบน ; ------------------------------------------------------------- ; บนบบ นนบบบนน /นบ นบบนนนนน ; บนนน /น บบนบบบ2 -+นนบบบนน นนน public _datsrch MAXLEN equ 0FA00h ; บนบนนบน นนนน น/บ นนบนบน funcnum equ word ptr [bp + 00Ah] ; นนบบบนบ บนบนนนบนบบ dat_len equ word ptr [bp + 00Ch] buf_seg equ word ptr [bp + 00Eh] buf_off equ word ptr [bp + 010h] key_off equ word ptr [bp + 012h] fil_off equ word ptr [bp + 014h] dat_seg equ word ptr [bp + 016h] ; นนบบบนบ() Dนบนนน บนนน Sนนบนน ; Dนบบบนบ บนนบนนนบ นนบนนน นบนนนบ นบบนบ นบบ บบนนนนนน บนบบ; ; บบบนบนนบน นบน นบบนบนนบน บนบบนบนบบนบนบบบ นบน บนนบนนนน. ; Iน นบบบน, บนน บนนบบน บบนนนบ นบ บนบบบบนน บบ นนนนนน. ; Dนบบบนบ นบ นบบ บบน บนบน Bบบนนบน'บ Tบบนบ C บนบบนบบ 2.0. ; Dนบบบนบ บบบนบ บนบน นนนนบ บนบน บบ บบ 65,534 บนนบบนบ; ; บนบบบบ 65,535 (0FFFFน) นบ บนบนบบนน นบบ นบบบบ. ; Vบนบบบบบน Uนบบ บน Tนนบน C ; ------------------------------------------------------------- ; UINT _DS นบ บบนบ นบบบบนน ; บบบน * บนบบน_บบบบ บบบบ นบบบ นนนบนบ นนน ; UINT บบบ_นบบ นบบนบน นบ บนบบน_บบบบ ; บบบน * นบบนบบ_บบน นบบนบบ บบน นนนบนบ นนน ; UINT บบน_นบบ นบบนบน นบ นบบนบบ_บบน ; นนบบ บบน * บนบบน_บนบบ บบบบ บนบบบน ; UINT บนบ_นบบ นบบนบน นบ บนบบน_บนบบ ; UINT บนบ_นบบ นบบบบนน นบ บนบบน_บนบบ ; UINT บบน_บบน นบบบ นบบนนบ บบนบนบ ; UINT บนนบนนบ บนนบนบนน นนบบบน 0-3: ; 0 = นนบน บบบบ ; 1 = นบบบ/นบบบ * ; 2 = บบนบ นบนน ; 3 = บบนนบ บบบบ ; UINT บนบบนน บบนบ นบบนน นบนนนนบบ: ; 0000 = บน0: นนบน นบ ; FFFF = บน0: นนบน บนนนน ; FFFF = บน2: บนบ ; * บน 1 นบบบ/นบบบ บน นบนบนนบบบ บนนนบบนบบบบบน ; บน บน 0 บนบ นบนบนบบบบบบน บน บน 2; ; บน บน นบนบน บบบบบบ บบนบบนบน. ; Sบบนบบ Cบบบ บนนบ Tนนบน C ; ------------------------------------------------------------- ; บบบน *บนบบน_บบบบ = "บ:\\นบบนบบ\\นบบนบบ.บบน"; ; UINT บบบ_นบบ = (UINT)บนบบน_บบบบ; ; นนบบ บบน *บนบบน_บนบบ = บบนบบบบนบ(0นFA10); ; UINT บนบ_นบบ = FP_SEG(บนบบน_บนบบ); ; UINT บนบ_นบบ = FP_OFF(บนบบน_บนบบ); ; UINT บบน_บบน = FILSIZ; ; UINT บนนบนนบ = 0น; ; UINT บนบบนน = 0น; ; UINT บบนนบบ = 0น; ; ... ; บนนบนนบ = 0น; /* นนบน บบบบ */ ; บนบบนน = บบนนนบบ(บนนบนนบ, บบน_บบน, บนบ_นบบ, บนบ_นบบ, บบน_นบบ, ; บบบ_นบบ, _DS); ; ... ; (บบบน *)นบบนบบ_บบน = "SAMPLE"; ; บบน_นบบ = (UINT)นบบนบบ_บบน; ; บนบบนน = 0น; ; บนนบนนบ = 2น; /* บบนบ นบนน */ ; บนบบนน = บบนนนบบ(บนนบนนบ, บบน_บบน, บนบ_นบบ, บนบ_นบบ, บบน_นบบ, ; บบบ_นบบ, _DS); ; ... ; บนนบนนบ = 3น; /* บบนนบ บบบบ */ ; บนบบนน = บบนนนบบ(บนนบนนบ, บบน_บบน, บนบ_นบบ, บนบ_นบบ, บบน_นบบ, ; บบบ_นบบ, _DS); ; Pบนบบบนบน Aบบนบนนบนบ Rบบบนบนบ นน นบบ Sนบบบ (BP) ; ------------------------------------------------------------- ; +16บ นบบนบ นบ TC บบนบ นบบบบนน ............................ _DS ; +14บ นบบนบ นบ บบบบนบบบ นบบนบน ............................ บบบ_นบบ ; +12บ นบบนบ นบ นบบนบบ บบน นบบนบน .......................... บบน_นบบ ; +10บ นบบนบ นบ บนบบบน นบบนบน .............................. บนบ_นบบ ; +0Eบ นบบนบ นบ บนบบบน นบบบบนน ............................. บนบ_นบบ ; +0Cบ นบบนบ นบ นบบบ นบบนนบ บบนบนบ ......................... บบน_บบน ; +0Aบ นบบนบ นบ บบนนนบบ บนนบนบนน (0-3) ..................... บนนบนนบ ; +08บ Tนนบน C นบนนนน บบบนบนน - ; +06บ บบนนนบบ นบนบบ บน - ; +04บ บบนนนบบ นบนบบ บน - ; +02บ บบนนนบบ นบนบบ นบ - ; BP+00บ บบนนนบบ นบนบบ บบ - _TEXT segment byte public 'CODE' assume cs:_TEXT _datsrch proc near push bp ; นบนบ TC นบบบนนบนน push ds push si push di mov bp, sp ; บบบบ บน นนบนน นน นบบ นนบบบ cld ; บบบบน นบบ บบนบบนบนน บบบบ > ; Dบนบนบบนบ นบนนบนนบบ บนนบนบนน ; บนบ บน นน บน mov ax, funcnum ; บนนบนบนน นนบบบน บนนน บน cmp al, 000h ; 0 นนบน บบบบ je Fn00 cmp al, 002h ; 2 นนบน บนบบ jne Jmp00 ; นบบบนบบน jmp Fn02 Jmp00: cmp al, 003h ; 3 นนบบน นนนน jnz Jmp01 ; นบบบนบบน jmp Fn03 Jmp01: jmp Err2 ; นบบนนนน นบบนบนบบ บบนนนบ ; Oบนบ บนน นนนน นบบ ; บนนน บบนบ นนนนบบ Fn00: mov dx, fil_off ; นนนนบนนน บนนบนบ นบบบ นบ mov ax, dat_seg ; นนนนบนนน บนนนนบบ นบบบ นบ mov ds, ax ; นบน นบบบ นบ ; นบ:นบ บบนบบบ บบ นบนนนบ นนนนบนนน mov al, 000h ; นนนน นนนนบบ นบ บนนน บบนบ mov ah, 03Dh ; บบนบ บนน นบนนบ นนบน นนนน int 021h ; บนน นบบ นบบ 21 นบ 3D jnc Jmp02 ; นบบบนบบน jmp Err2 ; นบนบ นน บบนบ นบบบบ Jmp02: mov word ptr cs:FHAN, ax ; บนบน นนนน นนบนนน ; Cบนบบบน บนน นนนน'บ ; นนบนนบน น/บ นนบนบน xor dx, dx ; นบ = บนบบ mov ax, MAXLEN ; นนบนนบน น/บ นนบนบน นบ 64000 นบบนบ mov bx, dat_len ; บนนน บนนบบน นนบนบน นบบบ นบ div bx ; นบ = บบบบนนบบ นบบน นนบนบบบ ; นบ = บนนนนบนนบ นบบน นนบนบนบบ xor dx, dx ; นบ = บนบบ mov word ptr cs:RCNT, dx ; นบนบ นนนน น/บ นบบบบ mul bx ; นบ = นนบนนบน น/บ นนบนบน mov word ptr cs:MXIO, ax ; บนบน นนบนนบน น/บ นนบนบน ; Pบบนบนบบ บนน นนนน บบนบบนบ ; บบ บนน บบนบบ บน บนน ; นบบบนบบ บนนบบน Fn01: mov ax, word ptr cs:[RCNT] ; นนนน น/บ นบบบบ นบบบ นบ mov cx, word ptr cs:[MXIO] ; นนบนนบน น/บ นนบนบน นบบบ นบ mul cx ; นบ = นบบ น/บ นบบบบ บ น/บ นนบนบน ; นบ = นบบ น/บ นบบบบ บ น/บ นนบนบน mov bx, word ptr cs:[FHAN] ; นนนน นนบนนน นบบบ นบ xchg cx, dx ; นบ = นบบ บน นนนน บบนบบนบ xchg dx, ax ; นบ = นบบ บน นนนน บบนบบนบ mov al, 000h ; นนบบนบบน บนนบนบ นบบน นบน mov ah, 042h ; บนนน นนนน บบนบบนบ int 021h ; บนน นบบ นบบ 21 นบ 42 jnc Jmp03 ; นบบบนบบน jmp Err1 ; นนบบน นบน นบนบ นน บนนน นบบบบ ; Rนนน น บนนบบน นบบน บนน นนนน ; นบบบ บนน นบนนนบ Jmp03: mov bx, word ptr cs:[FHAN] ; นนนน นนบนนน นบบบ นบ mov cx, word ptr cs:[MXIO] ; นนบนนบน น/บ นนบนบน นบบบ นบ mov dx, buf_off ; นบนนนบ บนนนนบบ นบบบ นบ mov ax, buf_seg ; นบนนนบ บนนบนบ นบบบ นบ mov ds, ax ; นบน นบบบ นบ ; นบ:นบ บบนบบบ บบ นบนนนบ mov ah, 03Fh ; บนนน บนน นนนน int 021h ; บนน นบบ นบบ 21 นบ 3F jnc Jmp04 ; นบบบนบบน jmp Err1 ; นนบบน นบน นบนบ นน บนนน นบบบบ Jmp04: cmp ax, 00000h ; บนบบ นบบ บนบบ นบบนบ บนนน jnz Jmp05 ; นบบบนบบน jmp Err1 ; นนบบน นบนบ นน บนบบ นบบนบ บนนน Jmp05: mov word ptr cs:BREM, ax ; บนบน บบนนนบ บน นบบนบ บนนนนบนบน mov ax, buf_off ; นบนนนบ บนนบนบ นบบบ นบ mov word ptr cs:BOFF, ax ; บนบน นบนนนบ บนนบนบ mov ax, funcnum ; นบบนบนบบ บบนนนบ นบบบ นบ cmp al, 000h ; นน บบบ นบบนบนบบ 0 บบนบ นนนน ja Fn02 ; บนนบ นบบบนบบน xor ax, ax ; บนบบ นบ นบบ บนบบบบ บบ TC jmp Exit ; นบนบ บบ นบนบ ; Sนนบนน นบนบนนนนบนบนบบ Fn02: mov di, word ptr cs:[BOFF] ; นบนนนบ บนนบนบ นบบบ นน mov ax, buf_seg ; นบนนนบ บนนนนบบ นบบบ นบ mov es, ax ; นบน นบบบ นบ ; นบ:นน บบนบบบ บบ นบนนนบ mov ax, dat_seg ; บนบบ บนนนนบบ นบบบ นบ mov ds, ax ; นบน นบบบ นบ ; นบ:บน บบนบบบ บบ บนบบ mov cx, word ptr cs:[BREM] ; บบนนนบ บน นบบนบ บนนนนบนบน นบบบ นบ ; Dบ บนน บนนบนน นบบ บบบนบนนบน ; นบน นบบนบนนบน นนบน นนบนน Fn02a: mov si, key_off ; บนบบ บนนบนบ นบบบ บน Fn02b: mov al, byte ptr ds:[si] ; บนบบ นบบน นบบบ นน cmp al, 000h ; นบนบนบน นน = บนบบ (นบน บน บนบบ) jz Fn02e ; นบน นบนบ นน บนบบ cmp al, byte ptr es:[di] ; นบนบนบน บบ นบนนนบ นบบน je Fn02c ; นบน นบบบนบบน นน นบบนน or al, ' ' ; นบบบนบบ บนบบ นบบน บบ นบบนบนนบน cmp al, byte ptr es:[di] ; นบนบนบน บบ นบนนนบ นบบน je Fn02c ; นบน นบบบนบบน นน นบบนน inc di ; บนบบ นบนนนบ นบบน dec cx ; นนนบนนบน นบบนบ บนนนนบนบน jz Fn02d ; นบน นบนบ นน บนบบ jmp short Fn02a ; นบบบนบบน Fn02c: inc si ; บนบบ บนบบ นบบน inc di ; บนบบ นบนนนบ นบบน dec cx ; นนนบนนบน นบบนบ บนนนนบนบน jnz Fn02b ; นบน นบบบนบบน นน บบบ บนบบ ; Tนบบ นบ บบบ นบบบน นบ บนนบนน; ; บบบ บนบบ บนนบบน Fn02d: mov ax, word ptr cs:[RCNT] ; นนนน น/บ นบบบบ นบบบ นบ inc ax ; บนบบ บบน mov word ptr cs:RCNT, ax ; บนบน นนนน น/บ นบบบบ jmp Fn01 ; นบนบ บบ Fบ01 (บนบบ บนนบบน) ; Tนบบ นบ นบบบน นบ บนนบนน; ; บนบบบบ บนน บนนบบ Fn02e: mov ax, di ; นบนนนบ บนนบนบ นบบบ นบ sub ax, buf_off ; นบนนนบ บนนบนบ นบบบนนบนบบ mov bx, dat_len ; บนนน บนนบบน นนบนบน นบบบ นบ xor dx, dx ; นบ = บนบบ (นบบ นนบ) div bx ; นบนบบบน น บนบ นบนนนบ บนนบนบ inc ax ; บบ บบนบบ นบ บนน นบน mul bx ; บน บนน นบบบนบบ บนนบบน dec ax ; นบบ บนน บนบบ บนนบนน add ax, buf_off ; นบนนนบ บนนบนบ นบบบนนบนบบ mov word ptr cs:BOFF, ax ; บนบน บนน บนบ นบนนนบ บนนบนบ sub ax, di ; นบน นนนบบบ บนน บบนนนบ บน sub cx, ax ; นบบนบ บนนนนบนบน mov word ptr cs:BREM, cx ; บนบน บบนนนบ บน นบบนบ บนนนนบนบน mov ax, word ptr cs:[RCNT] ; นบ = นนนน น/บ นบบบบ mov bx, word ptr cs:[MXIO] ; นบ = นนนน นนบนนบน น/บ นนบนบน mul bx ; นบ = นบบ นนบนนน นนนน บนนบนบ ; นบ = นบบ นนบนนน นนนน บนนบนบ add ax, di ; นบ = นบนนนบ บนนบนบ jnc Jmp06 ; นบนบ นน บบ นนบบบ (นบ บบนบนนบบ) inc dx ; นนน นนบบบ นบบบ นบ Jmp06: sub ax, buf_off ; นบนนนบ บนนบนบ นบบบนนบนบบ mov bx, dat_len ; บนนน บนนบบน นนบนบน นบบบ นบ div bx ; นบ = บบบบนนบบ นบบน นนบนบบบ inc ax ; นบ = บนนบบ นบบ บนบบบบ บบ TC jmp short Exit ; นบนบ บบ Eบนบ ; Cนบบน บนน นนนน นบน ; บนบบบบ บบ TC Fn03: mov bx, word ptr cs:[FHAN] ; นนนน นนบนนน นบบบ นบ mov ah, 03Eh ; นนบบน บนน นนนน int 021h ; บนน นบบ นบบ 21 นบ 3E xor ax, ax ; บนบบ นบ นบบ บนบบบบ บบ TC jmp short Exit ; นบนบ บบ นบนบ ; Sนนน/บนนน นบบบบ บบ ; บนบบ นบบนบ บนนน (นบน); ; นนบบน บนน นนนน Err1: mov bx, word ptr cs:[FHAN] ; นนนน นนบนนน นบบบ นบ mov ah, 03Eh ; นนบบน บนน นนนน int 021h ; บนน นบบ นบบ 21 นบ 3E ; Oบนบ นบบบบ; บนบบบบ นบบบบ ; นบนน 0บFFFF บบ TC Err2: mov ax, 0FFFFh ; FFFF = นบ0: บบนบ นบบบบ ; นบ2: นบน บนนนนนน ; Rนบบบบ บบ TC Exit: pop di ; บนบบบบน TC บนนนบบนบบ pop si pop ds pop bp ret ; บนนบ บนบบบบ บบ TC _datsrch endp ; Iบบนบบนน บบบบนนน FHAN dw 00000h ; นนนน นนบนนน BOFF dw 00000h ; นบนนนบ บนนบนบ BREM dw 00000h ; บบนนนบ บน นบบนบ บนนนนบนบน RCNT dw 00000h ; นนนน น/บ นบบบบ MXIO dw 00000h ; นนนน นนบนนบน น/บ นนบนบน _TEXT ends end  
 
 
 
 
w a r n e l l . c o m /
/ iAPX86 d a t s r c h . น บ บ  © 1991-2004  t . w a r n e l l
 
               
_TEXT segment byte public 'CODE' _TEXT segment byte public 'CODE' _TEXT segment byte public 'CODE' _TEXT segment byte public 'CODE'