1

salut, je viens d'écrire un programme c qui contient de l'assembleur et j l'ai compilé par visual c++2008 mais malheureusement il y'a des erreurs que j'ai pas pu les corigés .Svp aidez moi voici mon code


#include<stdio.h>
#include<conio.h>
void datesys(int *jour,int *mois,int *an);
void main()
{
int*jour,*mois,*an;
int s=0,i,j;
char a;
int t[100];
do
{
printf("veuillez saisir c pour date donnée par clavier,s pour date du systéme");
scanf_s("%c", &a);
}
while(a!='s'||a!='c');
void datesys(int *jour,int *mois,int *an)
{
_asm
{
mov ah,2ah;
int 21h;
mov an,CX;
mov mois,DH;
mov jour,DL;
}
}
t[0]=30;
if(*an%4==0)
t[1]=29;
else
t[1]=28;
for(i=2;i<=11;i++)
{
if(i+1%2==0)
t[i]=30;
else
t[i]=31;
}
int v;
v=*mois;
for(j=0;j<v;j++)
s=s+t[j];
s=s+*jour;
printf("le numéro du jour est:%d",s);
getch();
}

2

Visual C++ 2008 ne compile que pour Windows et ton code assembleur est prévu pour DOS, c'est mal parti...
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3

Utilise la balise [pre] pour afficher ton code smile
Où se situe l’erreur ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

4

slt,alors pour visualc++ compile le c en incluant l'assembleur pour windows si tu veux je te donne un exemple simple que je l'ai essayé et ça marche bien sur visual.
exemple d'addition:

#include <stdio.h>
int ADDITION (int a, int b); // Declaration fonction ASM
void main()
{
int somme;
int x;
int y;
printf("\n x = ? "); scanf_s ("%d", &x);
printf("\n y = ?"); scanf_s ("%d", &y);
somme = ADDITION (x, y);
printf("\nsomme = %d\n\n", somme);
}

int ADDITION (int a, int b)
{
// Routine ASM d'Addition
__asm
{
mov eax, a; ; 1er argument reference par son nom
mov ecx, b; ; 2nd argument reference par son nom
add eax, ecx ; le resultat doit tjs etre place dans eax
}
}



5

Oui ça marche parce que ton deuxième exemple :
- est en 32 bits
- ne fait appel à aucune fonction DOS

Ton premier programme est prévu pour DOS en mode 16 bits, ça ne marchera pas sous Windows.

Tu cherches à faire quoi exactement ?
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

6

je cherche à calculer le numéro du jour dans l'année enc a partir de la date système donnée par l'assembleur.

7

Oui j'ai compris, mais pourquoi utiliser de l'assembleur pour ça, alors qu'il existe des fonctions système appelables en C ?
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

8

Tu peux essayer cela.
void datesys(int *jour,int *mois,int *an)
{
 short i;
 char  j, k;
_asm
{
mov ah,2ah;
int 21h;
mov i,CX;
mov j,DH;
mov k,DL;
}
*an = i;
*mois=j;
*jour = k;
} 

(Je ne garantis rien).

9

c'est le but d'un tp donné par mon professeur

10

Demande confirmation à ton prof, la plupart des TP assembleur PC se font sous DOS généralement...
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

11

Zerosquare (./10) :
Demande confirmation à ton prof, la plupart des TP assembleur PC se font sous DOS généralement...

Malheureusement.
L'assembleur dos 16 bits n'a rien à voir avec l'assembleur moderne.

12

Tout à fait. Mais c'est généralement le prof qui est le composant obsolète grin
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

13

le programme est bien compilé mais lors de l'exécution c'est catastrophique. Le message qui est apparu est le suivant:
l'instruction "0X00411630" emploi l'adresse mémoire"0Xffffffff".La mémoire ne peut pas étre "read". confus

14

c'est l'instruction "INT 21H" qui ne peut marcher que sous DOS et donc, pas sous windows

15

ok c'est tout à fait clair merci votre aide tous.

16

cimba (./13) :
le programme est bien compilé mais lors de l'exécution c'est catastrophique. Le message qui est apparu est le suivant:
l'instruction "0X00411630" emploi l'adresse mémoire"0Xffffffff".La mémoire ne peut pas étre "read". confus

tu as essayé dans les propriétés du fichier EXE de le lancer en mode "windows 95" ? (ça se fait sur l'onglet compatibilité)

gfdgdf.jpg

(je demande parce que pour un programme du taf, une fois, ça avait marché grâce à ça...)
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

17

j'ai essayé mais c'est le même prob.

18

Essaie avec un compilateur DOS 16 bits, genre http://www.openwatcom.com/.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

19

20

DJGPP ne fait que du 32 bits, non ?
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

21

Exact. GCC ne gère pas le x86 16 bits.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

22

23

le mieux pour executer reste encore DOSBOX ^^
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.