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