Working of Assembler
Assembler divides tasks into two passes:
Pass-1
- Define symbols and literals and remember them in the symbol table and literal table respectively.
- Keep track of the location counter.
- Process pseudo-operations.
- Defines a program that assigns the memory addresses to the variables and translates the source code into machine code.
Pass-2
- Generate object code by converting symbolic op-code into respective numeric op-code.
- Generate data for literals and look for values of symbols.
- Defines a program that reads the source code two times.
- It reads the source code and translates the code into object code.
Firstly, We will take a small assembly language program to understand the working in their respective passes. Assembly language statement format:
[Label] [Opcode] [operand]
Example: M ADD R1, ='3'
where, M - Label; ADD - symbolic opcode;
R1 - symbolic register operand; (='3') - Literal
Assembly Program:
Label Op-code operand LC value(Location counter)
JOHN START 200
MOVER R1, ='3' 200
MOVEM R1, X 201
L1 MOVER R2, ='2' 202
LTORG 203
X DS 1 204
END 205
Let’s take a look at how this program is working:
- START: This instruction starts the execution of the program from location 200 and the label with START provides a name for the program. (JOHN is the name of the program).
- MOVER: It moves the content of literal(=’3′) into register operand R1.
- MOVEM: It moves the content of the register into memory operand(X).
- MOVER: It again moves the content of literal(=’2′) into register operand R2 and its label is specified as L1.
- LTORG: It assigns an address to literals(current LC value).
- DS(Data Space): It assigns a data space of 1 to Symbol X.
- END: It finishes the program execution.
Introduction of Assembler
Assembler is a program for converting instructions written in low-level assembly code into relocatable machine code and generating along information for the loader. It is necessary to convert user-written programs into machinery code. This is called a translation of a high-level language to a low-level that is machinery language. This type of translation is performed with the help of system software. An Assembler can be defined as a program that translates an assembly language program into a machine language program. Self-assembler is a program that runs on a computer and produces the machine codes for the same computer or same machine. It is also known as a resident assembler. A cross-assembler is an assembler that runs on a computer and produces machine codes for other computers.