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

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


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

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 573
от 15.10.2006, 01:35

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


Вопрос № 58330: Проблема такая. По книге делал программу, нужно сделать программу резидент, причем с защитой от повторных запусков. Для этого автор предлагает создать и установить прерывание, и при запуске программы вызывать его. Если прерывания не существует в...

Вопрос № 58.330
Проблема такая.
По книге делал программу, нужно сделать программу резидент, причем с защитой от повторных запусков. Для этого автор предлагает создать и установить прерывание, и при запуске программы вызывать его. Если прерывания не существует входный данные не изменятся, а если прерывание уже установлено, то оно должно изменить значения входных данных и таким образом программа сможет определить есть ли резидент в памяти или еще нет.
Я создал программу, на основе предыдущих глав, но почему то она не срабатывает. А точнее она определяет правильно первый запуск и по идее устанавливает новое прерывание (88h для int 10h). А вот повторный запуск не дает результатов. Я сделал так что выводилось сообщение - первый запуск или нет. Когда происходит первый запуск сообщение выводится, а когда остальные программа ничего не выводит, а должна.
Сложность добавило еще то, что отладчик afdpro не запускается после установки нового прерывания.
Я так же попробовал создать отдельное приложения для тестирования и оно тоже почему то ничего не выводит, после того как я устанавливаю новое прерывание. Обе проги в приложении. Хотя вторая по большому счету не нужна, просто я удостоверился что что-то не чисто.

Приложение:

Отправлен: 10.10.2006, 00:26
Вопрос задал: Torsten (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Pinkbyte
Здравствуйте, Torsten!

1) pushа и popf в функции прерывания убрать нафиг - флаги и ТАК будут сохранены(прочитай описание вызова прерываний и возврата через iret)

2) mov ah,35h
mov al,10h
int 21h
....................
mov ax,2521h
int 21h

Или делай в первом случае mov ax,3521h или во-втором mov ax,2510h, а то ты сохраняешь адрес(вектор) 10h прерывания а ПЕРЕХВАТЫВАЕШЬ 21h!!!!!!

---------
Нейтральность - высшее достижение сознания
Ответ отправил: Pinkbyte (статус: 1-ый класс)
Ответ отправлен: 10.10.2006, 18:38


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

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

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

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

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

В избранное