Assembly 在程序集x86-64中划分longfloat和int

Assembly 在程序集x86-64中划分longfloat和int,assembly,x86-64,fpu,x87,Assembly,X86 64,Fpu,X87,我有一个程序,只要用户输入Y(表示是),我就会循环。然后,用户输入long float类型的数据。我还有一个计数器r14,每次输入长浮点时都会计数。循环结束后,我希望计算平均值。如果我这样做: fld tword [r14] 并显示它,我会得到一个分割错误。我也尝试过很多其他的东西,但它总是让我有一个seg。尝试分割和显示后出现故障。我认为问题在于r14是一个int,我不能像那样将它放入FPU堆栈并进行除法。但我想不出别的办法 有人能帮忙吗?提前谢谢 FPU指令的参数要么来自内存,要么来自FP

我有一个程序,只要用户输入Y(表示是),我就会循环。然后,用户输入long float类型的数据。我还有一个计数器r14,每次输入长浮点时都会计数。循环结束后,我希望计算平均值。如果我这样做:

fld tword [r14]
并显示它,我会得到一个分割错误。我也尝试过很多其他的东西,但它总是让我有一个seg。尝试分割和显示后出现故障。我认为问题在于r14是一个int,我不能像那样将它放入FPU堆栈并进行除法。但我想不出别的办法


有人能帮忙吗?提前谢谢

FPU指令的参数要么来自内存,要么来自FPU寄存器,而不是来自通用CPU寄存器

fld tword[r14]
r14
中包含的地址处的内存位置获取
tword
,并将其推到FPU堆栈顶部

如果
r14
没有指向可以读取10字节浮点值的内存位置,则会出现分段错误


所以,将你的浮点存储在内存中,然后用
fld

读取它,可能是我不太明白的。我已经在循环中用fld加载了我的浮动。但它不会对计数器执行除法运算。有没有其他方法,比如我应该加载fild?