Marinus,
Like this ?
123456.1234567890060134
Press any key to continue...
I just plugged in your code into a 64 bit test piece, changed the 32 bit registers to 64 bit and used a 64 bit version of StrLen. Works fine.
; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
include \masm32\include64\masm64rt.inc
.data
align 16
Fabsmask qword 7FFFFFFFFFFFFFFFh,7FFFFFFFFFFFFFFFh
float64bit real8 123456.1234567890123456
integer real8 0.0
fraction real8 0.0
szFloatNum db "%0.0f.%0.016f",0
szFloat64 db 64 dup (0)
.code
; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
entry_point proc
movsd xmm0,float64bit
movsd xmm2,xmm0
cvtpd2dq xmm1,xmm0 ; get rid of fractional part
cvtdq2pd xmm1,xmm1 ; integer part
subpd xmm2,xmm1 ; subtract integer part from number to get fractional part
andpd xmm2,Fabsmask ; make fractional part absolute by removing sign bit
movsd integer,xmm1
movsd fraction,xmm2
invoke vc_sprintf,addr szFloat64,addr szFloatNum,integer,fraction
invoke StrLen,addr szFloat64
lea rcx,szFloat64
movups xmm0,[rcx+rax-16]
movups [rcx+rax-18],xmm0
mov byte ptr [rcx+rax-2],0
conout ptr$(szFloat64),lf
waitkey
.exit
entry_point endp
; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
end