#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
FILE *fp1,*fp2,*fp3,*fp4;
void main()
{
char code[2],addr[6],buff[10],add[5],inst[10],op1[10],op2[10];
char symval[5],lab[10],obj[6],a[6],label[10];
int flag;
fp1=fopen("D1.TXT","r");
fp2=fopen("D2.TXT","w");
buff[0]='\0';
fscanf(fp1,"%s%s%s%s%s",&addr,&label,&inst,&op1,&op2);
strcpy(a,op1);
if(strcmp(inst,"START")==0)
{
fprintf(fp2,"\nADDRESS\tMNEMONICS\tINSTRUCTION\n");
fprintf(fp2,"%s\t%s\t%s\t%s\n",addr,label,inst,op1);
}
while(!feof(fp1))
{
flag=0;
fscanf(fp1,"%s%s%s%s%s",&addr,&label,&inst,&op1,&op2);
if(strcmp(inst,"END")!=0)
{
fp3=fopen("OPTAB.TXT","r");
while(!feof(fp3))
{
fscanf(fp3,"%s%s",buff,code);
if(strcmp(inst,buff)==0)
{
flag=1;
break;
}
}fclose(fp3);
if(flag)
{
if(strcmp(op1,"$")!=0)
{
fp4=fopen("SYM.TXT","r");
while(!feof(fp4))
{
fscanf(fp4,"%s%s",lab,add);
if(strcmp(op1,lab)==0)
{
strcpy(symval,add);
break;
}
}
}
else
strcpy(symval,"");
fclose(fp4);
}
if(strcmp(label,"$")==0||strcmp(label,""))
obj[0]=code[0];
obj[1]=code[1];
obj[2]=symval[0];
obj[3]=symval[1];
obj[4]=symval[2];
obj[5]=symval[3];
obj[6]='\0';
if((strcmp(inst,"WORD")==0)||(strcmp(inst,"BYTE")==0))
fprintf(fp2,"%s\t%s\t%s\t%s\t%s\n",addr,label,inst,op1,op2);
else if((strcmp(inst,"RESW")==0)||(strcmp(inst,"RESB")==0))
fprintf(fp2,"%s\t%s\t%s\t%s\t%s\n",addr,label,inst,op1,op2);
else
fprintf(fp2,"%s\t%s\t%s\t%s\t%s\n",addr,label,inst,symval,obj);
}
}
fprintf(fp2,"%s\t%s\t%s\t%s\t%s\n",addr,label,inst,op1,op2);
fclose(fp1);
fclose(fp2);
}
Input File :
D1.TXT
1000 COPY START 1000 $
1000 FIRST STL RETADR $
1003 $ STA BUFFER $
1006 BUFFER RESB 08 $
1014 RETADR RESW 03 $
1023 $ END FIRST $
OPTAB.TXT
STA 14
STL 32
LDA 03
LDB 69
JSUD 48
JEQ 30
COMP 28
STCH 34
SYM.TXT
SYMBOL TABEL
LABEL ADDRESS
FIRST 1000
BUFFER 1006
RETADR 1014
Output File :
D2.TXT
ADDRESS MNEMONICS INSTRUCTION
1000 COPY START 1000
1000 FIRST STL 1014 321014
1003 $ STA 1006 141006
1006 BUFFER RESB 08 $
1014 RETADR RESW 03 $
1023 $ END FIRST $
No comments:
Post a Comment