2 petits problemes

Signaler
Messages postés
161
Date d'inscription
samedi 25 juin 2005
Statut
Membre
Dernière intervention
1 août 2006
-
Messages postés
161
Date d'inscription
samedi 25 juin 2005
Statut
Membre
Dernière intervention
1 août 2006
-
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

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
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++
Messages postés
161
Date d'inscription
samedi 25 juin 2005
Statut
Membre
Dernière intervention
1 août 2006

merçi pour ton aide

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

pourquoi on peut pas placer un entier (int) dans le registre AX par exemple ?

merçi d'avance
A++
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
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++
Messages postés
161
Date d'inscription
samedi 25 juin 2005
Statut
Membre
Dernière intervention
1 août 2006

merçi pour les precieux conseils
A++