Вы находитесь на странице: 1из 3

IMPLEMENTATION OF SYMBOL TABLE

#include<stdio.h>
#include<conio.h>
struct symtab
{
char lab[20];
int add;
}sym[50];
int l=0,i=0,j=0,lab=0,g=0;
void main()
{
int len;
char mn[10],la[20],opd[5];
FILE *f1;
clrscr();
f1=fopen(“input1.c”,”r”);
printf(“\n\n\t Surce Program”);
printf(“\n\t--------------------“);
printf(“\n\n\t Enter the starting address”);
scanf(“%d”,&l);
g=1;
printf(“\n Lable Menonics Operand\n”);
do
{
fscanf(f1,”%s%s%s”,la,mn,opd);
printf(“\n%5s\t\t%s\t%6s”,la,mn,opd);
if(strcmp(la,”*****”)!=0)
{
strcpy(sym[lab].lab,la);
sym[lab].add=g;
lab++;
}
g+=3;
}
while(strcmp(mn,”hlt”)!=0);
printf(“\n SYMBOL TABLE \n\t LABEL\tADDRESS”);
for(i=0;i<lab;i++)
printf(“\n\t%s\t%d”,sym[i].lab,sym[i].add);
fcloseall();
getch();
}
Input File:

Input1.c
*****mvia 10
loop add 20
loop1 sub4
loop2 jmp 2000
******hlt*****

OUTPUT

Source program
Enter the starting address
1000
label Mnemonics operand

***** mvia 10
loop add 20
loop1 sub 4
loop2 jmp 2000
***** hlt *****

Symbol Table

Label Address
Loop 1003
Loop1 1006
Loop2 1009
IMPLEMENTATION OF PASS1 OF 2 PASS ASSEMBLER

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
FILE *fp1,*fp2,*fp3,*fp4;
int locctr=0,a,flag1=0,b,I,ctr=0,pglen,flag=0,d[5];
char lab[10],opcode[10],op1[10],op2[10],buff[10];
struct symtab
{
char label[10];
int add;
char flag;
}s[10];
clrscr();
fp1=fopen(“source.txt”,”r”);
fp2=fopen(“opcode.txt”,”r”);
fp3=fopen(“inter.txt”,”w”);
fp4=fopen(“symtab.txt”,”w”);
fprintf(fp4,”\n\n symbol table\n”);
fprintf(fp4,”\n\nlabel\taddress\tError flag\n”);
buff[0]=’\o’;
fscanf(fp1,”%s%s%s%s”, lab,opcode,op1,op2);
getch();
if(strcmp(opcode,”START”)==0)
{
a=atoi(op1);
locctr=a;
fprintf(fp3,”\naddress\t\t Intermediate Instr\n\n”);
fprintf(fp3,”----------------\t---------------------\n\n);
fprintf(fp3,”\n%s\t%s\t%s\t%s\t%s”,lab,opcode,op1,op2);
printf(“\n\t%s\t%s\t%s\t%s”,lab,opcode,op1,op2);
fscnf(fp1,”%s%s%s%s”,lab,opcode,op1,op2);
}

Вам также может понравиться