Addressing Modes
Addressing Modes
Addressing Modes
Reference:
Computer Organization and
Architecture by William Stallings
8th Edition
Addressing Modes
• How the operands are specified in an
instruction
• The trade-off deals with
—Address range and/or addressing flexibility
—number of memory references
—complexity in address calculation
• Immediate
• Direct
• Indirect
• Register
• Register Indirect
• Displacement (Indexed)
• Stack
Immediate Addressing
Instruction
Opcode Address A
Memory
Operand
Indirect Addressing
• Memory cell pointed to by the address
field of instruction contains the address of
the operand
• EA = (A)
—Look in A, find address (A) and look there for
operand
• e.g. ADD (A)
—Add contents of cell pointed by the contents of
A to accumulator
Indirect Addressing contd.
Instruction
Opcode Address A
Memory
Pointer to operand
Operand
Register Addressing
Operand
Register Indirect Addressing
Instruction
Opcode Register Address R
Memory
Registers
• EA = A + (R)
• Address field holds two values
—A = base value
—R = register that holds displacement
—or vice versa
Instruction
Opcode Register R Address A
Memory
Registers
Mode Algorithm
Immediate Operand = A
Register Operand LA = R
Displacement LA = (SR) + A
Base LA = (SR) + (B)
Base with Displacement LA = (SR) + (B) + A
Scaled Index with Displacement LA = (SR) + (I) ´ S + A
Base with Index and Displacement LA = (SR) + (B) + (I) + A
Base with Scaled Index and Displacement LA = (SR) + (I) ´ S + (B) + A
Relative LA = (PC) + A
LA = linear address
(X) = contents of X
SR = segment register
PC = program counter
A = contents of an address field in the instruction
R = register
B = base register
I = index register
S = scaling factor