Addressing Modes– The term addressing modes refers to the way in which the operand of an instruction is specified. The addressing mode specifies a rule for interpreting or modifying the address field of the instruction before the operand is actually executed.
Addressing modes for 8086 instructions are divided into two categories:
1) Addressing modes for data
2) Addressing modes for branch
The 8086 memory addressing modes provide flexible access to memory, allowing you to easily access variables, arrays, records, pointers, and other complex data types. The key to good assembly language programming is the proper use of memory addressing modes.
An assembly language program instruction consists of two parts
The memory address of an operand consists of two components:
IMPORTANT TERMS
- Starting address of memory segment.
- Effective address or Offset: An offset is determined by adding any combination of three address elements: displacement, base and index.
- Displacement: It is an 8 bit or 16 bit immediate value given in the instruction.
- Base: Contents of base register, BX or BP.
- Index: Content of index register SI or DI.
According to different ways of specifying an operand by 8086 microprocessor, different addressing modes are used by 8086.
Addressing modes used by 8086 microprocessor are discussed below:
- Implied mode:: In implied addressing the operand is specified in the instruction itself. In this mode the data is 8 bits or 16 bits long and data is the part of instruction.Zero address instruction are designed with implied addressing mode.
Example: CLC (used to reset Carry flag to 0)
- Immediate addressing mode (symbol #):In this mode data is present in address field of instruction .Designed like one address instruction format.
Note:Limitation in the immediate mode is that the range of constants are restricted by size of address field.Example: MOV AL, 35H (move the data 35H into AL register)
- Register mode: In register addressing the operand is placed in one of 8 bit or 16 bit general purpose registers. The data is in the register that is specified by the instruction.
Here one register reference is required to access the data.Example: MOV AX,CX (move the contents of CX register to AX register)
- Register Indirect mode: In this addressing the operand’s offset is placed in any one of the registers BX,BP,SI,DI as specified in the instruction. The effective address of the data is in the base register or an index register that is specified by the instruction.
Here two register reference is required to access the data.
The 8086 CPUs let you access memory indirectly through a register using the register indirect addressing modes.MOV AX, [BX](move the contents of memory location s addressed by the register BX to the register AX)
- Auto Indexed (increment mode): Effective address of the operand is the contents of a register specified in the instruction. After accessing the operand, the contents of this register are automatically incremented to point to the next consecutive memory location.(R1)+.
Here one register reference,one memory reference and one ALU operation is required to access the data.
Example:Add R1, (R2)+ // OR R1 = R1 +M[R2] R2 = R2 + d
Useful for stepping through arrays in a loop. R2 – start of array d – size of an element
- Auto indexed ( decrement mode): Effective address of the operand is the contents of a register specified in the instruction. Before accessing the operand, the contents of this register are automatically decremented to point to the previous consecutive memory location. –(R1)
Here one register reference,one memory reference and one ALU operation is required to access the data.
Example:
Add R1,-(R2) //OR R2 = R2-d R1 = R1 + M[R2]
Auto decrement mode is same as auto increment mode. Both can also be used to implement a stack as push and pop . Auto increment and Auto decrement modes are useful for implementing “Last-In-First-Out” data structures.
Here only one memory reference operation is required to access the data.
Example:ADD AL,[0301] //add the contents of offset address 0301 to AL
1st reference to get effective address.
2nd reference to access the data.
Based on the availability of Effective address, Indirect mode is of two kind:
- Register Indirect:In this mode effective address is in the register, and corresponding register name will be maintained in the address field of an instruction.
Here one register reference,one memory reference is required to access the data. - Memory Indirect:In this mode effective address is in the memory, and corresponding memory address will be maintained in the address field of an instruction.
Here two memory reference is required to access the data.
Example:MOV AX, [SI +05]
Example: ADD AX, [BX+SI]
Based on Transfer of control, addressing modes are:
- PC relative addressing mode: PC relative addressing mode is used to implement intra segment transfer of control, In this mode effective address is obtained by adding displacement to PC.
EA= PC + Address field value PC= PC + Relative value.
- Base register addressing mode:Base register addressing mode is used to implement inter segment transfer of control.In this mode effective address is obtained by adding base register value to address field value.
EA= Base register + Address field value. PC= Base register + Relative value.
Note:
- PC relative nad based register both addressing modes are suitable for program relocation at runtime.
- Based register addressing mode is best suitable to write position independent codes.
Ques. Write a short note on relative addressing mode and indirect addressing mode.
OR
Explain the following addressing modes with the help of an example each:
I. Direct
II. Register indirect
III. Implied
IV. Immediate
V. Indexed
(AKTU 2014-15, Marks 10)
Answer :
1. Direct:In this mode,effective address is equal to the address part of the instruction.Load R1, 1000 is interpreted as R1 ← [1000]
2. Register Indirect: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.AC ← AC + [[R]]
3. Implied:In this mode,the operand is specified in the instruction itself.Complement Accumulator
4. Immediate:In this mode,operands are in the registers that reside within the CPU.ADD 10(will increment the value stored in the accumulator by 10.)
5. Indexed:In this mode,the content of the address register is added to the address part of instruction to obtain the effective address.It is a special register that contains an index value.And the effective address is denoted by EA = X + (R)
6. Register Direct Addressing:The instruction which uses processor registers to represent operands is the instruction in register addressing mode.EA=R.ADD R4,R3
7. Relative Addressing Mode:It is used to load a register with a value stored in program memory a short distance away from the current instruction.
Ques. What is the difference between implied and immediate addressing modes ? Explain with an example.
Answer :
Ques. Describe auto increment and auto decrement addressing modes with proper examples?
Answer :
Auto Increment addressing modes:
1. This is similar to Register Indirect mode,except that register is incremented after its value is used to access memory.
2. After operand addressing,the contents of the register is incremented.
3. Symbolically it is represented as below: (R)+
4. example:ADD (R2)+,R0
Auto Decrement addressing modes:
1. In this mode,first the value is decremented and then operand value is fetched from the memory.
2. Before operand addressing,the contents of the register is decremented.
3. Symbolically it is presented as -(R)
4. example: ADD -(R2),R0
Ques. How addressing mode is significant for referring to memory? List and explain different types of addressing modes.
AKTU 206-17, Marks 15
Answer :
Addressing Modes specifies the way,effective address of an operand is represented in the instruction.
Effective address is the address of the exact memory location where the value of the operand is present.
Types of Addressing Modes:
1. Direct:In this mode,effective address is equal to the address part of the instruction.Load R1, 1000 is interpreted as R1 ← [1000]
2. Register Indirect: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.AC ← AC + [[R]]
3. Implied:In this mode,the operand is specified in the instruction itself.Complement Accumulator
4. Immediate:In this mode,operands are in the registers that reside within the CPU.ADD 10(will increment the value stored in the accumulator by 10.)
5. Indexed:In this mode,the content of the address register is added to the address part of instruction to obtain the effective address.It is a special register that contains an index value.And the effective address is denoted by EA = X + (R)
6. Register Direct Addressing:The instruction which uses processor registers to represent operands is the instruction in register addressing mode.EA=R.ADD R4,R3
7. Relative Addressing Mode:It is used to load a register with a value stored in program memory a short distance away from the current instruction.
0 Comments