The error is that the type is not clear. When the destination operand (here refers to es:[bx]) and the source operand (here refers to [bx]) are both indirectly addressed by registers, there is no standard to limit the type of the assigned value.
Usage restriction of MOV instruction: 1, source operand and destination operand can be bytes, words or doublewords, but they must be of the same type;
2. The source operand and the destination operand cannot be both memory operands;
For example, assume that the variable X_BYTE is defined by DB and the variable Y_WORD is defined by DW.
Correct: MOV X_BYTE, -5; Byte transfer instruction, -5(0FBH) to X_BYTE.
MOV Y_WORD, -5 ; Word transfer instruction, -5(0FFFBH) to Y_WORD.
Error: MOV X_BYTE, 300; The destination operand is out of range
MOV [BX], 30H ; Operand type cannot be determined.