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