SP is the pointer to the stack, which is built on RAM, and the weight of internal RAM is 0~255, so only 8 bits are needed.
DPTR is a 16-bit register. When assigning a value to this data register, we divide it into upper 8 bits and lower 8 bits to access the register addressing mode.
Because it is 16 bit, we can use it to access 64K ROM space and 64K external RAM space.