Operation

(* COUNT is the second parameter *)
(temp)  COUNT;
WHILE (temp<> 0)
DO
IF instruction is SAL or SHL
THEN CF  high-order bit of r/m;
FI;
IF instruction is SAR or SHR
THEN CF  low-order bit of r/m;
FI;
IF instruction = SAL or SHL
THEN r/m  r/m * 2;
FI;
IF instruction = SAR
THEN r/m  r/m ;2 (*Signed divide, rounding toward negative infinity*);
FI;
IF instruction = SHR
THEN r/m  r/m / 2; (* Unsigned divide *);
FI;
temp  temp - 1;
OD;
* Determine overflow for the various instructions *)
IF COUNT = 1
THEN
IF instruction is SAL or SHL
THEN OF  high-order bit of r/m <> (CF);
FI;
IF instruction is SAR
THEN OF  0;
FI;
IF instruction is SHR
THEN OF  high-order bit of operand;
FI;
ELSE OF  undefined;
FI;


[Back: Description]
[Next: Flags Affected]