Addressing Modes & Types of Addressing Modes
Addressing modes: The different ways of specifying the location of an operand in instruction are called addressing modes.
Types of Addressing Modes: In computer architecture, there are the following types of addressing modes:
- Implied / Implicit Addressing Mode
- Stack Addressing Mode
- Immediate Addressing Mode
- Direct Addressing Mode
- Indirect Addressing Mode
- Register Direct Addressing Mode
- Register Indirect Addressing Mode
- Relative Addressing Mode
- Indexed Addressing Mode
- Base Register Addressing Mode
- Auto-Increment Addressing Mode
- Auto-Decrement Addressing Mode
(Types of Addressing Modes)
In this article, we will discuss these addressing modes in detail.
1. Implied Addressing Mode:
In this addressing mode,
- The definition of the instruction itself specifies the operands implicitly.
- It is also called an implicit addressing mode.
Examples:
- The instruction “Complement Accumulator” is an implied mode of instruction.
- In a stack-organized computer, Zero Address Instructions have implied mode instructions.
2. Stack Addressing Mode:
In this addressing mode,
- The operand is contained at the top of the stack.
Example:
- This instruction simply pops out two symbols contained at the top of the stack.
- The addition of those two operands is performed.
- The result so obtained after addition is pushed again at the top of the stack.
3. Immediate Addressing Mode:
In this addressing mode,
- The operand is specified in the instruction explicitly.
- Instead of the address field, an operand field is present that contains the operand.
Examples:
- ADD 10 will increment the value stored in the accumulator by 10.
- MOV R #20 initializes register R to a constant value of 20.
4. Direct Addressing Mode:
In this addressing mode,
- The address field of the instruction contains the effective address of the operand.
- Only one reference to memory is required to fetch the operand.
- It is also called an absolute addressing mode.
Example:
- ADD X will increment the value stored in the accumulator by the value stored at memory location X.
AC ← AC + [X]
5. Indirect Addressing Mode:
In this addressing mode,
- The address field of the instruction specifies the address of memory location that contains the effective address of the operand.
- Two references to memory are required to fetch the operand.
Example:
- ADD X will increment the value stored in the accumulator by the value stored at the memory location specified by X.
AC ← AC + [[X]]
6. Register Direct Addressing Mode:
In this addressing mode,
- The operand is contained in a register set.
- The address field of the instruction refers to a CPU register that contains the operand.
- No reference to memory is required to fetch the operand.
Example:
- ADD R will increment the value stored in the accumulator by the content of register R.
AC ← AC + [R]
NOTE:
- This addressing mode is similar to the direct addressing mode.
- The only difference is address field of the instruction refers to a CPU register instead of the main memory.
7. Register Indirect Addressing Mode:
In this addressing mode,
- The address field of the instruction refers to a CPU register that contains the effective address of the operand.
- Only one reference to memory is required to fetch the operand.
Example:
- ADD R will increment the value stored in the accumulator by the content of the memory location specified in register R.
AC ← AC + [[R]]
NOTE:
- This addressing mode is similar to the indirect addressing mode.
- The only difference is address field of the instruction refers to a CPU register.
8. Relative Addressing Mode:
In this addressing mode,
- Effective address of the operand is obtained by adding the content of the program counter with the address part of the instruction.
Effective Address = Content of Program Counter + Address part of the instruction
NOTE:
- Program counter (PC) always contains the address of the next instruction to be executed.
- After fetching the address of the instruction, the value of the program counter immediately increases.
- The value increases irrespective of whether the fetched instruction has been completely executed or not.
9. Indexed Addressing Mode:
In this addressing mode,
- Effective address of the operand is obtained by adding the content of the index register with the address part of the instruction.
Effective Address = Content of Index Register + Address part of the instruction
10. Base Register Addressing Mode:
In this addressing mode,
- Effective address of the operand is obtained by adding the content of the base register with the address part of the instruction.
Effective Address = Content of Base Register + Address part of the instruction
11. Auto-Increment Addressing Mode:
- This addressing mode is a special case of Register Indirect Addressing Mode where-
Effective Address of the Operand = Content of Register
In this addressing mode,
- After accessing the operand, the content of the register is automatically incremented by step size ‘d’.
- Step size ‘d’ depends on the size of the operand accessed.
- Only one reference to memory is required to fetch the operand.
Example:
Assume operand size = 2 bytes.
Here,
- After fetching operand 6B, the instruction register RAUTO will be automatically incremented by 2.
- Then, updated value of RAUTO will be 3300 + 2 = 3302.
- At memory address 3302, the next operand will be found.
NOTE:
In auto-increment addressing mode,
- First, the operand value is fetched.
- Then, the instruction register RAUTO value is incremented by step size ‘d’.
12. Auto-Decrement Addressing Mode:
- This addressing mode is again a special case of Register Indirect Addressing Mode where-
Effective Address of the Operand = Content of Register – Step Size
In this addressing mode,
- First, the content of the register is decremented by step size ‘d’.
- Step size ‘d’ depends on the size of the operand accessed.
- After decrementing, the operand is read.
- Only one reference to memory is required to fetch the operand.
Example:
Assume operand size = 2 bytes.
Here,
- First, the instruction register RAUTO will be decremented by 2.
- Then, the updated value of RAUTO will be 3302 – 2 = 3300.
- At memory address 3300, the operand will be found.
NOTE:
In auto-decrement addressing mode,
- First, the instruction register RAUTO value is decremented by step size ‘d’.
- Then, the operand value is fetched.
Comments
Post a Comment
Please do not enter any spam link in the comment box.