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

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


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

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

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

Выпуск № 368
от 10.02.2006, 23:33

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


Вопрос № 34800: Здравствуйте уважаемые эксперты! Помогите разобраться, что к чему. Т. е. мне нужно вызвать прерывание 21h, не на прямую, а через jmp. Для этого я попытался засунуть это прерывание, (точнее его адрес) в метку бокс (box: dd 0) и потом просто туда п...

Вопрос № 34.800
Здравствуйте уважаемые эксперты!
Помогите разобраться, что к чему. Т. е. мне нужно вызвать прерывание 21h, не на прямую, а через jmp. Для этого я попытался засунуть это прерывание, (точнее его адрес) в метку бокс (box: dd 0) и потом просто туда прыгнуть, но у меня не чего не выходит, (недопустимые инструкции). Посмотрите пожалуйста, приложение, и объясните мне, что я делаю не так.

Приложение:

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

Отвечает: Стас
Здравствуйте, Minigun!
1) вместо jmp используй Call, а то из твоей проги уходишь на int 21 и не возвращаешся...

2) присвой DS = CS

т.е.:
...
mov dx,offset slovo
push cs
pop ds
call dword ptr cs:[box]
int 20h
Ответ отправил: Стас (статус: Специалист)
Отправлен: 06.02.2006, 00:21
Оценка за ответ: 5
Комментарий оценки:
Спосибо! Все работает в лучшем виде.

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Minigun!
Небольшое дополнение.
Можно использовать и jmp.
Например в случае, когда пишешь свой обработчик какого-нибудь прерывания
и хочешь отправить на старую отработку. Тогда iret старого вектора вернет
в точку, откуда было вызвано твое прерывание.
new_21h:
cmp ah,9
jne to_old_vector
...
iret
to_old_vector:
jmp dword ptr cs:[old_21h]

---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Студент)
Отправлен: 06.02.2006, 10:25
Оценка за ответ: 5
Комментарий оценки:
Понял, в моем случе было, что мы прыгали на прерывание, а на зад не возвращались. Теперь я с этим разобрался, спасибо!


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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
Архив рассылки
Отписаться Вебом Почтой
Вспомнить пароль

В избранное