1

我一直在浏览 NASM 教程,我注意到在所有对 DIV 指令的引用中,在讨论 32 位除法时,会说以下内容:

DIV ECX    ; EDX:EAX / ECX

EDX:EAX 是什么意思?为什么两个寄存器除以一个寄存器?

提前致谢

4

1 回答 1

4

这是一个跨区寄存器或寄存器对,在这种情况下用于 64 位数学运算(因此您可以使用 64 位商,添加 IIRC 是为了允许任意点算术)。 EDX包含高位 DWORD 和符号,EAX低位 DWORD。

相同的逻辑用于返回 64 位结果。另外,应该注意的是,这与 NASM 无关,它是 x86 架构的一部分(它也定义了 32 位对,就像DX:AX使用 16 位指令时一样)。

于 2012-10-15T10:59:36.927 回答