Upload
balaji-shanmugam
View
227
Download
0
Embed Size (px)
DESCRIPTION
IMPLEMENTATION OF MACRO PROCESSOR
Citation preview
IMPLEMENTATION OF MACRO PROCESSOR#include<stdio.h>#include<stdlib.h>#include<conio.h>struct macro{char l[10];char oc[10];char op[10];}m[20];int size=0;void main(){FILE *fp,*fp1;int i;char label[10],opcode[10],operand[10],mname[10];clrscr();fp=fopen("macro.txt","r");fp1=fopen("output.txt","w");while(strcmp(opcode,"END")!=0){fscanf(fp,"%s%s%s",&label,&opcode,&operand);if (strcmp(opcode,"MACRO")==0){ strcpy(mname,label); while(strcmp(opcode,"MEND")!=0) { strcpy(m[size].l,label); strcpy(m[size].oc,opcode); strcpy(m[size].op,operand); size++; fscanf(fp,"%s%s%s",&label,&opcode,&operand); }}else{ if (strcmp(mname,opcode)==0) { fputc('.',fp1); fprintf(fp1,"%s\t%s\t%s\n",m[0].l,m[0].oc,m[0].op); for(i=1;i<size;i++) {
fprintf(fp1,"%s\t%s\t%s\n",m[i].l,m[i].oc,m[i].op); } } else
fprintf(fp1,"%s\t%s\t%s\n",&label,&opcode,&operand);
}//else}//whileGetch();}Output:
i/p File: macro.txt
COPY START 1000A1 MACRO __ LDA ALPHA_ ADD INCR_ SUB ONE_ STA BETA_ MEND _FIRST CLEAR A_ A1 _ALPHA RESW 1INCR RESW 1ONE WORD 1BETA RESW 1_ END -
o/p file: output.txt
COPY START 1000FIRST CLEAR A.A1 MACRO __ LDA ALPHA_ ADD INCR_ SUB ONE_ STA BETAALPHA RESW 1INCR RESW 1ONE WORD 1BETA RESW 1_ END -