Page 1 sur 1

MOV [REGISTRE] , POINTEUR

Publié : ven. 25/juin/2010 21:47
par G-Rom
Toujours moi a la découverte de l'ASM.
c'est plus clair dans ma tête , mais j'ai quelques difficulté de syntaxe.

J'ai un pointeur pb nommé *M
je veut le passer dans le registre EAX

MOV EAX , [adresse mémoire]

je remplis comment le champ adresse mémoire ? sachant qu'elle est contenu dans *M ?
Dois je passer par un registre intermédiaire ?

Re: MOV [REGISTRE] , POINTEUR

Publié : ven. 25/juin/2010 22:28
par Backup
ya pas une histoire de 'P.variable' pour les pointeurs ?

Code : Tout sélectionner

p.v_toto


ou

Code : Tout sélectionner

P_toto
?

Re: MOV [REGISTRE] , POINTEUR

Publié : ven. 25/juin/2010 22:57
par G-Rom
Le problème dans cette exemple , c'est que le contenu de la variable n'est pas modifiée.
il incrémente le pointeur , pas le contenu...

Code : Tout sélectionner

*M = AllocateMemory(4)
PokeI(*M,255)

Debug "ADRESSE AVANT INC EAX : " + Str(*M)

!MOV EAX,[p_M]
!INC EAX
!MOV [p_M],EAX

Debug "ADRESSE APRES INC EAX : " + Str(*M)

Re: MOV [REGISTRE] , POINTEUR

Publié : ven. 25/juin/2010 23:24
par djes
Pour modifier le contenu pointé (active l'asm)

Code : Tout sélectionner

CallDebugger
*M.integer = AllocateMemory(4)
*M\i = 255

Debug "ADRESSE AVANT INC EAX : " + Str(*M\i)

MOV EAX,[p_M]
INC DWORD [EAX]
MOV EBX,DWORD [EAX]

Debug "ADRESSE APRES INC EAX : " + Str(*M\i)

Re: MOV [REGISTRE] , POINTEUR

Publié : ven. 25/juin/2010 23:41
par G-Rom
Merci Djes
elle sert à rien cette ligne? :

Code : Tout sélectionner

MOV EBX,DWORD [EAX]

Re: MOV [REGISTRE] , POINTEUR

Publié : sam. 26/juin/2010 0:25
par djes
Non, lol, j'ai oublié de l'enlever :)