Thursday, 13 June 2013

Addressing Modes with examples

To reference a large range of locations in main memory, a variety of addressing technique are used. The common addressing modes are:
  • Immediate
  • Direct
  • Indirect
  • Register
  • Register indirect
  • Displacement (Indexed)
  • Stack

Types of Addressing modes:

Immediate Addressing:
   Instruction
  • operand is a part of instruction
  • operand = address field
  • e.g. ADD 5
    —Add 5 to contents of accumulator
    —5 is operand
  • No memory reference to fetch data
  • Fast
  • Limited range
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
    —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
Indirect Addresssing:

  • Memory cell pointed to by address field contains the address of (pointer to) the operand
  • EA = (A)
    —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
  • Large address space
  • 2n where n = word length
  • May be nested, multilevel, cascaded
    —e.g. EA = (((A)))
  • Multiple memory accesses to find operand
  • Hence slower
Register Addressing:

  • Operand is held in register named in address filed
  • EA = R
  • Limited number of registers
  • Very small address field needed
    —Shorter instructions
    —Faster instruction fetch
  • No memory access
  • Very fast execution
  • Very limited address space
  • Multiple registers helps performance
    —Requires good assembly programming or compiler writing
    —N.B. C programming
    –register int a;
Register Indirect Addressing:

  • C.f. indirect addressing
  • EA = (R)
  • Operand is in memory cell pointed to by contents of register R
  • Large address space (2n)
  • One fewer memory access than indirect addressing
Displacement Addressing:

  • EA = A + (R)
  • Address field hold two values
    —A = base value
    —R = register that holds displacement
    —or vice versa
Stack Addressing:
  • Operand is (implicitly) on top of stack
  • e.g.
    —ADD  Pop top two items from stack  and add
  • The stack mode of addressing is a form of implied addressing
  • the machine instructions need not include a memory reference but implicitly operate on top of stack.

No comments:

Post a Comment