4.3 Expressions using destination address of expression

  --------------------------------------------------------

 

      If the right part of an expression contains a variable which is also a

  destination such expressions give different results depending on whether

  the destination is a register or variable memory. This is related to the

  fact that when an expression is calculated in variable memory the

  calculation is first done to register EAX, AX, or AL and only after this is

  the result written to the destination. If the destination is a register,

  however, its value will change after each calculation is done. For example:

 

  int var;

    var = BX = 2;

    var = 3 + var; // the result is 5

    BX = 3 + BX;   // the result is 6