If we use an instruction with an immediate-operand, then we have to specify how many bytes our operand will be obtain. Therefore we have to use a keyword like byte, word, or dword for to inform the assembler how many following bytes of the ram location we want to acess.
mov byte ptr[bx+si], 01h
mov word ptr[bx+si], 0001h
mov dword ptr[bx+si], 00000001h
But if we use a register as an operand (with it known among of bytes), then we do not need it to specify (for to become a smaller listing with an easier overview).
mov [bx+si], al
mov al, [bx+si]
mov [bx+si], ax
mov ax, [bx+si]
Exception with MASM and with a DWORD-Register as an operand.
mov dword ptr[bx+si], eax
mov eax, dword ptr[bx+si]
Dirk