Direct addressing provides the actual memory address of the operand in the instruction,
Whereas indirect addressing provides, as part of the instruction, a pointer to a memory location.
For example,the instruction Load X interpreted using direct addressing would go to memory location X and load the value found there.