【发布时间】:2014-07-15 17:34:05
【问题描述】:
我正在处理一项作业,但遇到了除法溢出问题。
它给出了一个错误,因为我将一个 64 位数字 DX AX 除以一个 32 位数字。答案不适合AX,因此会出错。
有没有办法克服这种溢出?我想把这个数字转换成十进制,所以我想把它除以 10。
【问题讨论】:
-
您可以实现除法算法或使用 10 的幂的重复减法。
-
ax和dx是 16 位寄存器。其中两个只能组成一个32位的伪寄存器,不能组成一个64位的。你需要eax:edx,它只能从 80386 开始使用。 -
EOF 的回复是 cmets 需要 downvoting 功能的原因。这不是很有帮助,似乎不理解这个问题。显然,您可以对可用寄存器而言太大的数字进行算术运算 - 如下面的正确答案所示。
标签: assembly overflow emulation x86-16 divide