div

Divide signed

Divides signed integers: with three operands the quotient goes to $t1, with two it goes to LO and the remainder to HI.

Forms

  • div ,

Pseudo-instructions

The assembler turns these into one or more real instructions.

  • Set $t1 to ($t2 divided by $t3, integer division)

Operands

$t1
Any general-purpose register, $0 to $31, using its numeric or named spelling, such as $8 or $t0 ($zero is $0; $ra is $31).
$t2
A general-purpose register. It may be the same register as $t1.
$t3
A general-purpose register. It may be the same register as $t1.
imm
An immediate value: a signed 16-bit value (-32768 to 32767) or a 32-bit value (-2147483648 to 4294967295). The assembler chooses a supported encoding for the value and other operands; a pseudoinstruction may expand into several instructions.

Sets LO to the quotient and HI to the remainder. Division by zero produces undefined results with no exception. Use 'mflo' to get the quotient; 'mfhi' to get the remainder.

# Divide 23 by 5. Inspect LO: quotient 4; inspect HI: remainder 3.
li $t0, 23
li $t1, 5
div $t0, $t1
mflo $t2
mfhi $t3