Given the following code:
L1 db \"word\", 0
mov al, [L1]
mov eax, L1
What do the brackets ([L1]) represent?
As with many assembler languages, this means indirection. In other words, the first mov
loads al
with the contents of L1
(the byte 'w'
in other words), not the address.
Your second mov
actually loads eax
with the address L1
and you can later dereference that to get or set its content.
In both those cases, L1
is conceptually considered to be the address.