2 petits problemes

anonyme_man_in_this_world
Messages postés
161
Date d'inscription
samedi 25 juin 2005
Statut
Membre
Dernière intervention
1 août 2006
- 19 juil. 2005 à 23:36
anonyme_man_in_this_world
Messages postés
161
Date d'inscription
samedi 25 juin 2005
Statut
Membre
Dernière intervention
1 août 2006
- 20 juil. 2005 à 19:19
salut !!

ça sera simpa si on m'aide a corriger ce petit code compile sous Visual C++
*******************************************************************************

#include <conio.h>
void main(void)
{
__asm
{
MOV AX,03h
INT 10h

MOV DX,offset Message
MOV AH,9
INT 21h

MOV AX,04c00h
INT 21h

Message DB "Hello World !$"
}
getch() ;
return ;
}
*******************************************************************************

#include <conio.h>
#include
void main(void)
{
int a ;
int b ;
__asm
{
MOV a , 100
MOV b , 100
ADD a , b
}
cout<<a<<endl ;
return ;
}
********************************************************************************
j'ai remarque que si on remplace b dans ADD par une constante le compilateur ne

genere aucune erreur .

merçi d'avance

A+++

5 réponses

BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
20 juil. 2005 à 10:35
et pourquoi devrait-il y avoir erreur ??? ADD admet une constante en seconde opérande.

Dans tous les cas, tout ceci ne sert à rien d'autre que perdre du temps, les interruptions sont à bannir et mettre de l'ASM inline de cette manière ne peut que ralentir un prog car empêche l'optimisation normale du compilo. On écrit toute sa fonction en ASM en spécifiant au compilo de ne pas y mettre ses pattes, préfixer par __declspec(naked), ou alors on laisse en C.

ciao...
BruNews, MVP VC++
0
anonyme_man_in_this_world
Messages postés
161
Date d'inscription
samedi 25 juin 2005
Statut
Membre
Dernière intervention
1 août 2006

20 juil. 2005 à 18:11
merçi pour ton aide

A++
0
anonyme_man_in_this_world
Messages postés
161
Date d'inscription
samedi 25 juin 2005
Statut
Membre
Dernière intervention
1 août 2006

20 juil. 2005 à 18:15
pourquoi on peut pas placer un entier (int) dans le registre AX par exemple ?

merçi d'avance
A++
0
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
20 juil. 2005 à 18:34
AX (16 bits) est partie basse de EAX (32 bits).
Un entier C est 32 bits sur système 32 bits donc...

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
anonyme_man_in_this_world
Messages postés
161
Date d'inscription
samedi 25 juin 2005
Statut
Membre
Dernière intervention
1 août 2006

20 juil. 2005 à 19:19
merçi pour les precieux conseils
A++
0