3
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);

IMPLEMENTATION OF MACRO PROCESSOR system software lab program

Embed Size (px)

DESCRIPTION

IMPLEMENTATION OF MACRO PROCESSOR

Citation preview

Page 1: IMPLEMENTATION OF MACRO PROCESSOR system software lab program

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);

Page 2: IMPLEMENTATION OF MACRO PROCESSOR system software lab program

}//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 -