Please enable JavaScript.
Coggle requires JavaScript to display documents.
Instruction Sets: Addressing Modes and Formats, - Coggle Diagram
Instruction Sets:
Addressing Modes and Formats
Addressing Modes
Immediate
The value is directly available and used in an operation
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
The memory address is directly accessed
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
The memory address is accessed indirectly through a pointer
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
Multiple memory accesses to find operand
Hence slower *
Register
The operand is stored in a register
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
Register Indirect
The operand is accessed indirectly through a register
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 (Indexed)
The operand is accessed at a memory location calculated as an offset from a base address
EA = A + (R)
Address field hold two values
A = base value
R = register that holds displacement
or vice versa
Common displacement
Relative
Base-register
Indexing
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
c.f locality of reference & cache usage
Base-Register Addressing
A holds displacement
R holds pointer to base address
R may be explicit or implicit
EA = R + A
e.g. segment registers in 80x86
Indexed Addressing
A = base
R = displacement
EA = A + R
Good for accessing arrays
EA = A + (R)
R++
Post-index
EA = (A) + (R)
useful for accessing one of a number of blocks of data of a fixed format, e.g., process control block
Pre-index
EA = (A+(R))
is to construct a multiway branch table, i.e. a program may need to branch to one of multiple lines
Stack
The operand is accessed through the top of the stack
Operand is (implicitly) on top of stack
e.g. ADD
Pop top two items from stack and add
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
Allocation of Bits
Number of addressing modes
Number of operands
Register versus memory
Number of register sets
Address range
Address granularity
Variable-length opcodes
Minimum length of opcodes
Some instruction may have additional bits taken from the address/operand part (Micro instruction)