C program – Pass-1 Assembler

by Nideesh C on April 17, 2011 · 0 comments

in C Programming




#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int symi=0,lc=0,len=1,dc=0,start=0;
struct pgm
 {
   char line[80];
 } s[100];
struct symtab
 {
   char name[10];
   int add;
 } sym[100];
void show(char* a,char* b,char* c)
 {
   printf("%8s %5s %6s \n",a,b,c);
 }
void check(char s[])
 {
   if(!strcmpi(s,"START"))
   {
     start=1;
     show("","START","1");
     return;
   }
   if(!strcmpi(s,"END"))
    {
      show("","END","1");
      return;
    }
    if(!strcmpi(s,"EQU"))
     {
       show("","EQU","1");
       return;
    }
   if(!strcmpi(s,"DS"))
    {
      show("","DS","1");
      return;
    }
  if(!strcmpi(s,"ORG"))
   {
   show("","ORG","1");
   return;
 }
if(!strcmpi(s,"DC"))
 {
   show("","DC","1");
   return;
 }
if(start)
 {
   start=0;
   lc=atoi(s);
   return;
 }
if(dc)
 {
   dc=0;
   len=atoi(s);
   show("","DS",s);
   return;
 }
for(int i=0;i<symi;i++)
 {
    if(strcmp(sym[i].name,s)==0)
    return;
 }
if(s[0]=='\'')
 {
   char p[2];
   sprintf(p,"LIT : %s",s);
   show(p,"-","-");
   return;
 }
strcpy(sym[symi++].name,s);
show(s,"-","-");
return;
}
void main()
 {
   char t[20];
   int i=0,j=0,k=0;
   cout<<"Enter the Program code:";
   do
    {
     gets(s[i].line);
    }
   while(strcmpi(s[i++].line,"end"));
   printf("Systab Optab Length \n");
   printf("---------------------");
   k=-1;
   do
     {
       k++;
       for(i=0;s[k].line[i]!='\o';i++,j++)
      {
        if(s[k].line[i]==' ')
        {
          t[j]='\o';
          j=-1;
          check(t);
        }
       else
         t[j] = s[k].line[i];
     }
       t[j]='\o';
       j=0;
      check(t);
  }
while(strcmpi(s[k].line,"End"));
getch();
}



Not Satisfied ? Just search & get the result

Related Posts Plugin for WordPress, Blogger...
Be Sociable, Share!

Related posts:

  1. C program – Tower of Hanoi problem
  2. C program to read N names, store them in the form of an array and sort them in alphabetical order. Output the give names and the sorted names in two columns side by side with suitable heading
  3. C++ program – convert an Expression from Infix expression to Prefix form
  4. C++ program – convert an Expression from Infix form to Postfix form
  5. Sample – example of pass-by-reference

Leave a Comment

Previous post:

Next post: