petit problem avec MOV et un pointeur

Pour discuter de l'assembleur
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

petit problem avec MOV et un pointeur

Message par cha0s »

wala mon code

Code : Tout sélectionner

*Get = AllocateMemory(1)
! MOV   byte [p_Get], 10
Debug *Get
Debug PeekB(*Get)
J'ai cherché partout mais je n'arrive pas a affecter 10 a ladresse *Get.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Code : Tout sélectionner

*Get = AllocateMemory(1)
!MOV eax, dword [p_Get] ;récupère l'adresse du pointeur
!MOV byte [eax], 10     ;pointe
Debug *Get
Debug PeekB(*Get)
Dri ;)
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

salut,

avec :

Code : Tout sélectionner

debug peekb(@*Get)
ca marche mieux ;)
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

non non non parce qu'en faisant ca on modifie l'adresse pointée et on se retrouve soit avec une erreur de segmentation (invalid memory access) soit avec une valeur fausse (pointe pas au bon endroit mais autorisé)

Code : Tout sélectionner

*Get.Byte = AllocateMemory(1)
*Get\b = 10            ;met 10 à l'adresse pointée
!MOV byte [p_Get], 255 ;change l'adresse au lieu de mettre 255
Debug *Get\b           ;afficherai 255 si le code était bon
Dri
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

ah ??? et ca :

Code : Tout sélectionner

*Get.b = AllocateMemory(SizeOf(BYTE))
*Get = 10               ;met 10 à l'adresse pointée
!MOV byte [p_Get], 255  ;change l'adresse au lieu de mettre 255
Debug *Get              ;affiche 255 si le code était bon
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

là tu ne pointe pas tu affiches l'adresse, je te rappelle que *Get est censé contenir une adresse, à quoi sert l'allocatememory sinon ?

Code : Tout sélectionner

*Get.b = AllocateMemory(SizeOf(BYTE))
Debug *Get              ;affiche l'adresse pointée
!MOV byte [p_Get], 255  ;l'opération incomplète ici
Debug *Get              ;affiche l'adresse pointée
Dri
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

Dr. Dri a écrit :

Code : Tout sélectionner

*Get = AllocateMemory(1)
!MOV eax, dword [p_Get] ;récupère l'adresse du pointeur
!MOV byte [eax], 10     ;pointe
Debug *Get
Debug PeekB(*Get)
Dri ;)
merci :)
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

ok, t'as raison :)
Répondre