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.
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