Facebook
From Eratic Coyote, 9 Years ago, written in x86 Assembler.
Embed
Download Paste or View Raw
Hits: 542
  1. .686
  2. .model flat
  3.  
  4. public _miesz2float
  5.  
  6. .code
  7.  
  8. ; float miesz2float(miesz F);
  9. _miesz2float PROC
  10.         push ebp
  11.         mov ebp, esp;
  12.        
  13.         mov eax,[ebp+8];
  14.         mov ecx,31;
  15.         clc ; wyczyszczenie CF
  16. obrot:
  17.         rcl eax,1;
  18.         jc na_max_bitach ; gdy jedynka na najstarszym bicie
  19.         loop obrot;
  20.         ; tutaj mamy 0!!!
  21.         mov eax,0;
  22.         jmp koniec
  23. na_max_bitach:
  24.         add ecx,119 ; normalizacja wykładnika (-8+127) ;
  25.         shr eax, 9; nie ma jedynki wiodącej, więc przesuwamy w prawo o 1+8 miejsc
  26.         shl ecx,23 ; przesunięcie w lewo o 23 pozycje, aby ustawićw dobrym miejscu
  27.         or eax,ecx ; ustawienie wartości
  28. koniec:
  29.         sub esp,4; rezerwacja miejsca na stosie
  30.         mov [esp],eax; wpisanie wartości
  31.         fld dword ptr [esp];
  32.         add esp,4; zwolnienie miejsca na stosie
  33.        
  34.         pop ebp;
  35.         ret
  36. _miesz2float ENDP
  37. END