Paw*_*rek 5 x86 assembly exception division
上个学期我在信息学的计算机体系结构考试中得到了这个问题: "为什么MASM中的'DIV EDX'总是会产生处理器异常?" 产生异常的机制是什么?
cop*_*opy 13
在x86 CPU上执行1操作数除法时,EDX:EAX(64位)除以第1个操作数(32位).结果存储在EAX(32位)中.
因此,当您通过EDX划分EDX:EAX时,您实际获得的是(EDX*0x100000000 + EAX)/ EDX,其结果始终高于0x100000000并且不适合目标寄存器或除数为零.在这两种情况下都会发生除法异常.
另请参阅此页面(来自英特尔开发人员手册).
请注意,这不是特定于汇编程序(MASM),而是特定于此情况下的平台.
归档时间:
13 年,2 月 前
查看次数:
1500 次
最近记录:
9 年,9 月 前