Intel 253666-024US User Manual

Page 501

Advertising
background image

Vol. 2A 3-455

INSTRUCTION SET REFERENCE, A-M

IDIV—Signed Divide

THEN

#DE; (* Divide error *)

ELSE

EAX ← temp;

EDX ← EDXE:AX SignedModulus SRC;

FI;

FI;

ELSE IF OperandSize = 64 (* Doublequadword/quadword operation *)

temp ← RDX:RAX / SRC; (* Signed division *)

IF (temp > 7FFFFFFFFFFFH) or (temp < 8000000000000000H)

(* If a positive result is greater than 7FFFFFFFFFFFH
or a negative result is less than 8000000000000000H *)

THEN

#DE; (* Divide error *)

ELSE

RAX ← temp;

RDX ← RDE:RAX SignedModulus SRC;

FI;

FI;

FI;

Flags Affected

The CF, OF, SF, ZF, AF, and PF flags are undefined.

Protected Mode Exceptions

#DE

If the source operand (divisor) is 0.
The signed result (quotient) is too large for the destination.

#GP(0)

If a memory operand effective address is outside the CS, DS,

ES, FS, or GS segment limit.

If the DS, ES, FS, or GS register is used to access memory and it

contains a NULL segment selector.

#SS(0)

If a memory operand effective address is outside the SS

segment limit.

#PF(fault-code)

If a page fault occurs.

#AC(0)

If alignment checking is enabled and an unaligned memory

reference is made while the current privilege level is 3.

#UD

If the LOCK prefix is used.

Real-Address Mode Exceptions

#DE

If the source operand (divisor) is 0.

The signed result (quotient) is too large for the destination.

Advertising