Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2011, 08:04   #1
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию Выдает NAN после пары циклов, ASM

Код:
.386                      
      .model flat, stdcall      
      option casemap :none      

      include C:\masm32\include\windows.inc
      include C:\masm32\include\user32.inc
      include C:\masm32\include\kernel32.inc
      includelib C:\masm32\lib\user32.lib
      includelib C:\masm32\lib\kernel32.lib
  .CONST
  .DATA?
  .DATA
u dq 10.0    							
w dq 2000.0
t dq 0.0002
d dq 0.0002
.CODE
start:
m1:
FLD w
FLD t
FMUL ST(0), ST(1)
FCOS
FLD t
FLD d
FADD
FSTP t
jz m1
invoke ExitProcess,0
end start
Комменты, думаю, это уж слишком, но в программе сначала частота перемножается со временем, затем берется cos, а затем увеличивается время на некоторый шаг. Так вот, примерно на 4-м цикле время обращается в NAN! Как так
Krasi вне форума Ответить с цитированием
Старый 02.10.2011, 11:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ты не учел или не знал что стек сопроца не резиновый, и после его переполнения (когда втюхиваешь все 8 чисел и не выбираешь мусор) требуется генеральная уборка, чем и занимается команда finit. Поставь ее в начале цикла.

P.S. Смысл программы понять не смог...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.10.2011, 12:26   #3
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Смысл - сгенерировать синусоиду:D. Круто? Убрал NAN, но а дальше я не понял, все-таки. Вот у меня в результате работы в стеке светится косинус некоторого аргумента, теперь, насколько я понял задание, без наличия ПК нужно было бы просто воспроизводить эти уровни, наверное, с помощью внешнего ЦАП (а так, может быть, просто записывать в память вещественные числа в необходимом формате). Я не очень соображаю про сопроцессор, как вывести такое вещественное число программно и аппаратно?
Krasi вне форума Ответить с цитированием
Старый 02.10.2011, 17:33   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
без наличия ПК
Т.е. задача - запрограммировать контроллер на выдачу в аналоговый поток синусоидального сигнала? Йоу! ИМХО тут стоит смотреть в сторону AVR Studio.
Ито не факт что проц контроллера умеет тригонометрию считать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.10.2011, 18:16   #5
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

А чего такого? Тут тоже записал в сектор программ данные и при включении МП обратился к начальному адресу. Ну суть в том, чтобы теперь вывести эту синусоиду хотя-бы в память, я это тоже не до понял, хотя там где-то что-то писали про целую и дробную части. Хы, я не допоняв таких деталей, пытался в прошлом семестре уже в ISE симулировать I8086. Может еще не один семестр промучаюсь, я чуть было в сессию не пролетел))

А я вспомнил еще, что в задании надо было. К коду приписать
FMUL u
и
FRNDINT,
а потом уже передать куда-нибудь округленное число. Ну и куда его можно передать? 4 варианта ответа, 3 подсказки:D

Последний раз редактировалось Stilet; 02.10.2011 в 19:27.
Krasi вне форума Ответить с цитированием
Старый 02.10.2011, 19:29   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А чего такого?
Да ничего, просто я не встречал промышленные камушки, способные синусы считать... Я не против если твой контроллер сможет это - зер гут
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.10.2011, 19:57   #7
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Так не запрограммировать контроллер, а давать команды сопроцессору для вычисления синуса. Ну по архитектуре не очень пока понимаю, сопроцессор как-то зависит от процессора, наверное. Короче сейчас буду с утра даташиты искать на сопроцессоры
Krasi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написал прогу в паскаль в ответ после запуска выдает ошибку.Что не так? sawel23 Паскаль, Turbo Pascal, PascalABC.NET 5 27.05.2010 15:37
Ошибка в алгоритме?Выдает ошибку после компиляции. Aerial Общие вопросы C/C++ 2 12.05.2010 16:52
результат выдает -Nan- Тонущий коржик Помощь студентам 2 25.11.2009 23:28
Выдаёт NAN DM_bite Помощь студентам 2 26.08.2008 20:52
NaN in Math Sibedir Общие вопросы Delphi 15 04.03.2008 06:58