1. ja, lodsb verändert das, aber wenn du neu initialisierst, dann gehts nicht, weil es dann wieder aufs erste zeigt, nimm also noch di als 2. pointer
2. außerdem brauchst du eine loop, bis eins der beiden 0 is...
3. so sollte es gehen:
mov si,string1
mov di,string2
call compare
cmp ah,0x00
je richtig
cmp ah,0x01
je falsch
compare:
push ax
mov ax,0x1234
vergleichen:
cmp al,0x00
je gleich
lodsb
mov ah,al
xchg si,di
lodsb
cmp al,ah
je vergleichen
ungleich:
pop ax
mov ah,0x01
ret
gleich:
pop ax
mov ah,0x00
ret
müsste gehen, habs aber nicht getestet. damit hast du eine funktion, und musst nicht überall, wo du den code brauchst den code einfügen, sondern nur die parameter (di,si) ändern und dann callen. als ergebniss kommt ah raus, bei gleichheit = 0, bei ungleich = 1.
mfg
J!N