Сейчас на форуме: ==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 |