Napisac podprogram w asemblerze przystosowany do wywoływania z poziomu jezyka C. Prototyp funkcji implementowanej przez ten podprogram ma postac:
float srednia_harm (float * tablica, unsigned int n);
Podprogram ten powinien obliczyc srednia harmoniczna dla n liczb zmiennoprzecinkowych a1, a2, a3,..., an, zawartych w tablicy tablica. Napisać take krótki program przykładowy w jezyku C ilustrujacy sposób wywoływania tego podprogramu.

.686
.model flat
public _srednia_harm 


.code


 jeden dd 1.0


_srednia_harm 	PROC

	push ebp
	mov esp,ebp

	push esi

	mov ecx, [ebp+12] ; liczby elemetnow
	mov esi, [ebp+8] ; adres tab

	finit
	
	fldz ; aktualna wartosc sumy
	;st(0)=0


	mianownik:
	fld dword PTR jeden 
	;ST(0)=1, ST(1)=suma

	fld	dword PTR [esi] ;ladowanie elementow tablicy
	;ST(0)=tab[i], ST(1)=1 ST(2)=suma

	fdivp st(1), st(0) ; st(1)=st(1)/(st0)
	;ST(0)=1/tab[i], ST(1)=suma

	faddp st(1),st(0) ; st(1)=st(0)+st(1)
        ;st(0)=suma+1/tab[i]

	add esi,4
	loop mianownik

	pop esi
	pop ebp
	ret
	

_srednia_harm  ENDP

END 

Moje pytanie brzmi czy mogę wykonać taki rozkaz:
fld dword PTR [esi]

Pozdrawiam