Вопрос № 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, вроде весь кодпересмотрел, все понятно, все нормально, но вот за чем это, не понятно?
Отвечает: Лысков Игорь Витальевич
Здравствуйте, Мехоношин Денис Сергеевич!
Чтобы выполнить что-то, предоставляемое прерыванием 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