我正在尝试在程序集中运行以下代码:
mov %si, %ax
mov $15, %si
div %si
mov %eax, %esi
当我编写程序时,它会编译,但在运行时它会给我一个浮点异常。
我尝试用%ah
和%si
替换最后一行的参数。
简而言之,我试图将%esi
除以15
。我只想要一个int
,而不需要double
。
谢谢
答案 0 :(得分:14)
div
指令将双字参数dx/ax
除以操作数。如果商数太大而无法容纳一个单词,则会抛出该异常。
参考:http://siyobik.info.gf/main/reference/instruction/DIV
dx
注册表中有什么内容?最有可能dx/ax
除以15
不适合16位字。