[ kata_ @ 30.03.2016. 08:53 ] @
Code:

Test_ proc

LOCAL _FP1:QWORD
LOCAL _FP2:QWORD
LOCAL _Result:QWORD
      
    ;3A34 + 0FFA5 = 139D9
    mov dword ptr [_FP1],3A34h    
    mov dword ptr [_FP2],0FFA5h
    FLD _FP1    
    FLD _FP2    
    FADD ST(0), ST(1)
    fstp _Result    
    mov ecx,dword ptr[_Result]                          ; ECX = 139D9
    ; invoke FloatToStr,_Result,addr tmpBuf             ; tmpBuf = "5.114010e-312"

Test_ endp


Ova procedura sabira 3A34 i 0FFA5 (primer verovatno i nepotreban),

ali kako sada da saberem npr. "36441D979151AA56" i "1FF196D1874C3DE4"?

i kako sacuvati taj rezultat (a ne mogu u 32-bitni registar), da bih ga kasnije prikazala preko poruke ili edit kontrole.
Inace sam skoro pocela sa asemblerom i ne bih vise da citam gomilu tutorijala, samo zbog ovoga,
jer ga verovatno vise nikada necu koristiti.
[ djoka_l @ 30.03.2016. 09:14 ] @
64-bitni broj sabereš tako što prvo sabereš donja 32 bita, pa onda gornja 32 bita. Ako je bilo prenosa kod sabiranja donja 32 bita (a to testiraš tako što proveriš carry, odnosno napraviš uslovno grananje sa JC ili JNC posle prvog sabiranja) onda na zbir gornjih reči dodaš 1.

A ni ono što si gore sabrala nije dobro, sabrala si dva integera kao da su double i rezultat ti je besmislen - 5.114010e-312
[ kata_ @ 30.03.2016. 16:24 ] @
Uspela sam nekako. Ok, hvala.



[Ovu poruku je menjao kata_ dana 31.03.2016. u 07:06 GMT+1]