4.7 Calculation in EAX/AX/AL register with a sign

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

 

      By default all calculations to registers are done using unsigned values.

 

  For instance:

 

    int a,b,c;

    AX = a * b / c ;

 

      Here the compiler generated the unsigned instructions 'div' and 'mul',

  since calculation was done using unsigned variables. If one instead writes:

 

    AX = int a * b / c ;

 

  then the compiler will generate the instructions 'idiv' and 'imul'.

 

      Note that for register AL one can use only the modifier 'char', for AX

  only 'int' and for EAX only 'long'. This is not necessary for the other

  registers.