answersLogoWhite

0

SIC assembler pass 1 C program?

Updated: 10/25/2022
User Avatar

Wiki User

11y ago

Best Answer

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

void chk_label();

void chk_opcode();

void READ_LINE();

struct optab

{

char code[10],objcode[10];

}myoptab[3]={

{"LDA","00"},

{"JMP","01"},

{"STA","02"}

};

struct symtab{

char symbol[10];

int addr;

}mysymtab[10];

int startaddr,locctr,symcount=0,length;

char line[20],label[8],opcode[8],operand[8],programname[10];

void PASS1()

{

FILE *input,*inter;

input=fopen("input.txt","r");

inter=fopen("inter.txt","w");

printf("LOCATION LABEL\tOPERAND\tOPCODE\n");

printf("_____________________________________");

fgets(line,20,input);

READ_LINE();

if(!strcmp(opcode,"START"))

{

startaddr=atoi(operand);

locctr=startaddr;

strcpy(programname,label);

fprintf(inter,"%s",line);

fgets(line,20,input);

}

else

{

programname[0]='\0';

startaddr=0;

locctr=0;

}

printf("\n %d\t %s\t%s\t %s",locctr,label,opcode,operand);

while(strcmp(line,"END")!=0)

{

READ_LINE();

printf("\n %d\t %s \t%s\t %s",locctr,label,opcode,operand);

if(label[0]!='\0')

chk_label();

chk_opcode();

fprintf(inter,"%s %s %s\n",label,opcode,operand);

fgets(line,20,input);

}

printf("\n %d\t\t%s",locctr,line);

fprintf(inter,"%s",line);

fclose(inter);

fclose(input);

}

void READ_LINE()

{

char buff[8],word1[8],word2[8],word3[8];

int i,j=0,count=0;

label[0]=opcode[0]=operand[0]=word1[0]=word2[0]=word3[0]='\0';

for(i=0;line[i]!='\0';i++)

{

if(line[i]!=' ')

buff[j++]=line[i];

else

{

buff[j]='\0';

strcpy(word3,word2);

strcpy(word2,word1);

strcpy(word1,buff);

j=0;

count++;

}

}

buff[j-1]='\0';

strcpy(word3,word2);

strcpy(word2,word1);

strcpy(word1,buff);

switch(count)

{

case 0:strcpy(opcode,word1);

break;

case 1:strcpy(opcode,word2);

strcpy(operand,word1);

break;

case 2:strcpy(label,word3);

strcpy(opcode,word2);

strcpy(operand,word1);

break;

}

}

void chk_label()

{

int k,dupsym=0;

for(k=0;k<symcount;k++)

if(!strcmp(label,mysymtab[k].symbol))

{

mysymtab[k].addr=-1;

dupsym=1;

break;

}

if(!dupsym)

{

strcpy(mysymtab[symcount].symbol,label);

mysymtab[symcount++].addr=locctr;

}

}

void chk_opcode()

{

int k=0,found=0;

for(k=0;k<3;k++)

if(!strcmp(opcode,myoptab[k].code))

{

locctr+=3;

found=1;

break;

}

if(!found)

{

if(!strcmp( opcode,"WORD"))

locctr+=3;

else if (!strcmp(opcode,"RESW"))

locctr+=(3*atoi(operand));

else if(!strcmp(opcode,"RESB"))

locctr+=atoi(operand);

}

}

int main()

{

PASS1();

length=locctr-startaddr;

}

User Avatar

Wiki User

11y ago
This answer is:
User Avatar

Add your answer:

Earn +20 pts
Q: SIC assembler pass 1 C program?
Write your answer...
Submit
Still have questions?
magnify glass
imp
Continue Learning about Engineering

What is machine dependent assembler features?

1) Instruction format and addressing modes. 2) Relocation. For details refer "System Software By L.L.Beck" BY:: SUNIL SHARMA (sunil13982@gmail.com)


What is pass in compiler design?

There are two types of compilers one-pass and multi-pass. Pass means that some of inner operations are repeated several times. If we have one-pass compiler and this source code: i++; i++; i++; Inside compiler it would generate: i = i + 1; i = i + 1; i = i + 1; If compiler would be two-pass: i = i + 3; The more passes compiler has, the better optimized code it can generate, but it is slower because it must repeat some steps again.


What are the different data structure used in pass 1 assembler?

chupa lao jinu answer chahida ithe vaje ............kam kar koi nahi te search maran lag jande.............


What are the phases and passes of a general language processor?

Language processor consist of two phases 1.Analysis phase 2.Synthesis phase Language processor pass is the processing of every statement in a source program, or its equivalent representation to preform language processing function pass 1-It analyses the source program and notes relevant information. pass 2- It synthesizes the target program


How high level computer language works without assembler compiler and interpreter?

I do not know, ask your teacher.Why, for example Python, PHP, Pearl and JavaScript work without compiler; C, Pascal, Cobol and Fortan work without interpreter.None work "without assembler compiler and interpreter" so the question cannot be answered as asked because there is no answer.If we want to write a program without an assembler, compiler or interpreter; it is an easy answer. You hand assemble, that is where you manually enter the machine code. In the early days this was the only way to program a computer. Having done some hand assembly I have to things to say about it.1) it is not as hard as it might appear to be but it is painfully slow to do.2) why bother when there are excellent compilers available.

Related questions

What is pass1 assembler?

pass 1 assembler is assembler which convert assembly level language into machine level language in one pass only


Assembler design options?

Two main options for the design of assembler are: 1. One pass assembler 2. Multi-pass assembler One pass assemblers generally have problem of "forward referencing" which is resolved by using mulitpasses


Advantages of one pass assembler over two pass assembler?

In theory the only advantage is Speed simply because one pass is faster than two passes. However a properly written two pass assembler can be faster than a poorly written one pass assembler because the two pass assembler spends alot less time doing memory intensive lookups, look-aheads, and back-tracking.


How assembler works?

To the question, It is an low level language An assembly language is use to write programs : 1.Games 2.Operating system 3.Utility program 4.compiler/assembler/interpreter 5.Virus 6.Defragmenter 7.Device driver


What is machine dependent assembler features?

1) Instruction format and addressing modes. 2) Relocation. For details refer "System Software By L.L.Beck" BY:: SUNIL SHARMA (sunil13982@gmail.com)


Error reporting in a two pass assembler?

error reporting in a two pass assembler 1)Syntax errors like missing commas etc 2)Invalid opcode 3)Duplicate definition of symbol 4)Undefined symbol 5)Missing START 6)Missing END 7)Symbol defined but not used(actually its warning)


What is pass in compiler design?

There are two types of compilers one-pass and multi-pass. Pass means that some of inner operations are repeated several times. If we have one-pass compiler and this source code: i++; i++; i++; Inside compiler it would generate: i = i + 1; i = i + 1; i = i + 1; If compiler would be two-pass: i = i + 3; The more passes compiler has, the better optimized code it can generate, but it is slower because it must repeat some steps again.


What is MASM assembler?

The Microsoft Macro Assembler (abbreviated MASM) is an x86 high-level assembler for DOS and Microsoft Windows.Microsoft Assembeler for MS DosM As MToday, MASM is still the most popular assembler,[1] despite competition from new products such as NASM and Yasm, FASM, and HLA.


What are the different data structure used in pass 1 assembler?

chupa lao jinu answer chahida ithe vaje ............kam kar koi nahi te search maran lag jande.............


Difference between pass1 and pass2 assembler?

normally every assembler has two passes. pass 1 and pass 2. wen v start compiling the program object code is generated. wen there are no forward references we could generate the object code in first pass itself. unfortunately writing programs without forward reference is tedious and hence we go for second pass to generate the objectcode of the remaining .


What are the phases and passes of a general language processor?

Language processor consist of two phases 1.Analysis phase 2.Synthesis phase Language processor pass is the processing of every statement in a source program, or its equivalent representation to preform language processing function pass 1-It analyses the source program and notes relevant information. pass 2- It synthesizes the target program


How do you pass input to an interactive program through an external file in java?

hi i used ProcessBuilder to run the program but i m stuck with how to pass input to the executable. If i run that .exe file in cmd it asks to "enter your choice (1/2/3)" How to pass the choice from my java code?