尝试在程序集中使用div时获取浮点异常

jul*_*aad 7 x86 assembly

我试图在程序集中运行以下代码:

  mov        %si, %ax
  mov        $15, %si
  div        %si
  mov        %eax, %esi
Run Code Online (Sandbox Code Playgroud)

当我编写程序时,它会编译,但在运行时它会给我一个浮点异常.我试图通过替换最后一行的参数%ah%si.

简单地说,我试图划分%esi15.我只想要一个int,而不需要一个double.

谢谢

Mys*_*ial 15

div指令将dx/ax操作数除以双字参数.如果商太大而不适合单词,它将抛出该异常.

参考:http://siyobik.info.gf/main/reference/instruction/DIV

你在dx寄存器里有什么?最可能的dx/ax除以15不适合16位字.

  • 然后,您需要清除(设置为零)`dx`寄存器。因为它代表输入红利的高16位。 (2认同)