在程序集32位这个小程序没问题
pi dq 3.14
val1 dq 2.0
;=======================================
; segment des données non initialisées
;=======================================
segment .bss
hMain resd 1
qResult resq 1
ptResult resq 1
szResult resb 100
;=======================================
; segment de code
;=======================================
segment .text
global Main
extern VarBstrFromR8,WideCharToMultiByte
Main:
finit
fld qword [pi] ; store pi
fmul qword [val1] ; multiplier par 2
fstp qword [qResult] ; stockage du résultat
;conversion en unicode
push ptResult
push LOCALE_NOUSEROVERRIDE
push LOCALE_CUSTOM_DEFAULT
push dword[qResult+4]
push dword[qResult]
call VarBstrFromR8
mov ebx,__LINE__ - 1
cmp eax,NULL
jne .gestionerreurs
;conversion unicode ==> Ansi
push NULL
push NULL
push 80 ; taille du buffer
push szResult
push -1
push dword [ptResult]
push WC_COMPOSITECHECK
push CP_ACP
call WideCharToMultiByte
mov ebx,__LINE__ - 1
cmp eax,NULL
je .gestionerreurs
push __LINE__
push szResult
push 2
call vidagememwin
结果还可以:6.28
在64位汇编中,结果为0 !!
iAlign align 8
pi dq 3.14
val1 dq 2.0
;=======================================
; segment des données non initialisées
;=======================================
segment .bss
hMain resq 1
qResult resq 1
ptResult resq 1
szResult resb 100
;=======================================
; segment de code
;=======================================
segment .text
global Main
Main:
sub rsp, 8h ; alignement de la pile avant tout appel de procédure
sub rsp,20h
finit
fld qword [pi] ; stockage PI
fmul qword [val1] ; multiplier par val1
fstp qword [qResult] ; stockage du résultat
mov rcx,[qResult]
mov rdx,LOCALE_CUSTOM_DEFAULT
mov r8,LOCALE_NOUSEROVERRIDE
mov r9,ptResult
call VarBstrFromR8
;add rsp,10h
mov r9,__LINE__ - 1
cmp eax,NULL
jne .gestionerreurs
;conversion unicode ==> Ansi
add rsp,20h
push NULL
push NULL
push 80 ; taille du buffer
push szResult
sub rsp,20h
mov rcx,CP_ACP
mov rdx,WC_COMPOSITECHECK
mov r8,[ptResult]
mov r9,-1
call WideCharToMultiByte
add rsp,20h
mov r9,__LINE__ - 1
cmp eax,NULL
je .gestionerreurs
push __LINE__
push szResult
push 2
call affmemoireP
错误在哪里?谢谢