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

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


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

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

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

Выпуск № 370
от 12.02.2006, 23:57

Администратор:Калашников О.А.
В рассылке:Подписчиков: 257, Экспертов: 24
В номере:Вопросов: 3, Ответов: 5


Вопрос № 34925: Как реализовать математические выражения (корень, логорифм и т.п) Заранее спасибо!...
Вопрос № 34964: Здравствуйте Уважаемые Эксперты!Ответьте мне пожалуйста на один вопрос. Почему символ невиден на экране? Приложение запускаю изTotal Commander . Где эта рожица?...
Вопрос № 34967: Здравствуйте ребята. Вот не могу "въехать" в строку mov es:[di],ax. Калашников писал, что по адресу видеобуфера мы заносим символ и атрибут. Di - это указатель или смещение? И почему di? Почему именно так заносим? Это станд...

Вопрос № 34.925
Как реализовать математические выражения (корень, логорифм и т.п)
Заранее спасибо!
Отправлен: 07.02.2006, 12:32
Вопрос задал: Gwest (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Евгений Иванов
Здравствуйте, Gwest!
Используй математический сопроцессор.
Там большинство команд напрямую реализованы, остальные создавай сам с помощью математических формул.
Удачи!
---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 07.02.2006, 13:12

Отвечает: Sager
Здравствуйте, Gwest!
Открой учебник высшей математики и там ищи формулы и ряды Тейлора для элементарных функций. Напр., для sinx = x - (x^3)/3! + (x^5)/5! - ... = сумма(к от 1 до бесконечности) (((-1)^k)*x^(2*k+1))/(2*k+1)! - чем больше к, тем больше точность вычислений. Функция е^x = сумма (x^k)/k!, она есть обратная к lnx .
Если не ошибаюсь, то lnx= сумма(((-1)^k+1) *( x^k)/k!) ну и так далее. Вообще для каждой непрерывной функции y=f(x) (а всякая элементарная функция непрерывна), а также если она имеет производную любого порядка, можно записать разложение по Тейлору вычислить ее т.о.
Ответ отправил: Sager (статус: Практикант)
Отправлен: 07.02.2006, 13:45
Оценка за ответ: 5


Вопрос № 34.964
Здравствуйте Уважаемые Эксперты!Ответьте мне пожалуйста на один вопрос. Почему символ невиден на экране? Приложение запускаю изTotal Commander . Где эта рожица?

Приложение:

Отправлен: 07.02.2006, 19:32
Вопрос задал: OLGA (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Sager
Здравствуйте, OLGA!
Поставь вначале программы след строки:
mov ax,3
int 10h
В winxp нужно устанавливать видеорежим, иначе ничего не увидишь....
Ответ отправил: Sager (статус: Практикант)
Отправлен: 07.02.2006, 20:34


Вопрос № 34.967
Здравствуйте ребята.

Вот не могу "въехать" в строку mov es:[di],ax. Калашников писал, что по адресу видеобуфера
мы заносим символ и атрибут. Di - это указатель или смещение? И почему di?
Почему именно так заносим? Это стандарт (ГОСТ)?
Какие еще есть подобные строки (или буферы)? Если можно пример с объяснением.
Если экран надо заполнить символами весь, то почему cx,2000. Мониторы то разные по размеру. В чем суть?


Спасибо за пояснения.

Отправлен: 07.02.2006, 20:18
Вопрос задал: Baim (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Sager
Здравствуйте, Baim!
В ассемблере указатель и смещение это можно сказать одно и тоже. И необязательно использовать di и es, главное ведь что в них лежит, можешь вместо es и di использовать, например, ds и bx. А так заносим потому что таков синтаксис ассемблера. Еще дальше есть 1,2..7 видеостраницы, есть еще графические страницы, где графика выводится.(это 0a000h).
mov cx,2000, потому что по умолчанию установлен 3 режим, 25 строк на 80 столбцов. 25*80=2000 . И это на всех мониторах так будет, режим-то один у всех установлен одинаковый. Чтобы сменить его, вначале программы введи следующее:
mov ax,0
int 10h
(40x25)
mov ax,3
int 10h
(80x25)
Ответ отправил: Sager (статус: Практикант)
Отправлен: 07.02.2006, 20:50
Оценка за ответ: 5

Отвечает: Евгений Иванов
Здравствуйте, Baim!
DI - в нём будет смещение относительно начало сегмента ES.
Понятие "указатель" из Си может примениться и здесь, но советую использовать понятие адрес.

Заносить можно не только так, но и по любому другому регистру, с которым возможна адресация. Это SI, BX, BP, EAX, EBX,ECX,EDX,ESI,EDI,ESP,EBP.

Почему 2000? А потому что 3 видеорежим по сути стал стандартом с его 80 на 25 символов. А это 4 Кб на буфер.

Удачи!
---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 07.02.2006, 21:51


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

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

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

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

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


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


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.14 (бета) от 09.02.2006
Яндекс Rambler's Top100

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

В избранное