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

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


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

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

Выпуск № 411
от 29.03.2006, 02:35

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


Вопрос № 38301: В замечательной книге Калашникова, в главе где пишется первый резидент естьтакие строки mov ax,2521h mov dx,offset Int_21h_proc ;DX должен указывать на наш обработчик (т.е. Int_21h_proc) мне непонятно какую роль играет mov ax,2521h,...

Вопрос № 38.301
В замечательной книге Калашникова, в главе где пишется первый резидент естьтакие строки
mov ax,2521h
mov dx,offset Int_21h_proc ;DX должен указывать на наш обработчик (т.е.
Int_21h_proc)
мне непонятно какую роль играет mov ax,2521h, вроде весь кодпересмотрел, все понятно, все нормально, но вот за чем это, не понятно?
Отправлен: 23.03.2006, 11:49
Вопрос задал: Мехоношин Денис Сергеевич (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Мехоношин Денис Сергеевич!
Чтобы выполнить что-то, предоставляемое прерыванием 21h, необходимо
указать, что именно мы хотим сделать, так сказать задать номер функции.
Для этой цели служит регистр AH.
Все остальные регистры используются в зависимости от AH
В нашем случае, для функции AH=25h (установка адреса прерывания) необходимо
задать в AL номер прерывания (21h), а в DS:DX задать адрес нового вектора

---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Студент)
Ответ отправлен: 23.03.2006, 12:09

Отвечает: Gogenot
Здравствуйте, Мехоношин Денис Сергеевич!
ah - номер ф-кции DOS
al - дополнительные параметры
В данном случае, ф-ция 25 устанавливает вектор перехватываемого прерывания.
(В этом примере это 21е прерывание.) Адрес нужен для того что-бы можно было
вернуть управление оригинальному обработчику.
---------
Что один собрал, другой завсегда сломать сумеет.
Ответ отправил: Gogenot (статус: 1-ый класс)
Ответ отправлен: 23.03.2006, 23:49

Отвечает: Пан Павел Константинович
Здравствуйте, Мехоношин Денис Сергеевич!

Как дела У вас?
И так.

[INT 21h, функция 25h] - Установить вектор прерывания.
Вход: <ah> = 25h
<al> = номер прерывания
<ds:dx> = адрес программы обработки прерывания
Выход: НЕТ

Описания:
Устанавливает значение элемента таблицы векторов прерываний для
прерывания с номером <al> равным <ds:dx>

Следовательно mov ax,2521h:
25 - это функция для установки вектора прерывания
21 - номер прерывания(когда будет идти вызов 21h прерывания мы будем попадать на наш обрабодчик)

С, Уважением MnEm0n!C.

---------
Hello Worlds
Ответ отправил: Пан Павел Константинович (статус: 4-ый класс)
Ответ отправлен: 24.03.2006, 00:01


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.20 (beta) от 17.03.2006
Яндекс Rambler's Top100

В избранное