begin process at 2010 03 18 13:28:52
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Newbii

 > 

(Debutant en ASM) (MASM) pointeur sur une structure


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

(Debutant en ASM) (MASM) pointeur sur une structure

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ée 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


Appels d'offres

Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 8,346 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales