8051 Addressing Modes
8051 has four addressing modes.
1. Immediate Addressing:
Data is immediately available in the instruction. For example -
ADD A, #77; Adds 77 (decimal) to A and stores in A
ADD A, #4DH; Adds 4D (hexadecimal) to A and stores in A MOV DPTR, #1000H;
Moves 1000 (hexadecimal) to data pointer
2. Bank Addressing or Register Addressing:
This way of addressing accesses the bytes in the current register bank. Data is available in the register specified in the instruction. The register bank is decided by 2 bits of Processor Status
Word (PSW). For example-
ADD A, R0; Adds content of R0 to A and stores in A
3. Direct Addressing:
The address of the data is available in the instruction. For example - MOV A, 088H; Moves content of SFR TCON (address 088H)to A
4. Register Indirect Addressing:
The address of data is available in the R0 or R1 registers as specified in the instruction. For example - MOV A, @R0 moves content of address pointed by R0 to A .
5. External Data Addressing:
Pointer used for external data addressing can be either R0/R1 (256 byte access) or DPTR (64kbyte access).
For example -
MOVX A, @R0; Moves content of 8-bit address pointed by R0 to A
MOVX A, @DPTR; Moves content of 16-bit address pointed by DPTR to A
6. External Code Addressing:
Sometimes we may want to store non-volatile data into the ROM e.g. look-up tables. Such data may require reading the code memory. This may be done as follows -
MOVC A, @A+DPTR; Moves content of address pointed by A+DPTR to A
MOVC A, @A+PC; Moves content of address pointed by A+PC to A