Se connecter avec
S'enregistrer | Connectez-vous

erreur ke rrive pa à corriger j'ai besoin de votre aide

Dernière réponse : dans Programmation

#include<dos.h>
#include<stdio.h>
#include<conio.h>
#include<graphics.h>

//**********definition des constantes********//
#define adressage_direct ri&0x01
#define type_instruction ri&0x06
#define code_operation ri&0x78

#define transfert 0x04
#define branchement 0x06
#define arithmetique_logique 0x02

#define load ri&0x08
#define store ri&0x10

#define add 0x08
#define sub 0x10
#define and 0x20
#define or 0x40

#define jmp 0x08
#define jc 0x10
#define jz 0x20

#define carry sr&0x01
#define zero sr&0x02
//**declaration des variables globales**//

unsigned char acc,ri,cp,sr,ta;
unsigned char ae,memoire[256],code,operande,adresse;

//******* affichage des registres*******/

void displayregistre(void)
{
window(2,45,80,47);
printf("cp=%x ri=%x acc=%x ta=%x ae=%x sr=%x",cp,ri,acc,ta,ae,sr);

}

/***************affichage de la memoire donnees********/

void displaymemoire_donnee(void)
{
int i;
window(6,30,22,38);
for(i=128;i<=255;i++)
{
if(memoire<16) printf("0");
printf("%x ",memoire);
}
}
/***************affichage de memoire programme********/

void displaymemoire_programme(void)
{
int i;
window(2,3,10,18);
for(i=0;i<=127;i++)
{
if(memoire<16) printf("0");
printf("%x ",memoire);
}
}
//****************UAL***************//

void ual(unsigned char code,unsigned char operande)
{
switch(code)
{
case add:
if(adressage_direct)
acc=memoire[ae];
else
acc=acc+operande;
break;
case sub:if(adressage_direct)
acc=memoire[ae];
else
acc=acc-operande;
break;
case and:if(adressage_direct)
acc=memoire[ae];
else
acc=acc&operande;
break;
case or:if(adressage_direct)
acc=memoire[ae];
else
acc=acc|operande;
break;
}
if(acc==0)
sr=0;
else

sr=1;
displayregistre();
}

//**************traitement des branchements**************//

void Brancheement(unsigned char code)
{
switch(code)
{
case jmp:
cp=memoire[ae];
break;
case jc:
if(carry)
cp=memoire[ae];
else
cp++;
break;
case jz:
if(zero)
cp=memoire[ae];
else
cp++;
break;
}
}
//***traitement de transfert***//

void Transfeert(void)
{
if(load)
{
if(adressage_direct)
acc=memoire[ae];
else
acc=operande;
}
else
{
if(store)
memoire[ae]=acc;
}

if(load)
displayregistre();
else
{
if(store)
displaymemoire_donnee();
}
}


//****************fonction d initialisation***************//

void reset()
{
cp= 0x00;
ta= 0x00;
sr= 0x00;
}
//**********************UC***************************//

void uc()
{
unsigned char c;
c=getch();
while(c!='q')
{
if(type_instruction==arithmetique_logique )
ual(code_operation,memoire[ae]);
else
if((type_instruction)==transfert)
Transfeert();
else
if(type_instruction==branchement)
Brancheement(code_operation,memoire[cp-1]);

switch(type_instruction)
{
case arithmetique_logique: ual(code_operation,memoire[ae]);
break;
case transfert: Transfeert();
break;
case branchement: Brancheement(code_operation,memoire[cp-1]);
break;
}
ri=memoire[cp];
cp++;
displayregistre();
displaymemoire_programme();
c=getch();
if(adressage_direct)
ta=memoire[cp];
else
ta=cp;
ae=ta;
displayregistre();
displaymemoire_programme();
c=getch();
if(c=='r')
reset();
}
}

//******fonction principale********//
void main()
{
intro();
memoire[0]=0x0D;
memoire[1]=0x80;
memoire[2]=0x0B;
memoire[3]=0x81;
memoire[4]=0x15;
memoire[5]=0x82;
memoire[6]=0x0F;
memoire[7]=0x06;
memoire[0x80]=0x78;
memoire[0x81]=0x70;
clrscr();
reset();
uc();
printf("memoire(0x82)est %x",memoire[0x82]);
}

//ouverture du programme
void intro()
{
int gm,gd=DETECT;
initgraph(&gd,&gm,"..\\BGI");
do{
setbkcolor(7);
setcolor(2);
settextstyle(3,0,3);
outtextxy(30,30,"bbbbbb");
setcolor(3);
settextstyle(4,0,3);
outtextxy(30,150," Projet : MANIPULATION MICROPROCESSEUR");
setcolor(8);
settextstyle(3,0,3);
outtextxy(10,250,"Fait par : xxxxx & yyyyyyy");
setcolor(8);
settextstyle(3,0,3);
outtextxy(10,300,"Encad‚ par : Mlle. XXX");
setcolor(4);
settextstyle(12,0,2);
outtextxy(300,430,"Ann‚e Universitaire : 2007/2008");
}while(!kbhit());
closegraph();
getch();

}
Lassé par la pub ? Créez un compte
Lassé par la pub ? Créez un compte
Tom's guide dans le monde