Привет всем, собственно проблема состоит в том, что время до окончания загрузки файла из интернета определяется не верно... Помогите пожалуйста, ошибка кажется в FPU, но где?... Код (Text): wmtimer: mov eax, [thread] test eax, eax je finish ; устанавливаем прогресс в контроле invoke GetFileSize,[hfile],0 mov [divider], 1024 mov [hmem], eax stdcall Division, [hmem] mov [hmem], eax invoke SendMessage,[hprogress],PBM_SETPOS,[hmem],0 cinvoke wsprintf, string_buffer, message.status,[hmem] invoke SetWindowText,[hlabel],string_buffer .if [dwCount] = 0 ; считаем оставшееся время каждые 10 с invoke GetFileSize,[hfile],0 ; узнаем размер файла на диске mov ecx, [file_size] sub ecx, eax ; узнаем сколько осталось загрузить mov edx, [ticks] ; размер файла 10 с назад mov eax, [hmem] ; текущий размер файла try ; макрос установки SEH mov [divider], 1024 finit fild dword[divider] fild dword[eax] fmul st0, st1 fist dword[eax] fild dword[divider] fild dword[edx] fmul st0, st1 fist dword[edx] ffree st0 ffree st1 except endt sub eax, edx ; mov [divider], 10 ; stdcall Division, eax ; mov [divider], eax ; stdcall Division, ecx ; mov [divider], 60 ; stdcall Division, eax cinvoke wsprintf,string_buffer,message.delay,eax stdcall WriteListView,colum.load,string_buffer ; Считаем скорость mov ecx, [ticks] mov eax, [hmem] mov [ticks], eax sub eax, ecx mov [divider], 10 stdcall Division, eax cinvoke wsprintf,string_buffer,message.time ,eax stdcall WriteListView,colum.load,string_buffer mov [dwCount], 10 .else dec [dwCount] .endif jmp finish finit get_load_time_part: mov eax, [ticks] mov [divider], eax fild dword[divider] fild dword[len_buf] fmul st0, st1 fist dword[hmem] get_remained_file: mov [divider], 1000 fild dword[divider] fild dword[hmem] fdiv st0, st1 frndint fist dword[divider] mov eax, [divider] cmp eax, 0 jle test_read_result cinvoke wsprintf,string_buffer,message.time ,eax stdcall WriteListView,colum.load,string_buffer xor eax, eax mov [hmem], eax mov [divider], eax jmp finish Функция Division: Код (Text): ... divider dd ? ... proc Division Integer finit fild dword[divider] fild dword[Integer] fdiv st0, st1 frndint fist dword[divider] ffree st0 ffree st1 mov eax, [divider] ret endp