Thursday 5 January 2012

Addressing Modes


  • Immediate

  • Direct

  • Indirect

  • Register

  • Register Indirect

  • Displacement (Indexed)

  • Stack


Immediate Addressing



  • Operand is 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 Addressing



  • 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



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



Register 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



Relative Addressing



  • A version of displacement addressing

  • R = Program counter, PC

  • EA = A + (PC)

  • i.e. get operand from A cells from current location pointed to by PC

  • locality of reference & cache usage


Base-Register Addressing



  • A holds displacement

  • R holds pointer to base address

  • R may be explicit or implicit

  • e.g. segment registers in 80x86


Indexed Addressing



  • A = base

  • R = displacement

  • EA = A + R

  • Good for accessing arrays


—   EA = A + R


—   R++



Instruction Formats



  • Layout of bits in an instruction

  • Includes opcode

  • Includes (implicit or explicit) operand(s)

  • Usually more than one instruction format in an instruction set


Instruction Length



  • Affected by and affects:


—   Memory size


—   Memory organization


—   Bus structure


—   CPU complexity


—   CPU speed




  • Trade off between powerful instruction repertoire and saving space

No comments:

Post a Comment