You need work a bit more with this code, I think can be usefull to you.
;nasm -f elf32 test1.nasm
;ld -m elf_i386 test.o -o test
section .data
;dd 367.87609 ;43b7f024h
integer_part dd 367
fractional_part dd 87609
dot_one dd 0.00001 ;8*1/10, 7*1/100,6*1/1000,... .
section .code
global _start ; entry address to start code
_start:
cvtsi2ss xmm0,[integer_part] ;convert integer_part to floating point
cvtsi2ss xmm1,[fractional_part] ;convert fractional_part to floating point
movss xmm2,[dot_one] ;move floating point dot_one to register xmm2
mulss xmm1,xmm2 ;multiply
addss xmm0,xmm1 ;sum
movd eax,xmm0 ;move floating point result to eax=43b7f024h
mov eax,1 ; The system call for exit (sys_exit)
mov ebx,0 ; Exit with return code
int 80h
;division example
;mov eax,1 ;int
;mov ecx,10 ;int
;cvtsi2ss xmm0,eax ;convert interger in eax to real4 floating point and store in xmm0 register
;cvtsi2ss xmm1,ecx ;
;divss xmm0,xmm1 ;divide 1/10, result in xmm0==0.1
You need check in linux shell with command "cat /proc/cpuinfo" if your processor accepts SSE instructions.