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