Advertisement
Sirallens

Untitled

May 6th, 2016
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<string.h>
  2.  
  3. typedef struct{
  4.         char Mnemonic[7];  
  5.         unsigned code;
  6.         } code;
  7.  
  8. typedef struct{
  9.         char Label[7];  
  10.         unsigned location;
  11.         } symbolTab;
  12.  
  13. /*char *  opLook(char * mnemonic)
  14. {
  15.     for(i)
  16. }
  17. */
  18. void Assemble(char* filename)
  19. {
  20.     unsigned locctr = 0;
  21.    
  22.     code Opta[25] =  {{"ADD", 0x18},{"AND",0x58},{"COMP",0x28},{"DIV",0x24},{"J",0x3c},
  23.                    {"JEQ",0x30},{"JGT",0x34},{"JLT",0x38},{"JSUB",0x48},{"LDA",0x00},
  24.                    {"LDCH",0x50},{"LDL", 0x08},{"LDX", 0x04},{"MUL",0x20},{"OR",0x44},
  25.                    {"RD",0xd8},{"RSU",0x4c},{"STA",0x0c},{"STCH",0x54},{"STL",0x14},
  26.                    {"STX",0x10},{"SUB",0x1c},{"TD",0xe0},{"TIX",0x2c},{"WD",0xdc}};
  27.     symbolTab symTab[500];            
  28.     char  buffer[255];
  29.     unsigned programLenght;
  30.     FILE * source;
  31.     FILE * interFile;
  32.     interFile = fopen("intermidiateFile.txt", "w+");
  33.     source = fopen("source.txt", "r");
  34.     char * lab;       /*label*/
  35.     char * mnemo;   /*mnemonic*/
  36.     char * operand;
  37.    
  38.  
  39.  
  40.  
  41.     while (fgetc(source) != EOF)
  42.    
  43.     {  
  44.         fgets(buffer, 255, source);
  45.         if(buffer[0] != '.')               /* if the line is not a comment*/
  46.         {
  47.             if(buffer[0] = ' ')
  48.             {
  49.                 mnemo = strtok(buffer, " ");
  50.                 if(mnemo != "RSUB")
  51.                 {
  52.                     operand = strtok(NULL, " ");
  53.                 }
  54.             }
  55.             else
  56.             {
  57.                 lab =strtok(buffer, " ");
  58.                 mnemo =strtok(NULL, " ");
  59.                 operand =strtok(NULL, " ");
  60.             }
  61.         }
  62.  
  63.  
  64.  
  65.         fputs(buffer, interFile);
  66.         fprintf(interFile, " %x \n %s \n %s \n %s \n ", locctr, lab, mnemo, operand);
  67.  
  68.     }
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.     fclose(source);
  78.     fclose(interFile);
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement