我试图用汇编语言划分
我无法在网上找到一个关于如何划分64位的好例子。
到目前为止,我在两个变量中有2个值
input
input2
其中读入
我能够成倍增加,但我仍然坚持分裂
所以,如果我不想分割两个整数,那我就
mov rcx, [input]
mov rdi, [input2]
idiv rcx, rdi
自动给出一个错误,因为除法假设只是一个寄存器,所以我假设在使用idiv
时,它会自动将某个寄存器除以你指定的寄存器,所以我试过了
idiv rcx
但我得到"浮点错误"
想法?
答案 0 :(得分:3)
快速查看documentation显示了涉及64位数字的两种划分可能性:
IDIV r / m32
按 r / m32 划分EDX:EAX,结果存储在EAX←商,EDX←剩余。
IDIV r / m64
用 r / m64 划分RDX:RAX,结果存储在RAX←商,RDX←剩余。
但它将是整数除法。你的问题被标记为浮点 - 如果你想要浮点除法,你需要FDIV
指令的变体之一。