Intégration code asm avec Dev C++

Signaler
Messages postés
1
Date d'inscription
mardi 22 mars 2005
Statut
Membre
Dernière intervention
22 mars 2005
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Salut à tous

J'utilise comme compilateur C++, DevC++ 4.9.8.0. Le problème c'est que je n'arrive pas intégrer du code asm dans mes sources. Il me produit toujours des erreurs.
Par exemple le code suivant:

#include
#include <stdlib.h>


using namespace std;


int main(int argc, char *argv[])
{
int x = 50;


asm {
MOV AX,x
SHL AX,1
}

cout<<"x = "<<x<<"\n\n";
system("PAUSE");
return 0;
}

retourne les erreurs suivantes:

main.cpp: In function `int main(int, char**)':
main.cpp:10: parse error before `{' token
main.cpp: At global scope:
main.cpp:15: syntax error before `<<' token
main.cpp:16: ISO C++ forbids declaration of `system' with no type
main.cpp:16: `int system' redeclared as different kind of symbol
C:/Dev-Cpp/include/stdlib.h:373: previous declaration of `int system(const
char*)'
main.cpp:16: invalid conversion from `const char*' to `int'
main.cpp:17: parse error before `return'

Ce serait très gentil si quelqu'un pouvait m'aider. Merci beaucoup.

7 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Je crois que DevC++ n'utilise pas la syntaxe standard Intel mais AT&T, le souk en somme.

ciao...
BruNews, MVP VC++
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
effectivement, le compilateur de Dev-C++ étant gcc il n'utilise pas la syntaxe INTEL pour l'assembleur, mais la syntaxe AT&T... la plupart des instruction reste les memes, mais la grande différence et que avec la syntaxe INTEL on fait (par exemple):
mov destination, source
alors que en AT&T on fait
mov source, destination
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Par contre le programme de départ ne devrait pas donner le résultat attendu car x n'est pas modifié
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
au lien que tu as donné, je note déjà une erreur au début:
AT&T: movl $0xd00d, %ebx
Intel: mov ebx, d00dh
ERREUR, syntaxe Intel est: mov ebx, 0d00dh
Pas le temps d'aller plus loin.

ciao...
BruNews, MVP VC++
Messages postés
1
Date d'inscription
jeudi 18 novembre 2004
Statut
Membre
Dernière intervention
2 avril 2005

salut a tous,

j'ai le meme problème mis a part que j'utilise visual c++ et que je programme en C
je fais:

#include <stdio.h>
#include <dos.h>

int main (void)
{
asm
mov ax,13h
int 10h
}
}

par exemple, mais j'ai toujorus des erreurs, comment ca se fait? en sachant que quand je fais le meme mais en pascal sous turbo pascal 7.0 la il n'y a po de problèmes
ex:
program assembleur;

begin
asm
mov ax,13h
int 10h
end;
end.
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
__asm {
code asm ici, pure syntaxe Intel
}

ciao...
BruNews, MVP VC++