[NEWBIE] comment passer une structure en paramétre :( !?

xaminou Messages postés 10 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 22 août 2007 - 26 déc. 2004 à 23:51
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 - 15 janv. 2005 à 00:09
voilà mon probléme j'aimerai passé en parametre pr une fonction une structure du genre :
endroit struct
x dw ?
y dw ?
endroit ends 
; je declare une structure :
endroit1 endroit ?
; j'initialise les deux coordonnées :
mov endroit1.x,100d
mov endroit1.y,150d
; et la j'aimerai le passé en parametre :
push endroit1
call lire_coordonnee ; par exemple

lire_coordonne proc
??????
ret
lire_coordonne endp


la question est comment accedé à "endroit1.x" ou "endroit1.y" dans la fonction lire_coordonne , voila et merci d'avance pour les responses :) (bonne année en passant :P)

4 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
27 déc. 2004 à 00:15
ben d'ordinaire quand c'est une structure on passe le pointeur sur son adresse:
push offset maStruct
tout depend comment tu codes la fonction qui doit recevoir.

ciao...
BruNews, MVP VC++
0
xaminou Messages postés 10 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 22 août 2007
27 déc. 2004 à 11:41
Est ce que tu pourra me donner des exemples qui correspandent à mon probléme ? merci :)
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
27 déc. 2004 à 12:00
en ASM 32 bits:

la struct comprenant 2 membres de 32 bits, si on te la passe sur pile:

lire_coordonne proc
mov eax, [esp+4] ; RECUP ADDR STRUCT, LE PARAM

mov edx, [eax] ; VALEUR DE x DANS edx
mov ecx, [eax+4] ; VALEUR DE y DANS ecx

ret 4 ; DEPILAGE ICI
lire_coordonne endp

ciao...
BruNews, MVP VC++
0
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
15 janv. 2005 à 00:09
CODE 16 bits

endroit struc ; attention pour tasm/masm
; c'est struc et pas struct
x dw ?
y dw ?
entroit ends

endroit1 endroit <0, 0>

mov word ptr [endroit1.x], 100d
mov word ptr [endroit1.y], 150d

push 100d
push offset endroit1
call scale
add sp, 8

scale:
push bp
mov bp, sp
push bx cx

mov bx, word ptr [bp+4]
mov cx, word ptr [bp+6]

mov ax, cx
imul ax, word ptr [bx.x]
mov word ptr [bx.x], ax

imul cx, word ptr [bx.y]
mov word ptr [bx.y], cx

pop cx bx
leave
ret

Core Breaker
0
Rejoignez-nous