To work with 8085 microprocessor, we should have clear idea on addressing mode of 8085 microprocessor. Addressing mode of 8085 microprocessor tells us by using the assembly language instruction that how can we process or address the data? Each instruction indicates an operation to be performed on certain data. There are various methods to specify the data for the instructions, known as ‘addressing modes’. But my suggestion is before going through that you may read “Internal architecture of 8085 microprocessor” that also.
There are five addressing modes in 8085 microprocessor. These are:
- Direct addressing
- Register addressing
- Register indirect addressing
- Immediate addressing
- Implicit addressing.
The examples for each type of addressing mode are given below:
In this mode, as name suggest the operand is specified within the instruction itself directly after opcode.
Examples of Direct Addressing mode type are: LDA 4000H, STA 5513H, etc.
(i) LDA address
This is mnemonic for Loads the accumulator direct. It transfers the content stored in the addressed memory location (given by address) to accumulator.
[A ] ← [MA address]
No flag is affected in this instruction. It is three byte instruction.
For example if 2AH data is stored in memory location 2500H before the execution of
LDA 2500H instruction, then after the execution of this instruction, the data 2AH will be
transferred to accumulator.
[A ]← 2A
(ii) STA address
This is mnemonic for Stores the accumulator direct. It transfers the content stored
in the accumulator to addressed memory location (given by address).
[Maddress ] ← [A]
No flag is affected in this instruction. It is also three byte instruction.
For example if 16H data is stored in the accumulator before the execution of STA
2100H instruction, then after the execution of this instruction, the data 16H will be
transferred to the addressed memory location.
[M2100 ] ←16
IN/OUT instructions (like IN PORT C, OUT PORT B, etc.) also falls under this category.
In this mode of addressing, the operand are in the general purpose registers. So after opcode here you find the general purpose registers.
Examples are: MOV A, B ; ADD D, etc.
MOV reg1, reg2 (Move Register)
where reg1 = A, B, C, D, E, H or L
reg2 = A, B, C, D, E, H or L
This instruction copies (transfers) the content stored in reg2 to reg1.
[reg ] ← [reg21 ]
Register Indirect Addressing:
These instructions utilize 1-byte. In this mode, instead of specifying a register, a register pair is specified to accommodate the 16-bit address of the operand. For register indirect addressing, HL register pair is specified to accommodate the 16-bit address of the operand.
Examples of this mode of addressing are MOV A, M; ADD M.
MOV reg, M (Moves register from memory)
where reg = A, B, C, D, E, H or L
This instruction is indirect read instruction. It moves / copies the data stored in
memory location whose address is given in H-L register pair, to the given register.
[reg ] ← [MHL ]
The operand is specified in the instruction in this mode. Here, the operand address is not specified. That means specific data which have to process is on the followed by opcode.
Examples of Immediate Addressing mode are MVI A, 07; ADI 0F.
The format for immediate data transfer instructions is
MVI reg, data (Move Immediate)
where reg = A, B, C, D, E, H, L orM
This instruction transfers the given data to the register (reg).
[reg ]← data
In this mode of addressing, the operand is fully absent. Examples of Implicit Addressing are RAR, RAL, CMA, etc. mainly this type addressing used in machine controlling.