2 minute read

6.8. IDIV: división entera con signo

Si el divisor es de 32 bits, el funcionamiento es similar al caso anterior, pero se utiliza el par de registros EDX:EAX; la parte menos significativa del dividendo se coloca en EAX y la parte más significativa, en EDX. El cociente de la división queda en EAX y el resto, en EDX.

Si el divisor es de 64 bits, el funcionamiento es parecido a los dos casos anteriores, pero se utiliza el par de registros RDX:RAX; la parte menos significativa del dividendo se coloca en RAX y la parte más significativa, en RDX. El cociente de la división queda en RAX y el resto, en RDX.

Advertisement

Operación

Si fuente es de 8 bits: AL = AX / fuente, AH = AX mod fuente

Si fuente es de 16 bits: AX = DX:AX / fuente, DX = DX:AX mod fuente

Si fuente es de 32 bits: EAX = EDX:EAX / fuente, EDX = EDX:EAX mod fuente

Si fuente es de 64 bits: RAX = RDX:RAX / fuente, RDX = RDX:RAX mod fuente

Bits de resultado modificados

OF, SF, ZF, AF, PF, CF

La instrucción DIV no deja información a los bits de resultado, pero estos quedan indefinidos.

Formatos válidos

DIV reg

DIV tamaño mem

Ejemplos DIV R8B ; AX / R8B => Cociente en AL; resto en AH DIV R8W ; DX:AX / R8W => Cociente en AX; resto en DX DIV ECX ; EDX:EAX / ECX => Cociente en EAX; resto en EDX DIV QWORD [R9] ; RDX:RAX / QWORD [R9] => Cociente en RAX, resto en RDX

6.8. IDIV: división entera con signo

IDIV fuente

Divide el dividendo implícito entre el divisor explícito (fuente) considerando el signo de los operandos. El funcionamiento es idéntico al de la división sin signo.

Si el divisor es de 8 bits, se considera como dividendo implícito AX.

El cociente de la división queda en AL y el resto, en AH.

Si el divisor es de 16 bits, se considera como dividendo implícito el par de registros DX:AX; la parte menos significativa del dividendo se coloca en AX y la parte más significativa, en DX. El cociente de la división queda en AX y el resto, en DX.

Si el divisor es de 32 bits, el funcionamiento es similar al caso anterior, pero se utiliza el par de registros EDX:EAX; la parte menos significativa del dividendo se coloca en EAX, y la parte más significativa, en EDX. El cociente de la división queda en EAX y el resto, en EDX.

Si el divisor es de 64 bits, el funcionamiento es parecido a los dos casos anteriores, pero se utiliza el par de registros RDX:RAX; la parte menos significativa del dividendo se coloca en RAX y la parte más significativa, en RDX. El cociente de la división queda en RAX y el resto, en RDX.

Operación

Si fuente es de 8 bits: AL = AX / fuente, AH = AX mod fuente

Si fuente es de 16 bits: AX = DX:AX / fuente, DX = DX:AX mod fuente

Si fuente es de 32 bits: EAX = EDX:EAX / fuente, EDX = EDX:EAX mod fuente

Si fuente es de 64 bits: RAX = RDX:RAX / fuente, RDX = RDX:EAX mod fuente

Bits de resultado modificados

OF, SF, ZF, AF, PF, CF

La instrucción IDIV no deja información a los bits de resultado, pero estos quedan indefinidos.

Formatos válidos

IDIV reg

IDIV tamaño mem

This article is from: