Réponse acceptée !
Bonjour Morganitos,
Effectivement la syntaxe de Nasm est légèrement différente de celle de Masm.
Masm considère les contenus comme des valeurs de variables. L'instruction
mov eax,dword ptr[ebx] signifie:
lire le contenu du registre ebx
considérer cette valeur comme un pointeur et donc constitue une adresse
lire le dword à l'adresse en question et le mettre dans eax.
Avec Nasm tu n'as qu'à écrire
mov eax,[ebx]
En règle générale avec Nasm tu doit oublier les ptr, les offsets et autres truc.
Pour Nasm, adresse est une adresse, le contenu situé à cette adresse est [adresse].
Il ne faut pas oublier les crochets.
Lecture d'une adresse d'une variable
mov eax,offset variable (MASM)
mov eax,variable (NASM)
Lecture du contenu d'une variable
mov eax,variable (MASM)
mov eax,[variable] (NASM)
Les 4 octets situés à partir de l'adresse variable sont accessibles individuellement de la façon suivante:
mov al,[variable] octet de poids faible
mov al,[variable+1]
mov al,[variable+2]
mov al,[variable+3] octet de poids fort
En résumé tu pourra transcrire
mov eax, dword ptr [ebx] par mov eax,[ebx]
et
cmp word ptr [ebx], 0h par cmp word [ebx],0 ou cmp [ebx],word 0
|