In Intel assembler syntax, there is no explicit mention of the operand size. When you say mov eax, 0
, it's clear that a 32-bit operand is needed (since eax
is 32 bit wide), and mov al, 0
implies 8 bits.
But when you dereference a memory location, there is no way to infer the operand size, so you have to specify it explicitly by saying byte ptr
, word ptr
, dword ptr
or quad ptr
, for 8, 16, 32 and 64 bit operands, respectively.
So your instruction is comparing one byte (8 bits) at the memory addressed by the value of eax
with 0.