OK now it makes a little bit more sense.
To write an assembler is not such an easy task, at least to encode correct machine code.
In some cases even if a full specified instruction is present there could be more than one legal encoding.
Anyway going back to your question consider that in assembly there can be explicit or implicit operands and operands sizes.
In case of the instruction:
mov eax, 123
It is not fully qualified, but we can get the implicit operand size from the explicit operand. This instruction moves in a 32bits register, the explicit operand, a value. This value must be of same size, so it is a 32bits integer. In 'C' language it would be an 'int'.
In almost all instructions you can extrapolate the operands size from explicit operand. In cases where you can't the assembler use meta qualifiers to make it clear.
I.e.
movsx eax, byte ptr[var];
The instruction movsx load a register with a sign extended value of different size, in our specific case the destination is the 32bits register eax, but the operand is a byte.
Some assemblers allows unqualified types also where there could be more than one operand size, but in that case it must be clearly stated in in the manual to which operand size the assembler will default...