written 3.1 years ago by |
Memory addressing modes of 8086:
The different ways in which a source operand is denoted in an instruction is known as addressing mode.
When 8086 executes an instruction, it performs the specified function on data. The operated data is stored in the memory location. There are various techniques to specify address of data. These techniques are called addressing modes.
List of addressing modes of 8086:
- Immediate addressing mode
- Register addressing mode
- Direct addressing mode
- Register indirect addressing mode
- Index addressing mode
- Based addressing mode
- Based and indexed addressing mode
- Based and indexed with displacement addressing mode
1. Immediate addressing mode:
The addressing mode in which the data operand is a part of the instruction itself is known as immediate addressing mode. (i.e. source data is within the instruction)
MOV AX, 10ABH
where AL = ABh and AH = 10h.
2. Register addressing mode:
In register addressing mode, register is the source of the operand for an instruction.
MOV AX, CX
where the contents of CX register is moved to AX register.
3. Direct addressing mode:
The addressing mode in which the effective address of the memory location is written directly in the instruction.
MOV AH, [1000H]
where the contents of offset address 1000 is moved to AL. i.e. AH <- [1000h]
4. Register indirect addressing mode:
In this addressing the operand’s offset is placed in any one of the registers BX,BP,SI,DI as specified in the instruction. The effective address of the data is in the base register or an index register that is specified by the instruction.
The name of the register which holds the effective address will be specified in the instruction.
The 8086 CPUs lets you access memory indirectly through a register using the register indirect addressing mode.
MOV AX, [BX]
i.e. move the contents of memory location addressed by the register BX to the register AX.
5. Indexed addressing mode:
The operand’s offset is the sum of the content of an index register SI or DI and an 8 bit or 16 bit displacement.
SI or DI register is used to hold an index value for memory data and a signed 8-bit displacement or unsigned 16-bit displacement will be specified in the instruction.
MOV AX, [SI+05]
6. Based addressing mode:
Memory address is the sum of the BX or BP base register plus displacement in the instruction.
BX or BP register is used to hold a base value for effective address and a signed 8-bit or unsigned 16-bit displacement will be specified in the instruction.
MOV AX, [BP+2]
where AL <- [BP+2]; AH <- [BP+3]
7. Based & indexed addressing mode:
In this addressing mode, the offset address of the operand is computed by summing the base register to the contents of an Index register.
MOV AX, [BX+SI]
where AL <- [BX+SI]; AH <- [BX+SI+1]
8. Based & indexed with displacement addressing mode:
It is also known as relative based indexed addressing mode.
The effective address is the sum of index register, base register and a 8-bit or 16-bit displacement.
MOV AX, [BX+SI+6]
where AL <- [BX+SI+6]; AH <- [BX+SI+7]