Probleme code asm dans .c
Salut, j'aimerais intégrer des bouts de code assembleur dans mon .c mais j'ai des soucis au niveau des variables...
j'ai fais un .c test qui ne contient que de l'assembleur (pour le moment donc) et qui affiche un message à l'écran
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
_asm
{
msg db "salut",'$'
mov ah,09h
mov dx,offset msg
int 21h
}
return 0;
} |
Je compile sous visualC++ et il me sort 2 erreurs :
Citation:
main.c(6)error C2400: erreur de syntaxe d'assembleur inline dans 'opcode' ; trouvé 'db'
main.c(8)error C2443: conflit de taille d'opérande
je pense que cela vient de
car si je fais simplement
Code:
1 2 3 4 5 6 7 8 9
| <...>
_asm
{
push ax
pop bx
}
<...>
return 0;
} |
ça compile très bien :?
Voila, j'espere que vous allez pouvoir m'aider
Merci pour vos réponses
Re: Probleme code asm dans .c
Citation:
Envoyé par sorry60
Salut, j'aimerais intégrer des bouts de code assembleur dans mon .c
Euh, t'es sûr ? Parce que c'est quand même la dernière des choses à faire...
Citation:
mais j'ai des soucis au niveau des variables...
j'ai fais un .c test qui ne contient que de l'assembleur (pour le moment donc) et qui affiche un message à l'écran
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
_asm
{
msg db "salut",'$'
mov ah,09h
mov dx,offset msg
int 21h
}
return 0;
} |
Je compile sous visualC++ et il me sort 2 erreurs :
Citation:
main.c(6)error C2400: erreur de syntaxe d'assembleur inline dans 'opcode' ; trouvé 'db'
main.c(8)error C2443: conflit de taille d'opérande
Je pense que les variables (DB : Define Byte) doivent être placées dans un autre segment. Détails sur le forum 'assembleur'.
Le mieux encore est d'utiliser les variables du C...
Ceci fonctionne chez moi (Borland C++ 3.1 mode 8086 réel modèles SMALL et LARGE)
Code:
1 2 3 4 5 6 7 8 9 10 11
|
int main (void)
{
static char msg[] = "Hello world\n\r$";
asm mov ah, 09h
asm mov dx, offset msg
asm int 21h
return 0;
} |
Le 'static' assure un référencement par rapport à DS...