title: Cannot move 8 bit address to 16 bit register
body: <p>I am trying to assign variable to register here is the code:</p>
  
  <pre><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
  </code></pre>
  
  <p>But if swap the 4th line with:</p>
  
  <pre><code>MOV BL, var1;
  </code></pre>
  
  <p>it works. So my question is <strong>why can’t</strong> I move <strong>8 bit variable</strong> into <strong>much larger 16 bit register</strong>? </p>
  
  <p>I have already referred <a href="https://stackoverflow.com/questions/24274265/error-operands-do-not-match-16-bit-and-8-bit-register-in-assembly-language">this</a>, <a href="https://stackoverflow.com/questions/31066039/assembly-emu8086-not-allowing-moving-of-bytes-into-8-bit-registers">this</a> and <a href="https://stackoverflow.com/questions/15540450/how-can-i-move-an-8-bit-address-into-a-16-bit-register-in-x86-assembly">this</a> OP but it does not answer my question.</p>
  
  <p><strong>NOTE:</strong></p>
  
  <ol>
  <li>I am using emu8086 assembler</li>
  <li>I am new to assembly language so I apologise if it's a stupid question.</li>
  </ol>