There are six ways to find the address of the storage unit of operands.
1. Immediate addressing
The operands to be found are binary or decimal numbers, which appear in the instruction and are prefixed with “#”
2. Register addressing
The operands are stored in the working registers R0 to R7, or in register B.
3. Direct addressing
Instruction gives the address of the operands directly.
4. Register indirect addressing
The contents of the register in the instruction are used as the address of the operands. The prefix “@” is used before the indirect addressing register in the instruction.
5. Index addressing
Operands address = variable address + base address
Base address register dptr or PC
Index register @ a
This addressing method is often used to access program memory and look up tables.
MOVA，@A + DPTR
6. Relative addressing
Add the address offset given in the instruction and the address of the unit where the instruction is located (PC content) to get the address where the real effective operands are stored.
JC60H； Let (PC) = 2000h,
Then when C = 1,
Destination address of transfer = PC) + 2 + 60