name db 'zara ali'
is just a shorthand for
name db 'z', 'a', 'r', 'a', ' ', 'a','l','i'
that is another shorthand for
name db 'z'
db 'a'
db 'r'
db 'a'
db ' '
db 'a'
db 'l'
db 'i'
thus that's a sequence of bytes, the address of the first one is given the name name
.
MOV ecx, name
has different semantics in different assemblers.
In NASM it doesn't read the variable name
it stores the value of the symbol name
in ecx
- it is equivalent to the TASM/MASM notation
mov ecx, OFFSET name
lea ecx, name ;This is an abuse of notation but valid in TASM
In MASM/TASM it reads the DWORD (implied by the use of a DWORD register like ecx
) at the address name
, thus reading the first four bytes (zara
).
It is equivalent of mov ecx, [name]
or mov ecx, DWORD [name]
in NASM.