Hier denkst du mal wieder zu kompliziert.
Eigentlich willst du doch nur den Extended-Wert auf den Stack schieben, damit du die Funktion aufrufen kannst.
Delphi-Quellcode:
// edx: PExtended
push word ptr [edx + 8] //zuerst gepusht -> liegt am weitesten weg, daher fangen wir hinten an
push [edx + 4]
push [edx]
Damit sollte es klappen.
Übrigens, wegen deines Erstaunens über SizeOf(Extended): Intel verwendet drei Größen für Floats: 4 Byte (Single), 8 Byte (Double = Real) und 10 Byte (Extended). Im Inline-Assembler sprichst du Extended für fld und fst(p) mit TByte an (vermutlich steht das für "ten byte").