toda vez que faço um programa em assembly que usa DIV, ele dá um aviso de erro "floating point exception". Acho que o problema é no tamanho dos registradores, e o erro parou usando cwd, mas não conseguimos fazer o programa funcionar, não tenho certeza de onde estão ficando os valores.
Isso aconteceu comigo algumas vezes também.
Zerar o EDX (onde o DIV coloca o resto) com um XOR edx, edx antes de usar o comando DIV arrumou o problema em todas elas.