Addressing modes in 8086 microprocessor

Last Updated : 11 Jul, 2025

Addressing modes are important in assembly language programming as they define how data is located and accessed by instructions. These modes describe how an instruction specifies its operands, whether they are immediate values, memory addresses, or registers. They play important role in processor to fetch or store data for an operation, allowing us to manage read/write operations during program execution. Effective use of addressing modes makes assembly language code more efficient and flexible, directly impacting performance.

What is Addressing Mode?

Addressing modes specify how an instruction identifies the data, or operands. It operates on in assembly language. This field indicates whether the operand is a direct value, a memory address, or stored in a register. Addressing modes are important during instruction execution, as they define the form of an operand and the way data is accessed, making sure proper data handling at the machine level.

Types of Addressing Modes

Register Mode: In this type of addressing mode both the operands are registers.

Example:

MOV AX, BX
XOR AX, DX
ADD AL, BL

Immediate Mode: In this type of addressing mode the source operand is a 8 bit or 16 bit data. Destination operand can never be immediate data.

Example:

MOV AX, 2000
MOV CL, 0A
ADD AL, 45
AND AX, 0000

Displacement or Direct Mode: In this type of addressing mode the effective address is directly given in the instruction as displacement.

Example:

MOV AX, [DISP]
MOV AX, [0500]

Register Indirect Mode: In this addressing mode the effective address is in SI, DI or BX.

Example: Physical Address = Segment Address + Effective Address

MOV AX, [DI]
ADD AL, [BX]
MOV AX, [SI]

Based Indexed Mode: In this the effective address is sum of base register and index register.

Base register: BX, BP
Index register: SI, DI

Indexed Mode: In this type of addressing mode the effective address is sum of index register and displacement.

Example:

MOV AX, [SI+2000]
MOV AL, [DI+3000]

Based Mode: In this the effective address is the sum of base register and displacement.

Example:

MOV AL, [BP+ 0100]

Based Indexed Displacement Mode: In this type of addressing mode the effective address is the sum of index register, base register and displacement.

Example:

MOV AL, [SI+BP+2000] 

String Mode: This addressing mode is related to string instructions. In this the value of SI and DI are auto incremented and decremented depending upon the value of directional flag.

Example:

MOVS B
MOVS W

Input/Output Mode: This addressing mode is related with input output operations.

Example:

IN A, 45
OUT A, 50

Relative Mode: In this the effective address is calculated with reference to instruction pointer.

Example:

JNZ 8 bit address
IP=IP+8 bit address

Advantages of Addressing Modes

  • By using different addressing modes, you can access data in registers or memory and as immediate values which makes CPU instructions more versatile.
  • The register-based and indexed mode make better use of memory, especially in the case of loop operations / arrays.
  • For example, modes such as register addressing will make the instructions run faster because they read data directly from registers rather than memory.

Disadvantages of Addressing Modes

  • Indirect or indexed addressing modes: here the program logic becomes harder to see and maintain as not all instructions are using them.
  • Like displacement or relative addressing modes, that could add possibly memory overhead which is near in the event of large value displacements.
  • Other addressing modes are more closely linked to the CPU architecture, making it less easy for assembly code to be ported across different hardware platforms.

Conclusion

Addressing modes specify how an instruction identifies the data, or operands. They describe how the data is discovered and employed as long as this system runs, which makes stuff much more flexible along with handy. You will be able to write better assembly code using memory and registers smartly once you understand different addressing modes.

Comment

Explore