DIV Instruction


The DIV (unsigned divide) instruction performs 8-, 16-, or 32-bit unsigned integer division.

The single register or memory operand is the divisor. The formats are on the right:  
 Dividend   Divisor   Quotient   Remainder 
AX r/m8 AL AH
DX:AX r/m16 AX DX
EDX:EAX r/m32 EAX EDX

DIV — Unsigned Divide
Usage: div src

Flag O D I S Z A P C
Result *     ? ? ? ? ?

Unsigned binary division of accumulator by source. If the source divisor is a byte value then AX is divided by “src” and the quotient is placed in AL and the remainder in AH. If source operand is a word value, then DX:AX is divided by “src” and the quotient is stored in AX and the remainder in DX.
Clocks
Operands 286 386 486 Size Bytes
reg8 14 14 16 2
reg16 22 22 24 2
reg32   38 40 2
mem8 17 17 16 2-4
mem16 25 25 24 2-4
mem32   41 40 2-4

 8-Bit Division   16-Bit Division   32-Bit Division 

 
 .data

 
 x  BYTE  40

 
 y  BYTE  03

 
 .code

 
 movzx  eax, x

 
 div    y

 
 call   WriteHex

 
 .data

 
 x  WORD  601h

 
 y  WORD  20h

 
 .code

 
 mov   dx, 0

 
 mov   ax, x

 
 mov   bx, y

 
 div   bx

 
 call  DumpRegs

 
 .data

 
 x  QWORD  800010000h

 
 y  DWORD  20000h

 
 .code

 
 mov  edx, DWORD PTR x+4

 
 mov  eax, DWORD PTR x

 
 div  y

 
 call DumpRegs
 Output   Output   Output 
 



  AX =   DX =



  EAX =
  EDX =





      “I’m not arguing, I’m just explaining why I’m right.”    
      ― Unknown