Join With Me...

7:12 AM

Assembler Program in C

#include
#include
#include

void push(char [], int *, char [], int *);
char pop(char [], int *);
void push1(char, int *, char [], int *);

void main()
{
int i=0,top=-1,k=1,j,n;
char str[30],stack[20],lhs,rhs,ch;
clrscr();
printf("Enter the postfix expression: ");
scanf("%[^\n]s",str);
j = strlen(str);
str[j] = '#';
while(str[i] != '#')
{
if(isalpha(str[i]))
push(str,&i,stack,&top);
else
{
rhs = pop(stack,&top);
lhs = pop(stack,&top);
j = lhs;
n = rhs;
if(j >= 0 && j <= 9)
printf("LOD T%d\n",lhs);
else
printf("LOD %c\n",lhs);
if(n >= 0 && n <= 9)
{
switch(str[i])
{
case '+':
printf("ADD T%d\n",rhs);
break;
case '-':
printf("SUB T%d\n",rhs);
break;
case '*':
printf("MUL T%d\n",rhs);
break;
case '/':
printf("DIV T%d\n",rhs);
break;
}
}
else
{
switch(str[i])
{
case '+':
printf("ADD %c\n",rhs);
break;
case '-':
printf("SUB %c\n",rhs);
break;
case '*':
printf("MUL %c\n",rhs);
break;
case '/':
printf("DIV %c\n",rhs);
break;
}
}
ch = (char)k++;
printf("STO T%d\n",ch);
push1(ch,&i,stack,&top);
}
}
getch();
}

void push(char str[], int *i, char stack[], int *top)
{
(*top)++;
stack[*top] = str[(*i)++];
}

char pop(char stack[], int *top)
{
return stack[(*top)--];
}

void push1(char ch, int *i, char stack[], int *top)
{
(*top)++; (*i)++;
stack[*top] = ch;

}

0 comments:

Post a Comment