nasm x86-64位分割

时间:2012-01-13 02:33:08

标签: floating-point x86-64 nasm inline-assembly

我试图用汇编语言划分

我无法在网上找到一个关于如何划分64位的好例子。

到目前为止,我在两个变量中有2个值

input
input2

其中读入

我能够成倍增加,但我仍然坚持分裂

所以,如果我不想分割两个整数,那我就

mov rcx, [input]

mov rdi, [input2]

idiv rcx, rdi

自动给出一个错误,因为除法假设只是一个寄存器,所以我假设在使用idiv时,它会自动将某个寄存器除以你指定的寄存器,所以我试过了

idiv rcx

但我得到"浮点错误"

想法?

1 个答案:

答案 0 :(得分:3)

快速查看documentation显示了涉及64位数字的两种划分可能性:

  

IDIV r / m32

     

r / m32 划分EDX:EAX,结果存储在EAX←商,EDX←剩余。

     

IDIV r / m64

     

r / m64 划分RDX:RAX,结果存储在RAX←商,RDX←剩余。

但它将是整数除法。你的问题被标记为浮点 - 如果你想要浮点除法,你需要FDIV指令的变体之一。