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:

  1. 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).
  2. MOVER: It moves the content of literal(=’3′) into register operand R1.
  3. MOVEM: It moves the content of the register into memory operand(X).
  4. MOVER: It again moves the content of literal(=’2′) into register operand R2 and its label is specified as L1.
  5. LTORG: It assigns an address to literals(current LC value).
  6. DS(Data Space): It assigns a data space of 1 to Symbol X.
  7. 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.

Similar Reads

Types of Assembler

The assembler generates instructions by evaluating the mnemonics (symbols) in the operation field and finding the value of symbols and literals to produce machine code. On the basis of this functionality, assembler has two types:...

Working of Assembler

Assembler divides tasks into two passes:...

Working of Pass-1

Define Symbols and literal tables with their addresses. Note: Literal address is specified by LTORG or END....

Working of Pass-2

Pass-2 of the assembler generates machine code by converting symbolic machine-opcodes into their respective bit configuration(machine understandable form). It stores all machine-opcodes in the MOT table (op-code table) with symbolic code, their length, and their bit configuration. It will also process pseudo-ops and will store them in the POT table(pseudo-op table). Various Databases required by pass-2:...

Conclusion

Assembler is a program that converts Assembly Language into machine language. There are two types of assemblers on the basis of a number of phases used to convert to machine code....

Frequently Asked Questions on Assembler – FAQs

What is the type of assembler?...