forked from KolibriOS/kolibrios
utils.obj fix: "0" converted
git-svn-id: svn://kolibrios.org@4887 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -7,299 +7,299 @@
|
|||||||
;-----------------------------------------------------------------------------+
|
;-----------------------------------------------------------------------------+
|
||||||
|
|
||||||
proc FloatToString lpFloat:DWORD, lpResult:DWORD
|
proc FloatToString lpFloat:DWORD, lpResult:DWORD
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>६<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>६<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
local digits_count:DWORD
|
local digits_count:DWORD
|
||||||
local old_cw:WORD
|
local old_cw:WORD
|
||||||
local new_cw:WORD
|
local new_cw:WORD
|
||||||
local saved_float:TBYTE
|
local saved_float:TBYTE
|
||||||
local tmp1 rb 11h
|
local tmp1 rb 11h
|
||||||
local tmp2 rb 11h
|
local tmp2 rb 11h
|
||||||
|
|
||||||
; <EFBFBD><EFBFBD><EFBFBD>࠭<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> ॣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD>࠭<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> ॣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
pusha
|
pusha
|
||||||
|
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⥫<EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ப<EFBFBD>-<EFBFBD>ਥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⥫<EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ப<EFBFBD>-<EFBFBD>ਥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
mov edi,[lpResult]
|
mov edi,[lpResult]
|
||||||
|
|
||||||
; <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
; <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||||
lea esi,[lpFloat]
|
mov esi,[lpFloat]
|
||||||
cmp dword [esi],0
|
cmp dword [esi],0
|
||||||
jne loc_not_zero
|
jne loc_not_zero
|
||||||
cmp dword [esi+4],0
|
cmp dword [esi+4],0
|
||||||
jne loc_not_zero
|
jne loc_not_zero
|
||||||
cmp word [esi+8],0
|
cmp word [esi+8],0
|
||||||
jne loc_not_zero
|
jne loc_not_zero
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>ப<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>ப<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
mov al,'0'
|
mov al,'0'
|
||||||
stosb
|
stosb
|
||||||
jmp loc_ret
|
jmp loc_ret
|
||||||
|
|
||||||
loc_not_zero:
|
loc_not_zero:
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>६<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>६<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
push edi
|
push edi
|
||||||
mov esi,[lpFloat]
|
mov esi,[lpFloat]
|
||||||
lea edi,[saved_float]
|
lea edi,[saved_float]
|
||||||
movsd
|
movsd
|
||||||
movsd
|
movsd
|
||||||
movsw
|
movsw
|
||||||
pop edi
|
pop edi
|
||||||
; <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⥫쭮<EFBFBD>?
|
; <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⥫쭮<EFBFBD>?
|
||||||
cmp dword [saved_float+6],0
|
cmp dword [saved_float+6],0
|
||||||
jge loc_not_signed
|
jge loc_not_signed
|
||||||
; <EFBFBD>ਢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>᮫<EFBFBD>⭮<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD><EFBFBD>
|
; <EFBFBD>ਢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>᮫<EFBFBD>⭮<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD><EFBFBD>
|
||||||
and byte [saved_float+9],7Fh
|
and byte [saved_float+9],7Fh
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>ப<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>ப<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
mov al,'-'
|
mov al,'-'
|
||||||
stosb
|
stosb
|
||||||
|
|
||||||
loc_not_signed:
|
loc_not_signed:
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>稥 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>稥 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
|
||||||
fclex
|
fclex
|
||||||
; <EFBFBD><EFBFBD><EFBFBD>࠭<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ࠢ<EFBFBD><EFBFBD><EFBFBD>饥 <EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD>࠭<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ࠢ<EFBFBD><EFBFBD><EFBFBD>饥 <EFBFBD><EFBFBD>
|
||||||
fstcw [old_cw]
|
fstcw [old_cw]
|
||||||
; <EFBFBD><EFBFBD>⠭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ࠢ<EFBFBD><EFBFBD><EFBFBD>饥 <EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD>⠭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ࠢ<EFBFBD><EFBFBD><EFBFBD>饥 <EFBFBD><EFBFBD>
|
||||||
mov [new_cw],0000001001111111b
|
mov [new_cw],0000001001111111b
|
||||||
fldcw [new_cw]
|
fldcw [new_cw]
|
||||||
lea esi,[saved_float]
|
lea esi,[saved_float]
|
||||||
fld tbyte [esi]
|
fld tbyte [esi]
|
||||||
fld st
|
fld st
|
||||||
; <EFBFBD>뤥<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD>冷<EFBFBD>
|
; <EFBFBD>뤥<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD>冷<EFBFBD>
|
||||||
fxtract
|
fxtract
|
||||||
fstp st
|
fstp st
|
||||||
fldlg2
|
fldlg2
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>
|
||||||
fmulp st1,st
|
fmulp st1,st
|
||||||
fistp [digits_count]
|
fistp [digits_count]
|
||||||
; <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 16, <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD>⮡ࠦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>
|
; <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 16, <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD>⮡ࠦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>
|
||||||
; <EFBFBD><EFBFBD>ଠ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮩ <EFBFBD> <EFBFBD><EFBFBD>ᯮ<EFBFBD><EFBFBD><EFBFBD>⮩
|
; <EFBFBD><EFBFBD>ଠ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮩ <EFBFBD> <EFBFBD><EFBFBD>ᯮ<EFBFBD><EFBFBD><EFBFBD>⮩
|
||||||
cmp [digits_count],10h
|
cmp [digits_count],10h
|
||||||
jnb loc_not_integer
|
jnb loc_not_integer
|
||||||
; <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
; <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||||
fld st
|
fld st
|
||||||
frndint
|
frndint
|
||||||
fcomp st1
|
fcomp st1
|
||||||
fstsw ax
|
fstsw ax
|
||||||
test ah,01000000b
|
test ah,01000000b
|
||||||
; <EFBFBD><EFBFBD>, <EFBFBD>⮡ࠦ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD>, <EFBFBD>⮡ࠦ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
jz loc_not_integer
|
jz loc_not_integer
|
||||||
|
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>ᯮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>ᯮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
lea eax,[tmp1]
|
lea eax,[tmp1]
|
||||||
fbstp [eax]
|
fbstp [eax]
|
||||||
|
|
||||||
; <EFBFBD><EFBFBD>ॢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> BCD-<EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>ப<EFBFBD>
|
; <EFBFBD><EFBFBD>ॢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> BCD-<EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>ப<EFBFBD>
|
||||||
push edi
|
push edi
|
||||||
lea esi,[tmp1+8]
|
lea esi,[tmp1+8]
|
||||||
lea edi,[tmp2]
|
lea edi,[tmp2]
|
||||||
mov ecx, 9
|
mov ecx, 9
|
||||||
@@:
|
@@:
|
||||||
std
|
std
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
lodsb
|
lodsb
|
||||||
cld
|
cld
|
||||||
rol ax,12
|
rol ax,12
|
||||||
rol ah,4
|
rol ah,4
|
||||||
add ax,'00'
|
add ax,'00'
|
||||||
stosw
|
stosw
|
||||||
loop @b
|
loop @b
|
||||||
pop edi
|
pop edi
|
||||||
|
|
||||||
; <EFBFBD>ய<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>騩 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD>ய<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>騩 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
mov eax,11h
|
mov eax,11h
|
||||||
mov ecx,[digits_count]
|
mov ecx,[digits_count]
|
||||||
sub eax,ecx
|
sub eax,ecx
|
||||||
inc ecx
|
inc ecx
|
||||||
lea esi,[tmp2+eax]
|
lea esi,[tmp2+eax]
|
||||||
cmp byte [esi],'0'
|
cmp byte [esi],'0'
|
||||||
jne @f
|
jne @f
|
||||||
inc esi
|
inc esi
|
||||||
dec ecx
|
dec ecx
|
||||||
@@:
|
@@:
|
||||||
; <EFBFBD><EFBFBD>७<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD>६<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD>७<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD>६<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
rep movsb
|
rep movsb
|
||||||
jmp loc_clear_stack
|
jmp loc_clear_stack
|
||||||
|
|
||||||
loc_not_integer:
|
loc_not_integer:
|
||||||
mov eax,10h
|
mov eax,10h
|
||||||
sub eax,[digits_count]
|
sub eax,[digits_count]
|
||||||
|
|
||||||
; <EFBFBD>८<EFBFBD>ࠧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> 楫<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 16 ࠧ<EFBFBD>冷<EFBFBD>
|
; <EFBFBD>८<EFBFBD>ࠧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> 楫<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 16 ࠧ<EFBFBD>冷<EFBFBD>
|
||||||
mov ecx,eax
|
mov ecx,eax
|
||||||
cmp eax,0
|
cmp eax,0
|
||||||
jge @f
|
jge @f
|
||||||
neg eax
|
neg eax
|
||||||
@@:
|
@@:
|
||||||
; <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ᥫ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 <EFBFBD><EFBFBD><EFBFBD>४<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>㣫<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0
|
; <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ᥫ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 <EFBFBD><EFBFBD><EFBFBD>४<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>㣫<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0
|
||||||
mov [new_cw],0000101001111111b
|
mov [new_cw],0000101001111111b
|
||||||
cmp ecx,0
|
cmp ecx,0
|
||||||
jge @f
|
jge @f
|
||||||
mov [new_cw],0000011001111111b
|
mov [new_cw],0000011001111111b
|
||||||
@@:
|
@@:
|
||||||
; <EFBFBD><EFBFBD>⠭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ࠢ<EFBFBD><EFBFBD><EFBFBD>饥 <EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD>⠭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ࠢ<EFBFBD><EFBFBD><EFBFBD>饥 <EFBFBD><EFBFBD>
|
||||||
fldcw [new_cw]
|
fldcw [new_cw]
|
||||||
|
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10 <EFBFBD> <EFBFBD>⥯<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢠ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10 <EFBFBD> <EFBFBD>⥯<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢠ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
fld [float2]
|
fld [float2]
|
||||||
fld [float2]
|
fld [float2]
|
||||||
@@:
|
@@:
|
||||||
fmul st,st1
|
fmul st,st1
|
||||||
dec eax
|
dec eax
|
||||||
cmp eax,1
|
cmp eax,1
|
||||||
ja @b
|
ja @b
|
||||||
|
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>⥪
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>⥪
|
||||||
fxch st1
|
fxch st1
|
||||||
fstp st
|
fstp st
|
||||||
|
|
||||||
; <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0, <EFBFBD><EFBFBD> 㬭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ࠧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0, <EFBFBD><EFBFBD> 㬭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ࠧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
cmp ecx,0
|
cmp ecx,0
|
||||||
jge @f
|
jge @f
|
||||||
fdivp st1,st
|
fdivp st1,st
|
||||||
jmp loc_rounded
|
jmp loc_rounded
|
||||||
@@:
|
@@:
|
||||||
fmulp st1,st
|
fmulp st1,st
|
||||||
|
|
||||||
loc_rounded:
|
loc_rounded:
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1.0e16 ?
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1.0e16 ?
|
||||||
fcom [float1]
|
fcom [float1]
|
||||||
fstsw ax
|
fstsw ax
|
||||||
test ah,1
|
test ah,1
|
||||||
jz @f
|
jz @f
|
||||||
fmul [float2]
|
fmul [float2]
|
||||||
dec [digits_count]
|
dec [digits_count]
|
||||||
@@:
|
@@:
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>ᯮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>ᯮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
lea eax,[tmp1]
|
lea eax,[tmp1]
|
||||||
fbstp [eax]
|
fbstp [eax]
|
||||||
|
|
||||||
; <EFBFBD><EFBFBD>ॢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> BCD-<EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>ப<EFBFBD>
|
; <EFBFBD><EFBFBD>ॢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> BCD-<EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>ப<EFBFBD>
|
||||||
push edi
|
push edi
|
||||||
lea esi,[tmp1+8]
|
lea esi,[tmp1+8]
|
||||||
lea edi,[tmp2]
|
lea edi,[tmp2]
|
||||||
mov ecx, 9
|
mov ecx, 9
|
||||||
@@:
|
@@:
|
||||||
std
|
std
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
lodsb
|
lodsb
|
||||||
cld
|
cld
|
||||||
rol ax,12
|
rol ax,12
|
||||||
rol ah,4
|
rol ah,4
|
||||||
add ax,'00'
|
add ax,'00'
|
||||||
stosw
|
stosw
|
||||||
loop @b
|
loop @b
|
||||||
pop edi
|
pop edi
|
||||||
|
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ॡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>ᯮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ॡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>ᯮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||||
lea esi,[tmp2+1]
|
lea esi,[tmp2+1]
|
||||||
mov ecx,[digits_count]
|
mov ecx,[digits_count]
|
||||||
cmp ecx,-0Fh
|
cmp ecx,-0Fh
|
||||||
jl loc_mantiss_and_exponent
|
jl loc_mantiss_and_exponent
|
||||||
cmp ecx,10h
|
cmp ecx,10h
|
||||||
jg loc_mantiss_and_exponent
|
jg loc_mantiss_and_exponent
|
||||||
|
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>
|
||||||
inc ecx
|
inc ecx
|
||||||
cmp ecx,0
|
cmp ecx,0
|
||||||
jg @f
|
jg @f
|
||||||
mov ax,'0.'
|
mov ax,'0.'
|
||||||
stosw
|
stosw
|
||||||
neg ecx
|
neg ecx
|
||||||
mov al,'0'
|
mov al,'0'
|
||||||
rep stosb
|
rep stosb
|
||||||
mov ecx,10h
|
mov ecx,10h
|
||||||
jmp loc_fraction_filled
|
jmp loc_fraction_filled
|
||||||
@@:
|
@@:
|
||||||
rep movsb
|
rep movsb
|
||||||
mov al,'.'
|
mov al,'.'
|
||||||
stosb
|
stosb
|
||||||
mov ecx,10h
|
mov ecx,10h
|
||||||
sub ecx,[digits_count]
|
sub ecx,[digits_count]
|
||||||
|
|
||||||
loc_fraction_filled:
|
loc_fraction_filled:
|
||||||
rep movsb
|
rep movsb
|
||||||
jmp @f
|
jmp @f
|
||||||
|
|
||||||
loc_clear_fraction:
|
loc_clear_fraction:
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>騥 <EFBFBD>㫨 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>騥 <EFBFBD>㫨 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
dec edi
|
dec edi
|
||||||
@@:
|
@@:
|
||||||
cmp byte [edi-1],'0'
|
cmp byte [edi-1],'0'
|
||||||
jz loc_clear_fraction
|
jz loc_clear_fraction
|
||||||
cmp byte [edi-1],'.'
|
cmp byte [edi-1],'.'
|
||||||
jnz @f
|
jnz @f
|
||||||
dec edi
|
dec edi
|
||||||
@@:
|
@@:
|
||||||
jmp loc_clear_stack
|
jmp loc_clear_stack
|
||||||
|
|
||||||
loc_mantiss_and_exponent:
|
loc_mantiss_and_exponent:
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
movsb
|
movsb
|
||||||
mov al,'.'
|
mov al,'.'
|
||||||
stosb
|
stosb
|
||||||
movsd
|
movsd
|
||||||
movsd
|
movsd
|
||||||
movsw
|
movsw
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>騥 <EFBFBD>㫨 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>騥 <EFBFBD>㫨 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
@@:
|
@@:
|
||||||
cmp byte [edi-1],'0'
|
cmp byte [edi-1],'0'
|
||||||
jne @f
|
jne @f
|
||||||
cmp byte [edi-2],'.'
|
cmp byte [edi-2],'.'
|
||||||
je @f
|
je @f
|
||||||
dec edi
|
dec edi
|
||||||
jmp @b
|
jmp @b
|
||||||
@@:
|
@@:
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ᯮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ᯮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
mov al,'e'
|
mov al,'e'
|
||||||
stosb
|
stosb
|
||||||
mov al,'+'
|
mov al,'+'
|
||||||
mov ebx,[digits_count]
|
mov ebx,[digits_count]
|
||||||
cmp ebx, 0
|
cmp ebx, 0
|
||||||
jge @f
|
jge @f
|
||||||
mov al,'-'
|
mov al,'-'
|
||||||
neg ebx
|
neg ebx
|
||||||
@@:
|
@@:
|
||||||
stosb
|
stosb
|
||||||
|
|
||||||
; <EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ᯮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ᯮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
mov eax,ebx
|
mov eax,ebx
|
||||||
mov ecx,10
|
mov ecx,10
|
||||||
mov ebx,4
|
mov ebx,4
|
||||||
@@:
|
@@:
|
||||||
dec ebx
|
dec ebx
|
||||||
xor edx,edx
|
xor edx,edx
|
||||||
div ecx
|
div ecx
|
||||||
add dl,'0'
|
add dl,'0'
|
||||||
mov [tmp1+ebx],dl
|
mov [tmp1+ebx],dl
|
||||||
or ebx,ebx
|
or ebx,ebx
|
||||||
jnz @b
|
jnz @b
|
||||||
|
|
||||||
; <EFBFBD>ய<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>騥 <EFBFBD>㫨 <EFBFBD><EFBFBD>ᯮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD>ய<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>騥 <EFBFBD>㫨 <EFBFBD><EFBFBD>ᯮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
mov ecx,4
|
mov ecx,4
|
||||||
lea esi,[tmp1]
|
lea esi,[tmp1]
|
||||||
@@:
|
@@:
|
||||||
lodsb
|
lodsb
|
||||||
cmp al,'0'
|
cmp al,'0'
|
||||||
jne @f
|
jne @f
|
||||||
dec ecx
|
dec ecx
|
||||||
jmp @b
|
jmp @b
|
||||||
@@:
|
@@:
|
||||||
dec esi
|
dec esi
|
||||||
rep movsb
|
rep movsb
|
||||||
|
|
||||||
loc_clear_stack:
|
loc_clear_stack:
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD>⠭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ࠢ<EFBFBD><EFBFBD><EFBFBD>饥 <EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD>⠭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ࠢ<EFBFBD><EFBFBD><EFBFBD>饥 <EFBFBD><EFBFBD>
|
||||||
fldcw [old_cw]
|
fldcw [old_cw]
|
||||||
loc_ret:
|
loc_ret:
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD>砭<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ப<EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD>砭<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ப<EFBFBD>
|
||||||
mov al,0
|
mov al,0
|
||||||
stosb
|
stosb
|
||||||
|
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD>⠭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> ॣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD>⠭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> ॣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
popa
|
popa
|
||||||
ret
|
ret
|
||||||
|
|
||||||
float1 dq 1.0e16
|
float1 dq 1.0e16
|
||||||
float2 dq 10.0
|
float2 dq 10.0
|
||||||
|
|
||||||
endp
|
endp
|
Reference in New Issue
Block a user