2012-03-20 15 views
5

Estoy tratando de ejecutar el código siguiente en el montaje:Conseguir excepción de coma flotante al intentar utilizar div en el montaje

mov  %si, %ax 
    mov  $15, %si 
    div  %si 
    mov  %eax, %esi 

Cuando hago mi programa, compila, pero en tiempo de ejecución que me da un punto flotante excepción. He intentado reemplazar los parámetros de la última línea por %ah y %si.

En pocas palabras, estoy tratando de dividir %esi por 15. Solo quiero un int, y no necesito un double.

Gracias

Respuesta

13

La instrucción div divide las dos palabras parámetro dx/ax por el operando. Si el cociente es demasiado grande para caber en una palabra, arrojará esa excepción.

Referencia: http://siyobik.info.gf/main/reference/instruction/DIV

¿Qué tienes en el Registro dx? Probablemente dx/ax dividido por 15 no cabe en una palabra de 16 bits.

+0

Nada (o cosas al azar), pensé que mi operación era% si /% ax, que se almacenó en% ax – juliensaad

+1

Luego tendrá que borrar (poner a cero) el registro 'dx'. Porque representa los 16 bits superiores del dividendo de entrada. – Mysticial

+0

¡Funcionó! Muchas gracias, voy a encontrar la respuesta en 7 minutos – juliensaad

Cuestiones relacionadas