Page 1 of 1

Compare a STRING

Posted: Sun Apr 04, 2004 11:00 pm
by Berry
hello

I wanna use cmpsb to compare a string in memory whith one I defined. But I don't know how to define a string :S Tried this

first_kernel_file_letter db 'k'

but it wont compile...

RE:Compare a STRING

Posted: Sun Apr 04, 2004 11:00 pm
by common
string db 'blah', 0

should work, what assembler are you using?

RE:Compare a STRING

Posted: Sun Apr 04, 2004 11:00 pm
by Berry
srry, I was doing something else wrong. I used cmpsb like this

mov al, [es:bx]
cmpsb al, [string]

the docs sait it work, but it seems that I have to do it like this

mov al, [es:bx]
mov si, ax
mov di, string
cmpsb

now, it can't find the thing. I'm reading out the root directory, using LBACHS to calculate the location of the root dir. But it can't find the file... Is my method of seaching wrong, or something else? The file I search (which I've pasted on the diskette) I've defined like this

file db 'file     bin'

is that wrong? The file name is 8 chars long, than a space and then a three chars long extension...

RE:Compare a STRING

Posted: Tue Apr 06, 2004 11:00 pm
by Adek336
try
file db 'FILE    BIN' because the name is uppercase.

RE:Compare a STRING

Posted: Tue Apr 06, 2004 11:00 pm
by ASHLEY4
;Try this:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Looks for a file with particular name ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Input:  DS:SI -> file name (11 chars) ;;
;;        ES:DI -> root directory array ;;
;;        DX = number of root entries  ;;
;; Output: SI = cluster number          ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

FindName:
        mov    cx, 11
FindNameCycle:
        cmp    byte [es:di], ch
        je      FindNameFailed          ; end of root directory
        pusha
        repe    cmpsb
        popa
        je      FindNameFound
        add    di, 32
        dec    dx
        jnz    FindNameCycle          ; next root entry
FindNameFailed:
        jmp    ErrFind
FindNameFound:
        mov    si, [es:di+1Ah]        ; si = cluster no.

RE:Compare a STRING

Posted: Tue Apr 06, 2004 11:00 pm
by JAAman
there should NOT be a space between the fileName and ext -- it should be a total of:

8 char (fileName)+ 3 char(ext)=11 characters TOTAL not 12!

also the filename should be ALLCAPS (since FAT12 dir entries are always in capital letters to make searching easier)