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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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
Rejoignez-nous