I am trying to assign variable to register here is the code:

```
       ORG 100h

        var1 DB 10  ;
        var2 DB 20  ;

        MOV BX,var1 ; error : operands do not match: 16 bit register and 8 bit address
RET
END

```

But if swap the 4th line with:

```
MOV BL, var1;

```

it works. So my question is **why can’t** I move **8 bit variable** into **much larger 16 bit register**? 

I have already referred [this](https://stackoverflow.com/questions/24274265/error-operands-do-not-match-16-bit-and-8-bit-register-in-assembly-language), [this](https://stackoverflow.com/questions/31066039/assembly-emu8086-not-allowing-moving-of-bytes-into-8-bit-registers) and [this](https://stackoverflow.com/questions/15540450/how-can-i-move-an-8-bit-address-into-a-16-bit-register-in-x86-assembly) OP but it does not answer my question.

**NOTE:**

1. I am using emu8086 assembler
2. I am new to assembly language so I apologise if it's a stupid question.