Вопрос № 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