| Сейчас на форуме: ==DJ==[ZLO], Magister Yoda, Rio (+6 невидимых) |
| eXeL@B —› Основной форум —› 6 байтный флоат пойнт -> String |
| Посл.ответ | Сообщение |
|
|
Создано: 01 марта 2005 22:49 · Личное сообщение · #1 |
|
|
Создано: 01 марта 2005 23:11 · Личное сообщение · #2 |
|
|
Создано: 02 марта 2005 00:22 · Личное сообщение · #3 Если на асме, то на Fasm-e я делал так: сначала браз челую часть, писал его как строку, ставил точку и писал дробьную часть. А вот как я брал целую часть:
; Returns the integer part of a float number
;
; -> st0 float argument
; <- st0 float result
$sproc st0int
sub esp, 4
fstcw [esp] ; save
fstcw [esp + 2] ; scratch
fwait
and word [esp + 2], 1111001111111111b ; 0xF3FF ; clear round mode flags
or word [esp + 2], 0000110000000000b ; 0xFCFF ; trunc toward zero
fldcw [esp + 2]
frndint
fwait
fldcw [esp]
.return:
add esp, 4
ret
$endp
А вот как я брал дробьную часть:
; Returns the fractional part of a float number
;
; -> st0 float argument
; <- st0 float result
$sproc st0frac
sub esp, 4
fld st0
fstcw [esp] ; save
fstcw [esp + 2] ; scratch
fwait
and word [esp + 2], 1111001111111111b ; 0xF3FF ; clear round mode flags
or word [esp + 2], 0000110000000000b ; 0xFCFF ; trunc toward zero
fldcw [esp + 2]
frndint
fwait
fldcw [esp]
fsubp
.return:
add esp, 4
ret
$endp
![]() |
|
|
Создано: 02 марта 2005 01:51 · Личное сообщение · #4 |
|
|
Создано: 02 марта 2005 04:13 · Личное сообщение · #5 |
|
|
Создано: 02 марта 2005 06:58 · Личное сообщение · #6 |
|
|
Создано: 02 марта 2005 07:13 · Личное сообщение · #7 |
|
|
Создано: 02 марта 2005 14:04 · Личное сообщение · #8 |
|
|
Создано: 02 марта 2005 18:03 · Личное сообщение · #9 |
|
|
Создано: 02 марта 2005 18:07 · Личное сообщение · #10 |
|
|
Создано: 03 марта 2005 00:58 · Личное сообщение · #11 |
|
|
Создано: 03 марта 2005 04:46 · Поправил: RU_Ban0K · Личное сообщение · #12 Короче я поступил "сильно по тупому", я просто расширил 48 битовое до 80 битового ( хватило бы и 64 ), а далее взял код для преобразования с васма... проблема теперь в том что есть некоторое приближение... пока не знаю на сколько оно критично, так как я буду после некоторых действий делать обратное преобразование. /после четырёх часов пыхтения/ Всё, дошло... ![]() |
| eXeL@B —› Основной форум —› 6 байтный флоат пойнт -> String |






Для печати