idiv{bwl} r/m[8|16|32]
AX r/m8 -> AL
DX:AX r/m16 -> AX
EDX:EAX r/m32 -> EAX
idiv executes signed division. idiv divides a 16-, 32-, or 64-bit register value (dividend) by a register or memory byte, word, or long (divisor). The size of the divisor (8-, 16- or 32-bit operand) determines the particular register used as the dividend, quotient, and remainder.
Table 2-7 idiv Register Assignment
Divisor Operand Size |
Dividend |
Quotient |
Remainder |
---|---|---|---|
byte |
AX |
AL |
AH |
word |
DX:AX |
AX |
DX |
long |
EDX:EAX |
EAX |
EDX |
If the resulting quotient is too large to fit in the destination, or if the divisor is 0, an Interrupt 0 is generated. Non-integral quotients are truncated toward 0. The remainder has the same sign as the dividend; the absolute value of the remainder is always less than the absolute value of the divisor.
Perform a 16-bit signed divide of the DX:AX register by the contents of the effective address (addressed by the EDI register plus an offset of 4) and store the quotient in the AX register
divw 4(%edi)