Код может выглядеть как-то так:
void OutFloat(double v);
sub sp,16
mov bp,sp
fstp qword ptr [bp + 8]
call OutFloat
add sp,16
Т.е. можно выгружать значение из сопроцессора прямо в то место, где будет исходящий параметр для вызова функции.
Ошибка возникает из-за того, что нет команд mov пересылающих значение из памяти в память.