Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : (Debutant en ASM) (MASM) pointeur sur une structure [ Archives / Newbii ] (Otaku)

lundi 5 mai 2003 à 21:56:07 | (Debutant en ASM) (MASM) pointeur sur une structure

Otaku

Salut,

voila mon pb, j'aimerai créer une fonction en asm qui reçoit un pointeur sur un élément de type structure, jusque-là pas de pb

mais comment modifier les éléments de la structure pointée ?

ex en C(++) on fait ça



typedef struct {
unsigned long membre1;
unsigned short membre2;
} MyStruct;

void MaFonction(MyStruct* pStruct)
{
pStruct->membre1 = 0xFDE8;
pStruct->membre2 = 0xFF;
}


La question est simple (mais je n'ai pas encore trouvé la réponse) comment faire ça en ASM ?
Surtout le code pStruct->membre1 = 0xFDE8;

decrarer la structure ca je sait le faire

MYSTRUCT STRUCT
membre1 DWORD ?
membre2 WORD ?
MYSTRUCT ENDS


un pointeur (une adresse en memoire) c'est un entier codée sur 32bits donc je suppose que le parametre a passer a la fonction asm est un DWORD ?

MaFonction PROC pstruct:DWORD ;
; ???
ret
MaFonction ENDP

mais pour le reste je sait pas
un petit exemple pour m'aider à assimiler la technique se serait sympa ;)

mardi 6 mai 2003 à 11:20:09 | Re : (Debutant en ASM) (MASM) pointeur sur une structure

TangiX


pStruct->membre1 = 0xFDE8;
pStruct->membre2 = 0xFF;

mov dword ptr[pstruct], 0FDE8h
mov word ptr [pstruct + 4], 0FFh


c doit marché ca
ya peut etre mieux j'connais pas bien les strutures en asm

ps:y manque le plus entre pstruct et 4 (s'affiche pa ds l'apercu)

TangiX

mardi 6 mai 2003 à 18:04:24 | Re : (Debutant en ASM) (MASM) pointeur sur une structure

Otaku

Marche po

Y'a pas d'erreur à la compilation, mais dans la fonction appelante là contenue de la structure n'est pas modifiée

mardi 6 mai 2003 à 18:05:53 | Re : (Debutant en ASM) (MASM) pointeur sur une structure

Otaku

Marche po

Y'a pas d'erreur à la compilation, mais dans la fonction appelante là contenue de la structure n'est pas modifiée


mardi 6 mai 2003 à 19:18:03 | Re : (Debutant en ASM) (MASM) pointeur sur une structure

Dean

Bonjour,

Je ne sais pas si ça marche, mais bon :

.data?
pStruct MYSTRUCT <?>

.code
mov pStruct.membre1, FDE8h

Bon, il reste à intégrer ceci dans une fonction mais je pense que ça devrait ressembler à ça...

Dean - [ Lien ]


-------------------------------
Réponse au message :
-------------------------------

> Marche po
>
> Y'a pas d'erreur à la compilation, mais dans la fonction appelante là contenue de la structure n'est pas modifiée
>
>

mardi 6 mai 2003 à 19:43:44 | Re : (Debutant en ASM) (MASM) pointeur sur une structure

Otaku





-------------------------------
Réponse au message :
-------------------------------

> Bonjour,
>
> Je ne sais pas si ça marche, mais bon :
>
> .data?
> pStruct MYSTRUCT <?>
>
> .code
> mov pStruct.membre1, FDE8h
>
> Bon, il reste à intégrer ceci dans une fonction mais je pense que ça devrait ressembler à ça...
>
> Dean - [ Lien ]
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Marche po
> >
> > Y'a pas d'erreur à la compilation, mais dans la fonction appelante là contenue de la structure n'est pas modifiée
> >
> >
>

pas ça non plus

la fonction que je veux créer reçoit comme paramètre un pointeur sur une structure et doit un modifier les membres directement à l'adresse pointée

mardi 6 mai 2003 à 20:10:11 | Re : (Debutant en ASM) (MASM) pointeur sur une structure

CoreBreaker

Tu dois d'abord mettre dans un registre de pointage la valeur de l'adresse afin de la déférencer:

MaFonction PROC pstruct:DWORD
les di, pstruct
mov ax, word ptr es:[di].membre2
ret
MaFonction ENDP

Core Breaker


-------------------------------
Réponse au message :
-------------------------------

> Salut,
>
> voila mon pb, j'aimerai créer une fonction en asm qui reçoit un pointeur sur un élément de type structure, jusque-là pas de pb
>
> mais comment modifier les éléments de la structure pointée ?
>
> ex en C(++) on fait ça
>
>
>

> typedef struct {
> unsigned long membre1;
> unsigned short membre2;
> } MyStruct;
>
> void MaFonction(MyStruct* pStruct)
> {
> pStruct->membre1 = 0xFDE8;
> pStruct->membre2 = 0xFF;
> }
>

>
> La question est simple (mais je n'ai pas encore trouvé la réponse) comment faire ça en ASM ?
> Surtout le code pStruct->membre1 = 0xFDE8;
>
> decrarer la structure ca je sait le faire
>

> MYSTRUCT STRUCT
> membre1 DWORD ?
> membre2 WORD ?
> MYSTRUCT ENDS
>

>
> un pointeur (une adresse en memoire) c'est un entier codée sur 32bits donc je suppose que le parametre a passer a la fonction asm est un DWORD ?
>

> MaFonction PROC pstruct:DWORD ;
> ; ???
> ret
> MaFonction ENDP
>

> mais pour le reste je sait pas
> un petit exemple pour m'aider à assimiler la technique se serait sympa ;)

mardi 6 mai 2003 à 20:14:09 | Re : (Debutant en ASM) (MASM) pointeur sur une structure

CoreBreaker

Pardon, je me suis tompé, pour la modifier, mais quand même tu dois d'abord mettre dans un registre de pointage la valeur de l'adresse afin de la déférencer:

MaFonction PROC pstruct:DWORD
les di, pstruct
mov ax, valeur
mov word ptr es:[di].membre2, ax
ret
MaFonction ENDP

Core Breaker


-------------------------------
Réponse au message :
-------------------------------

> Salut,
>
> voila mon pb, j'aimerai créer une fonction en asm qui reçoit un pointeur sur un élément de type structure, jusque-là pas de pb
>
> mais comment modifier les éléments de la structure pointée ?
>
> ex en C(++) on fait ça
>
>
>

> typedef struct {
> unsigned long membre1;
> unsigned short membre2;
> } MyStruct;
>
> void MaFonction(MyStruct* pStruct)
> {
> pStruct->membre1 = 0xFDE8;
> pStruct->membre2 = 0xFF;
> }
>

>
> La question est simple (mais je n'ai pas encore trouvé la réponse) comment faire ça en ASM ?
> Surtout le code pStruct->membre1 = 0xFDE8;
>
> decrarer la structure ca je sait le faire
>

> MYSTRUCT STRUCT
> membre1 DWORD ?
> membre2 WORD ?
> MYSTRUCT ENDS
>

>
> un pointeur (une adresse en memoire) c'est un entier codée sur 32bits donc je suppose que le parametre a passer a la fonction asm est un DWORD ?
>

> MaFonction PROC pstruct:DWORD ;
> ; ???
> ret
> MaFonction ENDP
>

> mais pour le reste je sait pas
> un petit exemple pour m'aider à assimiler la technique se serait sympa ;)

mardi 6 mai 2003 à 20:17:35 | Re : (Debutant en ASM) (MASM) pointeur sur une structure

CoreBreaker

J'oubliai tu peux faire ça aussi:

MaFonction PROC pstruct:DWORD
les di, pstruct
mov ax, valeur
mov word ptr es:[di.membre2], ax ;chager la place de .membre2
ret
MaFonction ENDP

Core Breaker


-------------------------------
Réponse au message :
-------------------------------

> Salut,
>
> voila mon pb, j'aimerai créer une fonction en asm qui reçoit un pointeur sur un élément de type structure, jusque-là pas de pb
>
> mais comment modifier les éléments de la structure pointée ?
>
> ex en C(++) on fait ça
>
>
>

> typedef struct {
> unsigned long membre1;
> unsigned short membre2;
> } MyStruct;
>
> void MaFonction(MyStruct* pStruct)
> {
> pStruct->membre1 = 0xFDE8;
> pStruct->membre2 = 0xFF;
> }
>

>
> La question est simple (mais je n'ai pas encore trouvé la réponse) comment faire ça en ASM ?
> Surtout le code pStruct->membre1 = 0xFDE8;
>
> decrarer la structure ca je sait le faire
>

> MYSTRUCT STRUCT
> membre1 DWORD ?
> membre2 WORD ?
> MYSTRUCT ENDS
>

>
> un pointeur (une adresse en memoire) c'est un entier codée sur 32bits donc je suppose que le parametre a passer a la fonction asm est un DWORD ?
>

> MaFonction PROC pstruct:DWORD ;
> ; ???
> ret
> MaFonction ENDP
>

> mais pour le reste je sait pas
> un petit exemple pour m'aider à assimiler la technique se serait sympa ;)

mardi 6 mai 2003 à 20:53:20 | Re : (Debutant en ASM) (MASM) pointeur sur une structure

Otaku





-------------------------------
Réponse au message :
-------------------------------

> Tu dois d'abord mettre dans un registre de pointage la valeur de l'adresse afin de la déférencer:
>

> MaFonction PROC pstruct:DWORD
> les di, pstruct
> mov ax, word ptr es:[di].membre2
> ret
> MaFonction ENDP
>

> Core Breaker
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Salut,
> >
> > voila mon pb, j'aimerai créer une fonction en asm qui reçoit un pointeur sur un élément de type structure, jusque-là pas de pb
> >
> > mais comment modifier les éléments de la structure pointée ?
> >
> > ex en C(++) on fait ça
> >
> >
> >

> > typedef struct {
> > unsigned long membre1;
> > unsigned short membre2;
> > } MyStruct;
> >
> > void MaFonction(MyStruct* pStruct)
> > {
> > pStruct->membre1 = 0xFDE8;
> > pStruct->membre2 = 0xFF;
> > }
> >

> >
> > La question est simple (mais je n'ai pas encore trouvé la réponse) comment faire ça en ASM ?
> > Surtout le code pStruct->membre1 = 0xFDE8;
> >
> > decrarer la structure ca je sait le faire
> >

> > MYSTRUCT STRUCT
> > membre1 DWORD ?
> > membre2 WORD ?
> > MYSTRUCT ENDS
> >

> >
> > un pointeur (une adresse en memoire) c'est un entier codée sur 32bits donc je suppose que le parametre a passer a la fonction asm est un DWORD ?
> >

> > MaFonction PROC pstruct:DWORD ;
> > ; ???
> > ret
> > MaFonction ENDP
> >

> > mais pour le reste je sait pas
> > un petit exemple pour m'aider à assimiler la technique se serait sympa ;)
>

Le compilateur me retourne une erreur "undefined symbol : immin" (immin est un membre de la structure)

ps: je ne sais pas si c'est important, mais la fonction appelante (celle qui transmet le pointeur a MaFonction ASM) et une fonction écrite en C


1 2 3

Cette discussion est classé dans : code, asm, structure, pointeur, pstruct


Répondre à ce message

Sujets en rapport avec ce message

algo pour jeu de shoot en asm [ par cable ] Bonjourje suis un jeune débutant en programmation en assembleur et je cherche l'algo (voir le code source) d'un jeu de shoot 'em up en scroling horizo ASM old-style / ASM ancienne méthode [ par TehWan ] Salut, j'aimerais bien coder en assembly de l'ancienne façon, c'est-à-dire sans aucune procédures, simplement des "labels". (excusez mes anglicismes, Variables sour ASM pour 8086 [ par koopje ] Bonjour à tous,Etudiant, je suis en train de m'exercer avec Emu8086, un émulateur (et assembleur, au passage) d'assembleur sour 8086. J'ai tenté de f débutant en asm [ par eax ] salutje débute en asm (avec nasm) et j'arrive pas à assembler mon premier code lolsection .datamsg db 'Hello world$'section .codedebut: lea dx,msg mov nasm - mémoire read-only [ par Funto66 ] Bonjour,je suis en train d'écrire des tutoriaux pour le site Coder-Studio (http://www.coder-studio.com/?page=tutoriaux) mais pour la création du tutor appeller du C en asm [ par S2R ] Bonjour, je voudrait savoir comment utiliser un code écrit en C dans un code assembleur. portabilité du code [ par sajid_morad ] salut tout le monde, je programme avec le visaul c++ , et j ai inserer un code asm dans mon programme, sashant que j ai un micro pricesseur pentium, v Utiliser une fonction ASM compilée (sous MASM) sous Dev-C++ ? [ par skirby ] Bonjour, j'essaye désespérément d'intégrer une fonction assembleur (compilée sous MASM) dans Dev-C++ (v4.9.9.2) Voici mon code C : /********* W32Dasm et code ASM [ par bundyboss ] Salut a vous tous!!Presque tout est dans le titre..En fait j'aimerai savoir si le code ASM que ressort W32Dasm ou autre programme du genre et directem Code HUFFMAN en asm 68000 [ par arnaud gasnier ] salut,je voulais savoir si qqun pouvait m'aider pour trouver comment coder en ASM 68000 l'algo de huffman pour compresser un petit texte. le tout débu


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,264 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.