| eXeL@B —› Программирование —› FpuFLtoA |
| Посл.ответ | Сообщение |
|
|
Создано: 26 декабря 2008 03:12 · Поправил: mak · Личное сообщение · #1 Опять ночь и опять я Немогу разобратся с функцией FpuFLtoA.
Код такой Code:
как видно , все варианты обозначения буферов обозначал. Всеравно ошибка. В буфере возврат ERROR либо 0. Заране Сэнкс Правка FpuFLtoA ( lpSrc1 //pointer to an 80-bit REAL number lpSrc2 //pointer to, or value of, number of decimal digits to return lpszDest //pointer to destination of result uID //ID flags for sources and format ) uID One of the SRC1_? flags must be OR'ed with only one of the SRC2_? flags and OR’ed with one of the STR_? flags. (The STR_REG flag does not need to be OR’ed if the string must be returned in decimal format; that is the default.) uID Flag Meaning SRC1_FPU Src is already on the FPU SRC1_REAL Src is a pointer to an 80-bit REAL number SRC2_DMEM Src2 is a pointer to a 32-bit unsigned integer SRC2_DIMM Src2 is a 32-bit unsigned integer ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube ![]() |
|
|
Создано: 26 декабря 2008 05:51 · Личное сообщение · #2 |
|
|
Создано: 26 декабря 2008 14:16 · Личное сообщение · #3 Сэнкю , я таких топов переворотил много . и всеравно
Фиг с ним , я убрал лишние движения и оставил основные , но опять подвела функция FpuFLtoA. Это засада какаято. Код Code:
Здесь в параметрах указано что число уже в сопроцессоре, команда FpuFLtoA возвращает 1 , то есть удачное выполнение , а не 0 , но в буфере появляется не число последнее в регистре СТ0 а нули. А должно быть значение типа 1.3466858585955 примерно. Вывести не получается результат работы
----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube ![]() |
|
|
Создано: 26 декабря 2008 14:58 · Поправил: GoldFinch · Личное сообщение · #4 |
|
|
Создано: 26 декабря 2008 16:43 · Личное сообщение · #5 |
|
|
Создано: 26 декабря 2008 17:30 · Личное сообщение · #6 пепец какой геморой, FloatToStr не понимает переменную с которой нужно перевести число. А эта функция не может забирать сразу с сопроцессора. Пробовал ...всеравно спасибо.
GoldFinch пишет: для простого вывода вещественного числа есть fld [xxx] fimul [_EightZeros] ;_EightZeros dd 100000000 ;8digits=32/4 fbstp tword [gRealBuf] ; gRealBuf dt ? wsprintfA(gMsgBuf,"%x.%08x",[gRealBuf+4],[gRealBuf]) SetDlgItemText([hDlg],IDC_ENT,gMsgBuf) (синтаксис фасма) Если всетаки не добью мой вариант , то попробую так. Принципиально не могу отступить. ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube ![]() |
|
|
Создано: 26 декабря 2008 21:06 · Личное сообщение · #7 Code:
![]() |
|
|
Создано: 26 декабря 2008 21:58 · Личное сообщение · #8 спасибо ... но всеравно , анличане мне тут написали , что да действительно уменьшив значение степени можно выполнить функу FpuFLtoA , тогда числа выводятся отлично , но когда 3.3850714925051991040e-46 .. то тогда нужно что то поменять , сказали типо буфер , но я сказал что число уже в сопроцессоре , и FpuFLtoA берет ооттуда ...
Поидее можно просто урезать ... и это не должно повлиять на степень Энтропии существенно , но хотелось бы точнее. Проблема ясна , как решить не понятно. ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube ![]() |
| eXeL@B —› Программирование —› FpuFLtoA |


Немогу разобратся с функцией FpuFLtoA.




Для печати