BiD 08
BiD 08
Nizamettin AYDIN
[email protected]
http://www.yildiz.edu.tr/~naydin
Addressing Modes
• Immediate
• Direct
• Indirect
• Register
• Register Indirect
• Displacement (Indexed)
• Stack
Immediate Addressing
Instruction
Opcode Address A
Memory
Operand
Indirect Addressing (1)
• 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
Indirect Addressing Diagram
Instruction
Opcode Address A
Memory
Pointer to operand
Operand
Register Addressing (1)
• Operand is held in register named in address
field
• 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
Register Addressing Diagram
Instruction
Opcode Register Address R
Registers
Operand
Register Indirect Addressing
Instruction
Opcode Register Address R
Memory
Register
s
• EA = A + (R)
• Address field hold two values
—A = base value
—R = register that holds displacement
—or vice versa
Displacement Addressing Diagram
Instruction
Opcode Register R Address A
Memory
Register
s
• 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++
Combinations
• Postindex
• EA = (A) + (R)
• Preindex
• EA = (A+(R))
Stack Addressing