To reference a large range of locations in main memory, a variety of
addressing technique are used. The common addressing modes are:
Instruction
- 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
- 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
- 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
- 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;
- 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
- EA = A + (R)
-
Address field hold two values—A = base value—R = register that holds displacement—or vice versa
- 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