/*PASS TWO OF LINKING LOADER*/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
FILE *in,*address;
int search(char sym[10]);
char progaddr[10];
int data[100],mem[100],i=0,q,d=0,value,j;
int csaddr,execaddr,cslth;
char type[10],addr[10],obj[10],mflag[10],op;
in=fopen(“OBJECT.TXT”,”r”);
address=fopen(“ADDRESS.TXT”,”r”);
clrscr();
fscanf(address,”%s”,progaddr);
fclose(address);
csaddr=atoi(progaddr);
execaddr=atoi(progaddr);
fscanf(in,”%s\t%s\t%s\t%s”,type,addr,obj,mflag);
while(!feof(in))
{
cslth=atoi(obj);
while(strcmp(type,”E”)!=0)
{
fscanf(in,”%s\t%s\t%s\t%s”,type,addr,obj,mflag);
if(strcmp(type,”T”)==0)
{
mem[i]=atoi(addr)+csaddr;
data[i]=atoi(obj);
i++;
}
else if(strcmp(type,”M”)==0)
{
op=mflag[0];
for(j=1;j<strlen(mflag);j++)
mflag[j-1]=mflag[j];
mflag[j-1]=”;
value=search(mflag);
q=d+atoi(addr)/3;
if(op==’+’)
data[q]=data[q]+value;
else
data[q]=data[q]-value;
}
}
d=cslth/3;
execaddr=csaddr+atoi(addr);
csaddr=csaddr+cslth;
fscanf(in,”%s\t%s\t%s\t%s”,type,addr,obj,mflag);
}
fclose(in);
q=(execaddr-atoi(progaddr))/3;
printf(“Program loaded in memory is ready for execution\n”);
printf(“Execution starting address:%d\n”,execaddr);
printf(“ADDRESS\tDATA\n”);
for(j=0;j<i;j++)
printf(“%d\t%d\n”,mem[j],data[j]);
gotoxy(1,q+4);
getch();
}
int search(char sym[10])
{
FILE *fp;
char s1[10],s2[10],s3[10],s4[10];
fp=fopen(“ESTAB.TXT”,”r”);
while(!feof(fp))
{
fscanf(fp,”%s\t%s\t%s\t%s”,s1,s2,s3,s4);
if(strcmp(s2,sym)==0)
{
fclose(fp);
return(atoi(s3));
}
}
fclose(fp);
return 0;
}
OUTPUT:
Program loaded in memory is ready for execution
Execution starting address:4009
ADDRESS DATA
4000 6
4003 10006
4006 9
4009 6
4012 10006
4015 9
thanks a lot for the code ,there are two errors if I run the code
c:73: error: missing terminating ” character
c:115: error: `gotoxy’ was not declared in this scope
I would be very delightful if u look into code once,or is it my mistake plz just verify it
pls reply me as soon as possible
thank u