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

Ассемблер? Это просто! Учимся программировать (FAQ)


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Ассемблер? Это просто! Учимся программировать (FAQ)
______________________________________

Выпуск N 046

Вопросы, которые поступили от подписчиков рассылки
"Ассемблер? Это просто! Учимся программировать"

Дата выхода: 2001-07-30


Вопрос №401

Приветик.

Вопрос. Есть ли у сопроцессора команда записи в ST непосредственного значения?

Ответ

Здравствуйте, Оксана!
Может я ошибаюсь но вроде нет таких команд. Единственое
что я знаю о передаче в стэк контант это
fldz загрузка нуля в вершину стэка
fld1 загрузка единицы
fldpi загрузка числа П
fldl2t загрузка двоичного логарифма десяти
fldl2e загрузка двоичного логарифма числа e
fldlg2 загрузка десятичного логарифма двух
fldlf2 загрузка натурального логарифма двух


Отправил эксперт: Autogen
Эксперт отправил ответов (всего): 4

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №397

Здравствуйте.
Как можно получить системное время, не используя прерываний.
Если можно, то с исходниками.
Заранее спасибо.

Ответ

Здравствуйте, Павел!
Есть такая штука, называется КМОП память. И в ней хранится системное время и много другой инфы о писюке. Доступ к КМОП осуществляется посредством портов 70h и 71h. В 70h нужно поместить номер байта (нумерация с нуля) и из 71h считать значение из КМОП (из 71h значение в байт)
В 70h: Из 71h:
0h Секунды системного времени
1h Секунды будильника
2h Минуты системного времени
3h Минуты будильника
4h Часы системного времени
5h Часы будильника
6h День недели текущей даты
7h День текущей даты (типа число)
8h Месяц
9h Год
Информация полученая из 71h храниться в BCD числах, в старшей
тетраде (старшие 4 бита) храниться число десятков. В младшей,
соответственно, число единиц.
Время будильника определяет момент времени инициации аппаратного
прерывания irq8, спомощью которого можно автоматически запустить
какую нибудь прогу реального времени т.е. в строго назначеный момент
запускается прога.
Ну и всё. Должен пердупредить, КМОП вещь весьма тормозная. Поэтому
между двумя последовательными обращениями к КМОП, полезно
сделать небольшую паузу.


Отправил эксперт: Autogen
Эксперт отправил ответов (всего): 5

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №398

Хай ол!
Кто знает как считать Sin(x) & Cos(x) на тасме?
(Можно с юзанием Co-processor)
Пасибо.

Ответ

Здравствуйте, Alex2000!
Тут есть несколько варианов:
1:Используя таблицы приведения. (самое быстрое)
2:Вычисляя ряды разложения sin и cos (надеюсь все знают матан :/
3:Ну и наконец у сопроцесора есть команды fsin и fcos
Перед тем как их применить исходный угол в радианах надо поместить
в вершину стэка сопроцессора.
Затем fsin или fcos (без параметров), и считать из вершины стэка искомое.


Отправил эксперт: Autogen
Эксперт отправил ответов (всего): 6

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №400

Приветик.
А как программно перезагрузить компьютер?

Ответ

Здравствуйте, Оксана!
INT 19 H
ИЛИ JMP 0000:FFFFH


Отправил эксперт: Denis K
Эксперт отправил ответов (всего): 10

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №399

Привет.
Подскажите, где я могу достать информацию о стандарте VESA и о его режимах?

Если у кого есть прям на жестком диске, вышлите плз на stepan@hotbox.ru

Ответ

Здравствуйте, Stepan Yar!
iNTERRUPT LIST


Отправил эксперт: Denis K
Эксперт отправил ответов (всего): 11

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №397

Здравствуйте.
Как можно получить системное время, не используя прерываний.
Если можно, то с исходниками.
Заранее спасибо.

Ответ

Здравствуйте, Павел!
Переменная БИОС 40h:6Сh длиной 4 байта содержит колво тиков таймера с
начала суток (увеличивается каждые 18 раз в сек)
Переменная 40h:70h - флаг переполнения таймера(перешел через 24 часа)


Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 37

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №400

Приветик.
А как программно перезагрузить компьютер?

Ответ

Здравствуйте, Оксана!
Попробуй в переменную БИОСа 40h:72h записать 1234h- по моему оно, хотя не уверен:(


Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 38

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №402

оПХБЕР, щЙЯОЕПР.

ъ УНРЕК ЯДЕКЮРЭ Б ОЮКХРЕПЕ ЦПЮДХЕМР НР ВЕПМНЦН Й АЕКНЛС Б ПЕФХЛЕ 13h.
бНР ЙСЯНЙ ОПНЦПЮЛЛШ:
mov al,0
mov dx,3C8h
out dx,al
mov dx,3C9h
@1:
out dx,al
out dx,al
out dx,al

inc al
jne @1

мН ОЮКХРПЮ ОНВЕЛС-РН МЕ ЛЕМЪЕРЯЪ Х НЯРЮЕРЯЪ ЙЮЙ АШКЮ.
оНЛНЦХРЕ, ОНФЮКСИЯРЮ.

Ответ

гДПЮБЯРБСИРЕ, Stepan Yar!
дЮ ОПНЯРЪР ЛЕМЪ ЩЙЯОЕПРШ, ЕЯКХ Ъ НЬХАСЯЭ (Ъ ДЮБМН ЩРХЛ ГЮМХЛЮКЯЪ Х БЯЕ ТЮИКШ С ЛЕМЪ ДНЛЮ, Ю ЯЕИВЮЯ Ъ МЮ ПЮАНРЕ)
мЕЯЙНКЭЙН ГЮЛЕРНЙ:
1)оН-ЛНЕЛС Б ОНПР 3c9h ОНЯШКЮЕРЯЪ 4-Е АЮИРЮ
L-R-G-B, L - МЕ ЧГЮЕРЯЪ.
2)mov al,0- РСР РНВМН ДНКФЕМ АШРЭ МНКЭ?

бНАЫЕЛ Ъ ОНЯЛНРПЧ ДНЛЮ ХЯУНДМХЙ НДМНИ ЛНЕИ ДПЕБМЕИ ОПНЦХ_РЮЛ_ЩРН_ЕЯРЭ--РНЦДЮ Ъ ОПХЬКЧ РНВМШИ НРБЕР.


Отправил эксперт: Alex2000
Эксперт отправил ответов (всего): 1

Экспертная группа: нАЫХЕ БНОПНЯШ ОН ОПНЦПЮЛЛХПНБЮМХЧ МЮ юЯЯЕЛАКЕПЕ ОНД DOS

Вопрос №399

Привет.
Подскажите, где я могу достать информацию о стандарте VESA и о его режимах?

Если у кого есть прям на жестком диске, вышлите плз на stepan@hotbox.ru

Ответ

Здравствуйте, Stepan Yar!

На моей страничке http:\\vdragon-pas.chat.ru
в разделе TEXT


Отправил эксперт: VD (vdragon-pas.chat.ru - Программирование графики на Пакаль со вставками на)
Эксперт отправил ответов (всего): 22

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №402

Привет, Эксперт.

Я хотел сделать в палитере градиент от черного к белому в режиме 13h.
Вот кусок программы:
mov al,0
mov dx,3C8h
out dx,al
mov dx,3C9h
@1:
out dx,al
out dx,al
out dx,al

inc al
jne @1

Но палитра почему-то не меняется и остается как была.
Помогите, пожалуйста.

Ответ

Здравствуйте, Stepan Yar!
А че тут мучится, ты меняешь значение только нулевого цвета палитры,
который ты послал в порт 3C8h в самом начале.

Даже если у тебя все и получилось то ты увидал бы 4 градиента, так как в порт 3C9h можно посылать значения от 0 до 63

Вобщем это делается так

Приложение:


Отправил эксперт: VD (vdragon-pas.chat.ru - Программирование графики на Пакаль со вставками на)
Эксперт отправил ответов (всего): 23

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №400

Приветик.
А как программно перезагрузить компьютер?

Ответ

А так.

Приложение:


Отправил эксперт: K.A. NiCK (http://www.lightstorment.f2s.com - Lightstorm entertainment home page)
Эксперт отправил ответов (всего): 42

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №398

Хай ол!
Кто знает как считать Sin(x) & Cos(x) на тасме?
(Можно с юзанием Co-processor)
Пасибо.

Ответ

Здравствуйте, Alex2000!
У сопроцессора есть очень классная команда fsincos. Соответственно она считает и то и другое, для числа в ST(0) и пишет в ST - косинус, а в ST(1) - синус. Действует начиная с 80387. Для предыдущих есть команды fcos и fsin. Угол должен быть в радианах и не дожен превышать 2 в 63 степени по модулю...


Отправил эксперт: Александр
Эксперт отправил ответов (всего): 60

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №401

Приветик.

Вопрос. Есть ли у сопроцессора команда записи в ST непосредственного значения?

Ответ

Здравствуйте, Оксана!
Конечно есть! Для загрузки целого числа используй fild, а для загрузки действительного fld. У обеих команд 1 операнд. Число загружается в вершину стека. Если стек сопроцессора заполнен, то fld изменяет значение вершины на NAN(не число - специальное значение). Операндом fild может быть только переменная(DW,DD,DQ), а операндом fld как переменная(DD(одинарная точность),DQ(двойная точность),DT(80bit точность, максимальная)), так и регистр сопроцессора.


Отправил эксперт: Александр
Эксперт отправил ответов (всего): 61

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №395

Здравствуйте ув. эксперты!
У меня такой вопрос: можно ли с помощью матерной
платы например от 486 прошивать УФРПЗУ (например
27512 у нее всего 28 ног)
Если да то как?

Ответ

Здравствуйте, Dr. Zombie!
По-моему ты сам на него ответил - оно же УльтраФиолет стираемое, а не ЭлектрическиСтираемое. Если ты эту БИОС оттуда извлечешь, то тогда ты сможешь его репрограммировать, но с использованием дополнительных средств: УФ лампа(можно прямые солнечные лучи в течение получаса), программатор, руки прямые 1 штука(лучше 2).


Отправил эксперт: Александр
Эксперт отправил ответов (всего): 62

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №389

Здравствуйте, уважаемые эксперты.
У меня к Вам есть пара вопросов:
1: Есть одно-байтовый регистр, например, ah и есть переменная str dw ?. Как число из регистра ah в шестнадцатиричной системе (0h-63h) перевести в строковой формат в переменную str в десятичной форме?
2: Есть две переменные, например, str dq ? и str2 db 'abcdefghijk'. Как из m-ого байта переменной str2 перенести один байт в n-ый байт переменной str, причем, числа m и n содержатся в регистрах, например, ah и al соответственно (проверка корректности чисел m и n не требуется)?
Заранее благодарен.

Ответ

Здравствуйте, Павел!
Сразу к делу!
Ответ1. По-моему самое изящное решение(число должно быть в al).
aam
add ax, 3030h
mov cl,8
rol ax, cl
mov str, ax

Ответ2. Тут совсем некрасиво выходит...
mov bx, offset str2
add bx, m
mov al, [bx]
mov bx, offset str1
add bx, n
mov [bx], al


Отправил эксперт: Александр
Эксперт отправил ответов (всего): 64

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Подписаться на рассылки

Рассылки Subscribe.Ru
Ассемблер? Это просто! Учимся программировать
Ассемблер? Это просто! Учимся программировать (FAQ)

Форма подачи вопроса

ВНИМАНИЕ!!! Пожалуйста, НЕ высылайте один вопрос сразу нескольким подгруппам! Дополнения к вопросам, на которые эксперт уже ответил НЕ следует направлять ведущему рассылки (я не успеваю!). Просто скомбинируйте первый вопрос и дополнение к нему, а затем заново отправьте его, используя приведенную ниже форму!

Нажимайте кнопку "Отправить" только ОДИН раз и дождитесь полной загрузки страницы, иначе вопрос будет продублирован!


Ваше имя *:

Ваш e-mail *:

Подгруппы:

Вопрос *:

Прилагаемая программа (если необходимо):


Регистрация в качестве эксперта

Архив выпусков


Ведущий рассылки,

Калашников Олег: Assembler@Kalashnikoff.ru
ICQ No.:
68951340
URL сайта подписчиков: http://www.Kalashnikoff.ru

______________

По вопросам сотрудничества, рекламы и спонсорства обращайтесь:

  1. Публичное размещение материала из рассылки: Cooperation@Kalashnikoff.ru
  2. Реклама на сайте, в книге и рассылках: http://www.Kalashnikoff.ru/Reklama.html, Reklama@Kalashnikoff.ru
  3. Издание книги (спонсорство): Sponsor@Kalashnikoff.ru

Рассылка 'Ассемблер? Это просто! Учимся программировать (FAQ)' Рассылка 'Ассемблер? Это просто! Учимся программировать'


(C) Москва, 2001. Авторское право принадлежит Калашникову О.А. Публичное размещение материала из рассылки, а также его использование полностью или частично в коммерческих или иных подобных целях без письменного согласия автора влечет ответственность за нарушение авторских прав.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться Рейтингуется SpyLog

В избранное