[ lancha131 @ 30.03.2011. 22:53 ] @
Poz ekipa...Da li mi neko moze reci kako da uporedim dva karaktera u stringu u x86 arhitekturi na asembleru.....
Dva pristupa memoriji nisu dozvoljena pa ne mogu da koristim indeksno adresiranje...
Da li ikako moze da se karakter preseli u registar?
[ q3dalibor @ 14.04.2011. 13:14 ] @
nisam bash pro shto se tiche assembly-a ali mislim da mozesh da ubacish string u registre
probaj ovako

mov ax,[string1]
mov bx,[string2]
cmp ax,bx

kockaste zagrade na string1 i 2 oznachavaju da se u registar prenosi vrednost stringa a ne adresa u memoriji

ne znam sa kakvim string vrednostima radish, ali ax i bx mogu da prihvate 16bit-ne vrednosti u hexadecimalnom zapisu.
cmp (compare) ce da uradi uporedjivanje dve heksadecimalne vrednosti, mislim da oduzima drugu od prve. cmp ax,bx = ax-bx
ne menja same vrednosti registara, ali ostavlja vrednosti u FLAGS na osnovu usporedbe.
eax i ebx su ti extended registri za 32bit-ne vrednosti
nakon cmp, mozesh da koristish jump komande da bi proverio vrednosti registara

jz label nakon cmp ax,bx bi u sluchaju da su vrednosti iste skochilo do procedure label
jz proverava da li je ZF(zero flag) u FLAGS, 1 ili 0... ako su vrednosti iste, ZF je 1 i skok se odradjuje, ako su razlichite ZF je 0 i skok se ignorishe

ako greshim ispravite me

[Ovu poruku je menjao q3dalibor dana 14.04.2011. u 22:02 GMT+1]