1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
DistanceR PROC r:REAL8, r1:DWORD, r2:DWORD, g1:DWORD, g2:DWORD, b1:DWORD, b2:DWORD, Resultat:DWORD
fninit
fild r2
fild r1
fsub st(0), st(1); r1 - r2
fsqrt; sqrt(r1 - r2)
fild g2
fild g1
fsub st(0), st(1); g1 - g2
fsqrt; sqrt(g1 - g2)
fild b2
fild b1
fsub st(0), st(1); b1 - b2
fsqrt; sqrt(b1 - b2)
fadd st(0), st(2)
fadd st(0), st(4)
fsqrt ; Sqrt( Sqr(r1-r2)+Sqr(g1-g2)+Sqr(b1-b2)
fld [r]
fadd st(0), st(1) ;r + ...
;sauvegarde
mov eax, [Resultat]
fstp qword ptr [eax] ; le calcul est sauvé dans "resultat"
ret
DistanceR endp |
Partager