Error al utilizar DIV

Error al utilizar DIV

de Anthony Matias Cuña Silveira -
Número de respuestas: 1

Buenas, probando el codigo en assembler con los casos de prueba, sucede que en un momento me sale el error al hacer div, en particular DIV: El cociente es más grande que el máximo número representable. Sin embargo no puedo entender el porque de esto, ya que en AX se encuentra guardado el valor 0, y el registro por el cual lo divido tiene el valor 6 en el. ¿Cuál puede ser el error? Tal vez hay algo acerca de la instrucción que se me esta pasando por alto, desde ya muchas gracias.

En respuesta a Anthony Matias Cuña Silveira

Re: Error al utilizar DIV

de Gustavo Brown -

Si estás dividiendo entre un operando de 16 bits la división que se realiza es DX.AX (32 bits) / operando y el resultado de la division entera queda en AX y el resto en DX

Si estás dividiendo entre un operando de 8 bits la división que se realiza es AX/operando y el resultado de la division entera queda en AL y el resto en AH

En ambas variantes no se puede dividir entre 0 y si el resultado (division entera) no entra en el registro destino se da el error que mencionás.

Por ejemplo este código daría el error porque el resultado no entra en el registro:

  mov DX,0x1234 
  mov ax,0
  mov cx,6
  div CX

Puede ser que lo que tu quisieras hacer es una division entre CL para que la division sea de AX/CL

Saludos,
  Gustavo