1

如何在 Assembly 8086 中实现 64 位除以 64 位?我已经使用 .386 指令启用了扩展寄存器。

4

1 回答 1

-1

x86 知道 64 x 32 位除法,余数和商的结果为 32 位,如下所示

POP     EBX      ;DIVISOR
POP     EDX      ;MSW OF DIVIDEND
POP     EAX      ;LSW OF DIVIDEND
DIV     EBX      ;64/32 BIT DIVIDE
PUSH    EDX      ; remainder
PUSH    EAX      ; quotient

您不想除以不适合 32 位的 64 位数字,因为您将失去至少 10 位的精度。

如果你坚持下去,你可以从中组成一个 64/64 divison,然后再分析你是否真的做到了。

如果您知道如何将 2 位十进制数除以 2 位十进制数(长除法),您可以使用上述方法完成将 2 位 2^32 基数除以 2 位 2^32 基数. 这留给读者作为练习。

于 2019-05-21T12:56:34.270 回答