The register direct or indirect addressing modes can be used to access data stored in RAM or registers of the 8051 microcontroller.
​RAM in the 8051 has 128 bytes and has addresses 00 to 7FH. RAM locations 00 - 1FH are assigned to the register banks and stack. RAM locations 20 - 2FH are set aside as bit-addressable space to save single bit data. RAM locations 30 - 7FH are available as a place to save byte sized data.
The entire 128 bytes of RAM can be accessed using direct addressing mode. The direct address is most often used to access RAM locations 30 - 7FH. There is no other or alternate name for other RAM locations except the register banks locations are accessed by the register names of R0 - R7, but there is no such name for other RAM locations. The data is in a RAM memory location who address is known, and this address is given as a part of the instruction, in the case of direct address mode. Contrast this with the immediate addressing mode in which the operand itself is provided with the instruction. The "#" sign distinguishes between the two modes.
The above example can make understand the importance of "#" sign in 8051 instructions.
It is resier to use the names R0 - R7 than their memory addresses, RAM locations 30H to 7FH cannot be accessed in any other way then their addresses, since they have no names.