División en lenguaje ensamblador
Para la división, la instrucción DIV (dividir) maneja datos sin signo y la IDIV (división entera) maneja datos con signo. Usted es responsable de seleccionar la instrucción apropiada. El formato general para DIV/IDIV es:
| [etiqueta:] | IDIV/DIV | {registro/memoria} | |
Las operaciones de multiplicación básicas son byte entre byte, palabra entre palabra y palabras dobles entre palabra dobles.
Palabra entre palabra
Aquí el dividendo esta en el AX y el divisor es un byte en memoria o en otro registro. Después de la división, el residuo esta en el AH y el cociente esta en el AL. Ya que un cociente de un byte es muy pequeño -si es sin signo, un máximo de +255 (FFH) y con signo +127 (7FH)- esta operación tiene un uso limitado.
Palabra doble entre palabra
Para esta operación, el dividendo esta en el par DX:AX y el divisor es una palabra en memoria o en otro registro. Después de la división, el residuo esta en el DX y el cociente esta en el AX. El cociente de una palabra permite para datos sin signo un máximo de +32, 767 (FFFFH) y con signo +16, 383 (7FFFH). Tenemos:
Palabra cuádruple entre palabra doble
Al dividir una palabra cuádruple entre una palabra doble, el dividendo esta en el par EDX:EAX y el divisor esta en una palabra doble en memoria o en otro registro. Después de la división, el residuo esta en el EDX y el cociente en el AEX.
En los ejemplos siguientes, de DIV, los divisores están en un registro, que determina el tipo de operación:
OPERACION DIVISOR DIVIDENDO COCIENTE RESIDUO
DIV CL byte AX AL AH
DIV CX palabra DX:AX Ax DX
DIV EBX palabra doble EDX:EAX EAX EDX
En los ejemplos siguientes de DIV, los divisores están definidos en memoria:
BYTE1 DB ?
WORD1 DW ?
DWORD1 DD ?
… DIVISOR DIVIDENDO COCIENTE RESIDUO
DIV BYTE1 BYTE1 AX AL AH
DIV WORD1 WORD1 DX:AX AX DX
DIV DWORD1 DWORD1 EDX:EAX EAX EDX