8086 Addressing Mode Answer
8086 Addressing Mode Answer
Addressing modes describe the types of operands and the way they are accessed for executing
an instruction.
1. Immediate Addressing mode: In this types of addressing, immediate data is a part of
instruction, and appears in the form of successive byte or bytes.
Example MOV CX,0005H
In the above example, 0005H is the immediate data. The immediate data may be 8-bit or 16-
bit in size.
2. Direct Memory addressing mode: In the direct addressing mode, a 16-bit memory
address (offset) is directly specified in the instruction as a part of it.
Example: MOV DX,[5000H]
Here, data resides in a memory location in the data segment, whose effective address may be
computed using 5000H as the offset address and content of DS as segment address. The
effective address, here, is 10H*DS+5000H.
3. Register addressing mode: In register addressing mode, the data is stored in a register
and it is referred using the particular register. All the registers, except IP, may be used in this
mode.
Example: MOV AX,BX
4. Register Indirect addressing mode: In this addressing mode, the offset address of data is
in either BX or BP or SI or DI register. The default segment is either DS or ES. The data is
supposed to be available at the address pointed to by the content of any of the above registers
in the default data segment.
Example: MOV AL,[BX]
Here, data is present in a memory location in DS whose offset address is in BX. The effective
address of the data is given as 10H*DS+[BX].
5. Register Relative Addressing mode: In this addressing mode, the data is available at an
effective address formed by adding an 8-bit or 16-bit displacement with the content of any
one of the registers BX, BP, SI and DI in the default (either DS or ES) segment. The example
given below explains this mode.
Example: MOV AL,[BX+50H]
Here, the effective address is given as 10H*DS+50H+[BX].
6. Base plus Index Register addressing mode: The effective address of data is formed, in
this addressing mode, by adding content of a base register (any one of BX or BP) to the
content of an index register (any one of SI or DI). The default segment register may be ES or
DS.
Example : MOV CL, [BX+SI]
Here, BX is the base register and SI is the index register. The effective address is computed
as 10H*DS+[BX]+[SI].
7. Base plus Index Relative addressing mode: The effective address is formed by adding
an 8 or 16-bit displacement with the sum of contents of any one of the base registers (BX or
BP) and any one of the index registers, in a default segment.
Example : MOV DL,[BX+SI+50H]
Here, 50H is an immediate displacement, BX is a base register and SI is an index register.
The effective address of data is computed as 10H*DS+[BX]+[SI]+50H.
8. String Addressing mode: The segment register DS and the index register SI are used for
source string whereas fro destination string , the segment register ES and the index
register DI are used. If direction flag DF=0, both SI and DI are incremented and If DF=1,
both Si and Di are decremented.
Example: MOVSB