Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2022, 22:34   #1
максхи
Пользователь
 
Регистрация: 20.12.2021
Сообщений: 15
По умолчанию синус на ассемблере и проблемы с FPU

Как найти синус или косинус числа в переменной ug при помощи сопроцессора, и поместить в переменную x округлённый результат?
Я пытался разобраться с ариф-м сопроцессором, но числа становятся другими, даже при вводе 0 посредством команды fld в st(0) располагается
float 7.0064923216240853540E-44
hex 3F6F C8000000 00000000
Почему?
MASM32
максхи вне форума Ответить с цитированием
Старый 08.06.2022, 22:48   #2
macomics
Форумчанин
 
Регистрация: 17.04.2022
Сообщений: 638
По умолчанию

А полный исходный текст можно? Ответить что именно вы сделали не так не получится.
Цитата:
Сообщение от максхи Посмотреть сообщение
hex 3F6F C8000000 00000000
То что вы привели это 11001e-10010100(10=2)
Код:
fldpi ; pi()
fimul dword ptr AngleDeg ; Угол в градусах (целое в диапазоне -180 .. 180)
fidiv dword ptr const180 ; число 180 (целое =180)
fld st0 ; скопировали значение
fld st0 ; скопировали значение
fsin ; st0=sin(AngleDeg); st1 = AngleRad; st2 = AngleRad
fstp dword ptr floatSin_AngleDeg ; вещественное число =sin(AngleDeg)
fcos ; st0 = cos(AngleDeg); st1 = AngleRad
fstp dword ptr floatCos_AngleDeg ; вещественное число =cos(AngleDeg)
fsincos ; st0 = cos(AngleDeg); st1 = sin(AngleDeg)
fstp dword ptr floatCos_AngleDeg_too
fstp dword ptr floatSin_AngleDeg_too
Пример использования команд FPU fsin / fcos / fsincos

Последний раз редактировалось macomics; 09.06.2022 в 01:04.
macomics на форуме Ответить с цитированием
Старый 18.06.2022, 12:16   #3
Nif-naf
Форумчанин
 
Аватар для Nif-naf
 
Регистрация: 05.09.2016
Сообщений: 117
По умолчанию

Необходимо считать по рад=грд*П/180. В код нужен угол в радианах.
Код:
finit
fld DWORD PTR рад
fsin
fstp DWORD PTR SINUS
fwait
Немного о GoAsm.
Nif-naf вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Синус kuy Паскаль, Turbo Pascal, PascalABC.NET 1 08.11.2011 22:56
Проблемы с программами на ассемблере? Voozy Помощь студентам 1 27.04.2010 17:01
как объявить синус? pinya86 Microsoft Office Excel 4 13.05.2009 03:05
синус Кристина1 Помощь студентам 9 13.11.2008 22:38
Синус AndrewASV Общие вопросы Delphi 4 24.10.2007 13:21