在独立程序中除以零

时间:2016-08-26 16:58:13

标签: assembly divide-by-zero

我们有一个bootloader,我们有一个程序,程序断言0来注册RAX。之后使用DIV命令,自行分配寄存器RAX。

当然bootloader加载程序。

我知道任何汇编程序在此状态下都会出错,但该程序是原始二进制文件。因此,我们可以使用十六进制编辑器轻松编写此程序,因为该程序仅包含2条指令。

此状态会发生什么?

1 个答案:

答案 0 :(得分:-3)

根据英特尔®64和IA-32架构软件开发人员手册:

只要指令试图划分a,处理器就会报告除零异常 有限非零操作数为0.除零异常的屏蔽响应是设置ZE标志并返回 用操作数符号的异或签名的无穷大。如果没有屏蔽除零除外, 设置ZE标志,调用软件异常处理程序,操作数保持不变。

所以,我们有标志。当我们尝试这样做时,这个标志将被修改,累加器寄存器的值将不会有机会。