It's saying that EDX contains the address. That is, EDX is a pointer into memory. The []
is indicating that the assembler should choose the instruction opcode/addressing-mode that will dereference EDX
and load the word of data at that location in memory into EAX. In C-like pseudocode:
eax = eax + *(uint32_t *)edx;
EDX, being a register, does not itself have an address - that concept is meaningless.
Your second example (add eax, edx
) is something like:
eax = eax + edx;
Memory isn't accessed at all.