Floating point nasm x86-64位除法

Floating point nasm x86-64位除法,floating-point,x86-64,nasm,inline-assembly,Floating Point,X86 64,Nasm,Inline Assembly,我想用汇编语言来划分 我在网上找不到一个关于如何在64位中除法的好例子 到目前为止,我在两个变量中有两个值 input input2 在哪读 我能很好地乘法,但我被除法难住了 如果我不想把这两个整数除,我就做 mov rcx, [input] mov rdi, [input2] idiv rcx, rdi 这会自动给sme一个错误,因为除法被假定为只有一个寄存器,所以我假设在使用idiv时,它会自动将一些寄存器除以您指定的寄存器,所以我尝试了 idiv rcx 但我得到了“浮点错误”

我想用汇编语言来划分

我在网上找不到一个关于如何在64位中除法的好例子

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

input
input2
在哪读

我能很好地乘法,但我被除法难住了

如果我不想把这两个整数除,我就做

mov rcx, [input]

mov rdi, [input2]

idiv rcx, rdi
这会自动给sme一个错误,因为除法被假定为只有一个寄存器,所以我假设在使用
idiv
时,它会自动将一些寄存器除以您指定的寄存器,所以我尝试了

idiv rcx
但我得到了“浮点错误”

想法?

快速查看中显示了两种涉及64位数字的除法:

IDIV r/m32

将EDX:EAX除以r/m32,结果存储在EAX中← 商← 剩余的

IDIV r/m64

将RDX:RAX除以r/m64,结果存储在RAX中← 商← 剩余的

这将是整数除法。您的问题被标记为浮点-如果您想要浮点除法,您需要使用
FDIV
指令的一种变体。

中的快速查看显示了涉及64位数字的两种除法:

IDIV r/m32

将EDX:EAX除以r/m32,结果存储在EAX中← 商← 剩余的

IDIV r/m64

将RDX:RAX除以r/m64,结果存储在RAX中← 商← 剩余的


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

你的问题被标记为[floating-point],但你说的是整数除法。是哪一个?你的问题被标记为[浮点],但你说的是整数除法。是哪一个?好的……那么我把整数加载到rdx和rax中,然后当我除法时,我做idiv-rax?不,你做
idiv-REGISTER\u你想除以
。使用
RDX
RAX
是行不通的,因为这就是你的红利所在。好吧……那么我把整数加载到RDX和RAX中,然后当我除法时,我做idiv-RAX?不,你做的是
idiv-REGISTER,你想用它除法。使用
RDX
RAX
是行不通的,因为这就是你的红利所在。