为什么 MASM 中的"DIV EDX"总是生成处理器异常?



我在上学期的信息学计算机体系结构考试中遇到了这个问题:"为什么MASM中的‘DIV EDX’总是生成处理器异常?"
产生异常的机制是什么?

在x86 CPU上执行1操作数除法时,EDX:EAX(64位)除以第1个操作数(32位)。结果存储在EAX(32位)中。

因此,当你除以EDX:EAX除以EDX时,你基本上得到的是(EDX*0x100000000+EAX)/EDX,结果总是在0x100000000以上,不适合目标寄存器,或者除数为零。在这两种情况下,都会发生除法异常。

另请参阅本页(来自英特尔开发人员手册)。

请注意,这不是特定于汇编程序(MASM),而是特定于本例中的平台。

最新更新