Addressing Modes
The way the operands are chosen during
program execution is dependent on the
addressing mode of the instructions.
The addressing mode specifies a rule for
interpreting or modifying the address field of the
1
The addressing mode specifies a rule for
interpreting or modifying the address field of the
instruction before the operand is actually
referenced.
Computers use addressing mode techniques for
the purpose of accommodating one or both of
the following provisions:
Addressing Modes
Computers use addressing mode techniques
for the purpose of accommodating one or both
of the following provisions:
2
1. to give programming versatility to the user by
providing such facilities as pointers to memory,
counters for loop control, indexing of data and
program relocation.
2. To reduce the number of bits in the addressing
field of the instruction.
Addressing Modes
Immediate
Direct
Indirect
3
Indirect
Register
Register Indirect
Displacement (Indexed)
Stack
Immediate Addressing
Operand is part of instruction
Operand = address field
e.g. ADD 5
4
e.g. ADD 5
Add 5 to contents of accumulator
5 is operand
No memory reference to fetch data
Fast
Limited range
Immediate Addressing Diagram
OperandOpcode
Instruction
5
Direct Addressing
Address field contains address of operand
Effective address (EA) = address field (A)
e.g. ADD A
Add contents of cell A to accumulator
6
Add contents of cell A to accumulator
Look in memory at address A for operand
Single memory reference to access data
No additional calculations to work out
effective address
Limited address space
Direct Addressing Diagram
Address AOpcode
Instruction
Memory
7
Operand
Indirect Addressing (1)
Memory cell pointed to by address field contains
the address of (pointer to) the operand
EA = (A)
8
Look in A, find address (A) and look there for operand
e.g. ADD (A)
Add contents of cell pointed to by contents of A to
accumulator
Indirect Addressing (2)
Large address space
2n where n = word length
May be nested, multilevel, cascaded
9
May be nested, multilevel, cascaded
e.g. EA = (((A)))
Draw the diagram yourself
Multiple memory accesses to find operand
Hence slower
Indirect Addressing Diagram
Address AOpcode
Instruction
Memory
10
Operand
Pointer to operand
Register Addressing (1)
Operand is held in register named in
address field
EA = R
11
EA = R
Limited number of registers
Very small address field needed
Shorter instructions
Faster instruction fetch
Register Addressing (2)
No memory access
Very fast execution
Very limited address space
Multiple registers helps performance
12
Multiple registers helps performance
Requires good assembly programming or
compiler writing
N.B. C programming
register int a;
Like Direct addressing
Register Addressing Diagram
Register Address ROpcode
Instruction
Registers
13
Operand
Register Indirect Addressing
Like indirect addressing
EA = (R)
Operand is in memory cell pointed to by
14
Operand is in memory cell pointed to by
contents of register R
Large address space (2n)
One fewer memory access than indirect
addressing
Register Indirect Addressing Diagram
Register Address ROpcode
Instruction
Memory
15
OperandPointer to Operand
Registers
Displacement Addressing
EA = A + (R)
Address field hold two values
A = base value
16
A = base value
R = register that holds displacement
or vice versa
Displacement Addressing Diagram
Register ROpcode
Instruction
Memory
Address A
17
OperandPointer to Operand
Registers
+
Relative Addressing
A version of displacement addressing
R = Program counter, PC
EA = A + (PC)
18
EA = A + (PC)
i.e. get operand from A cells from current
location pointed to by PC
Base-Register Addressing
A holds displacement
R holds pointer to base address
R may be explicit or implicit
19
R may be explicit or implicit
e.g. segment registers in 80x86
Indexed Addressing
A = base
R = displacement
EA = A + R
20
EA = A + R
Good for accessing arrays
EA = A + R
R++
Combinations
Postindex
EA = (A) + (R)
21
Preindex
EA = (A+(R))
(Draw the diagrams)
Stack Addressing
Operand is (implicitly) on top of stack
e.g.
ADD Pop top two items from stack
22
ADD Pop top two items from stack
and add

Addressing modes/Addressing Mode with illustration/ Addressing mode in 8086

  • 1.
    Addressing Modes The waythe operands are chosen during program execution is dependent on the addressing mode of the instructions. The addressing mode specifies a rule for interpreting or modifying the address field of the 1 The addressing mode specifies a rule for interpreting or modifying the address field of the instruction before the operand is actually referenced. Computers use addressing mode techniques for the purpose of accommodating one or both of the following provisions:
  • 2.
    Addressing Modes Computers useaddressing mode techniques for the purpose of accommodating one or both of the following provisions: 2 1. to give programming versatility to the user by providing such facilities as pointers to memory, counters for loop control, indexing of data and program relocation. 2. To reduce the number of bits in the addressing field of the instruction.
  • 3.
  • 4.
    Immediate Addressing Operand ispart of instruction Operand = address field e.g. ADD 5 4 e.g. ADD 5 Add 5 to contents of accumulator 5 is operand No memory reference to fetch data Fast Limited range
  • 5.
  • 6.
    Direct Addressing Address fieldcontains address of operand Effective address (EA) = address field (A) e.g. ADD A Add contents of cell A to accumulator 6 Add contents of cell A to accumulator Look in memory at address A for operand Single memory reference to access data No additional calculations to work out effective address Limited address space
  • 7.
    Direct Addressing Diagram AddressAOpcode Instruction Memory 7 Operand
  • 8.
    Indirect Addressing (1) Memorycell pointed to by address field contains the address of (pointer to) the operand EA = (A) 8 Look in A, find address (A) and look there for operand e.g. ADD (A) Add contents of cell pointed to by contents of A to accumulator
  • 9.
    Indirect Addressing (2) Largeaddress space 2n where n = word length May be nested, multilevel, cascaded 9 May be nested, multilevel, cascaded e.g. EA = (((A))) Draw the diagram yourself Multiple memory accesses to find operand Hence slower
  • 10.
    Indirect Addressing Diagram AddressAOpcode Instruction Memory 10 Operand Pointer to operand
  • 11.
    Register Addressing (1) Operandis held in register named in address field EA = R 11 EA = R Limited number of registers Very small address field needed Shorter instructions Faster instruction fetch
  • 12.
    Register Addressing (2) Nomemory access Very fast execution Very limited address space Multiple registers helps performance 12 Multiple registers helps performance Requires good assembly programming or compiler writing N.B. C programming register int a; Like Direct addressing
  • 13.
    Register Addressing Diagram RegisterAddress ROpcode Instruction Registers 13 Operand
  • 14.
    Register Indirect Addressing Likeindirect addressing EA = (R) Operand is in memory cell pointed to by 14 Operand is in memory cell pointed to by contents of register R Large address space (2n) One fewer memory access than indirect addressing
  • 15.
    Register Indirect AddressingDiagram Register Address ROpcode Instruction Memory 15 OperandPointer to Operand Registers
  • 16.
    Displacement Addressing EA =A + (R) Address field hold two values A = base value 16 A = base value R = register that holds displacement or vice versa
  • 17.
    Displacement Addressing Diagram RegisterROpcode Instruction Memory Address A 17 OperandPointer to Operand Registers +
  • 18.
    Relative Addressing A versionof displacement addressing R = Program counter, PC EA = A + (PC) 18 EA = A + (PC) i.e. get operand from A cells from current location pointed to by PC
  • 19.
    Base-Register Addressing A holdsdisplacement R holds pointer to base address R may be explicit or implicit 19 R may be explicit or implicit e.g. segment registers in 80x86
  • 20.
    Indexed Addressing A =base R = displacement EA = A + R 20 EA = A + R Good for accessing arrays EA = A + R R++
  • 21.
    Combinations Postindex EA = (A)+ (R) 21 Preindex EA = (A+(R)) (Draw the diagrams)
  • 22.
    Stack Addressing Operand is(implicitly) on top of stack e.g. ADD Pop top two items from stack 22 ADD Pop top two items from stack and add