Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 291
от 18.11.2005, 19:48

Администратор:Калашников О.А.
В рассылке:Подписчиков: 264, Экспертов: 23
В номере:Вопросов: 2, Ответов: 6


Вопрос № 29464: Обьясните пожалуйста почему не работает такая вещь: ... mov ax,0 mov es,ax cli mov word ptr es:[24h],offset Pocedure mov word ptr es:[26h],cs sti ... Не работает и всё!!!...
Вопрос № 29479: Уважаемые эксперты у меня вопрос такой: - как можно произвести расчет синуса и косинуса на ассемблере. Какой тут нужно применить алгоритм??? Заранее спасибо!!!...

Вопрос № 29.464
Обьясните пожалуйста почему не работает такая вещь:

...
mov ax,0
mov es,ax
cli
mov word ptr es:[24h],offset Pocedure
mov word ptr es:[26h],cs
sti
...

Не работает и всё!!!
Отправлен: 13.11.2005, 13:50
Вопрос задал: Петров Максим Викторович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Евгений Иванов
Здравствуйте, Петров Максим Викторович!
почему же - всё прекрасно работает! :)


---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 13.11.2005, 14:00

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Петров Максим Викторович!
В самой этой последовательности команд проблем нет.
Скорее всего есть проблемы в Procedure. В результате чего не происходит нормального возврата из прерывания. Так что, давай код Procedure в студию...
---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: 9-ый класс)
Отправлен: 13.11.2005, 16:11

Отвечает: Юра Устинов
Здравствуйте, Петров Максим Викторович!
скопировал бит в бит, работает, уточните ваш запрос, до свидания.
З.Ы.
xor ax,ax - быстрее и меньше чем movом
---------
Спасём Россию!!!
Ответ отправил: Юра Устинов (статус: 5-ый класс)
Отправлен: 13.11.2005, 16:48


Вопрос № 29.479
Уважаемые эксперты у меня вопрос такой:
- как можно произвести расчет синуса и косинуса на ассемблере.
Какой тут нужно применить алгоритм???
Заранее спасибо!!!
Отправлен: 13.11.2005, 18:24
Вопрос задал: Ig0rSV (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: mvp
Здравствуйте, Ig0rSV!
Нужно использовать математический сопроцессор, там есть FSIN и FCOS для вычисления синуса и косинуса. Посмотрите ссылки (в поиске по странице введите sin - так быстрей будет, а то там много всего):
http://www.lib.csu.ru/DL/bases/prg/frolov/books/bsp/v02/ch12.htm
http://faqs.org.ru/progr/other_l/asm.htm

Можно и без него обойтись, составив таблицы (типа Брадиса) и поместить в код программы. Правда проблема возникает с представлением нецелых чисел. Но, например, мы можем их считать целыми, т. к. sin и cos лежат в [-1; 1]. А при операциях учитывать, что наши значения sin и сos умножены, например на 10000 (четыре знака после запятой).

Можно попробывать самому вычислить sin и cos, пользуясь разложением в ряд Маклорена (разложение в ряд Тейлора, только в окрестности 0):
cos(x)=x-(x^2)/2!+ (x^4)/4!- (x^6)/6!+ (x^8)/8!-…
sin(x)=1-(x^3)/3!+ (x^5)/5!- (x^7)/7!+ (x^9)/9!-…

Правда, прийдётся использовать сопроцессор. И вычислять, пока очередное слагаемое не станет меньше заданного епсилон. Зато интересно будет сравнить полученные результаты с тем, что выдают функции FSIN, FCOS ассемблера :)

---------
Моя совесть чиста - не бывшая в употреблении
Ответ отправил: mvp (статус: 10-ый класс)
Отправлен: 13.11.2005, 18:57

Отвечает: Евгений Иванов
Здравствуйте, Ig0rSV!
Для этого нужно просто использовать команды математического процессора.

FCOS, FSIN.
---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 13.11.2005, 21:49

Отвечает: Юра Устинов
Здравствуйте, Ig0rSV!
Если говорить про алгоритмы, то можно использовать числовые ряды, но думаю вам такое не по душе, то лучше всего использовать сопроцессор
для нахождения синуса вам нужно положить источник в стек командой FLD
и найти синус командой FSIN, а полученный результат командой FST закинуть в приёмник. Повторим:
fld perem ;32,64 битная пременная
fsin
fst sinperem;32,64 битная пременная
---------
Спасём Россию!!!
Ответ отправил: Юра Устинов (статус: 5-ый класс)
Отправлен: 15.11.2005, 05:18


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100 hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=314124&im=101&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("HotLog")

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Архив рассылки
Отписаться
Вспомнить пароль

В избранное