Assembly languages are low level programming languages for computer, microprocessors and other integrated circuits. It interprets the binary code and other constant in machine code to control the circuit architecture. Assembly languages are used to defined and prepared by the manufacturer of the hardware and is used to symbolize the processing steps at the time of command execution.

Assembly language is translated by a utility program also known as the assembler. Assemblers convert assembly language in computer’s machine code and perform to builds a bridge between the hardware and computer so that the computer can access the hardware through assembly languages and can proceed further. There are two types of assemblers:

One pass assemblers: these assemblers visit once the source code and set symbols for further program execution.

Two pass assemblers: These assemblers work through a table of symbol made from their first visit to the source code. Two pass assemblers always follow the tables generated from first visit of the source code.

Like an assembler translates assembly languages into machine code, we use disassemble to convert machine code into the assembly languages. Assemblers are also used to support in-built macro instructions to generate machine instructions. These instructions can be define data element and variables. These also support predefined macros and programmer defined macros in which variables and constants are implanted.

Macros are created from code and are used to shorten assembly languages program as a high-level languages. Mostly assemblers come with inbuilt or predefined macros to generate and allow macros to take their own parameters including symbolic variables, conditionals, string manipulation and arithmetic operations.

A machine language is used to:

  • Interact with the physical part of machine or hardware as device drivers.
  • Create vector function for high-level language program, which is done also by compiler.
  • In absence of high-level languages.
  • To write low-level operating systems like device driver and booting drivers.
  • To write compiler software by which we can generate assembly language.
  • To write and modify the real time program, software and video games in assembly language
  • In reverse engineering where high level language can not be used.