Addressing Modes1

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 12

Addressing Modes-

The different ways of specifying the location of an operand in an instruction are called
as addressing modes.
Types of Addressing Modes-

In computer architecture, there are following types of addressing modes-

1. Implied Addressing Mode-


In this addressing mode,
 The definition of the instruction itself specify the operands implicitly.
 It is also called as implicit addressing mode.

Examples-

 The instruction “Complement Accumulator” is an implied mode instruction.


 In a stack organized computer, Zero Address Instructions are implied mode
instructions.
(since operands are always implied to be present on the top of the stack)

2. Stack Addressing Mode-

In this addressing mode,


 The operand is contained at the top of the stack.

Example-

ADD
 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 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 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 as 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
memory location specified by X.
AC ← AC + [[X]]

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-

It is interesting to note-
 This addressing mode is similar to direct addressing mode.
 The only difference is address field of the instruction refers to a CPU register
instead of 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
memory location specified in register R.
AC ← AC + [[R]]

NOTE-

It is interesting to note-
 This addressing mode is similar to 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 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 program counter
immediately increases.
 The value increases irrespective of whether the fetched instruction has
completely executed or not.

9. Indexed Addressing Mode-

In this addressing mode,


 Effective address of the operand is obtained by adding the content of index
register with the address part of the instruction.

Effective Address
= Content of Index Register + Address part of the instruction
Base Register Addressing Mode-

In this addressing mode,


 Effective address of the operand is obtained by adding the content of 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 operand accessed.
 Only one reference to memory is required to fetch the operand.

Example-
Assume operand size = 2 bytes.
Here,
 After fetching the 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 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, 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.

Applications of Addressing Modes-

Addressing Modes Applications

Immediate Addressing Mode  To initialize registers to a constant value

Direct Addressing Mode


and  To access static data
 To implement variables
Register Direct Addressing Mode

 To implement pointers because pointers


Indirect Addressing Mode are memory locations that store the
and address of another variable
 To pass array as a parameter because
Register Indirect Addressing Mode
array name is the base address and
pointer is needed to point the address

 For program relocation at run time i.e. for


position independent code
 To change the normal sequence of
Relative Addressing Mode
execution of instructions
 For branch type instructions since it
directly updates the program counter

 For array implementation or array


Index Addressing Mode addressing
 For records implementation

 For writing relocatable code i.e. for


relocation of program in memory even
Base Register Addressing Mode at run time
 For handling recursive procedures

Auto-increment Addressing Mode  For implementing loops


and
 For stepping through arrays in a loop
Auto-decrement Addressing Mode  For implementing a stack as push and
pop

You might also like