10.11.2005, 07:16
общий
это ответ
Здравствуйте, Петров Максим Викторович!
Попробуйте всё ли из перечисленных шагов вы выполняли, потому что таким же образом перехватывали 1c интерупт, а он как и 9 от внешнего ус-ва.
; скопировать адрес предыдущего обработчика в переменную old_handler
mov ax,3587h ; АН = 35h, AL = номер прерывания
int 21h ; функция DOS: считать
; адрес обработчика прерывания
mov word ptr old_handler,bx ; возвратить
; смещение в ВХ
mov word ptr old_handler+2,es ; и сегментный
; адрес в ES,
; установить наш обработчик
mov ax,2587h ; АН = 25h, AL = номер прерывания
mov dx,seg int_handler ; сегментный адрес
mov ds,dx ; в DS
mov dx,offset int_handler ; смещение в DX
int 21h ; функция DOS: установить
; обработчик
; (не забывайте, что ES изменился после вызова функции 35h!)
[...]
; восстановить предыдущий обработчик
lds dx,old_handler ; сегментный адрес в DS и смещение в DX
mov ax,2587h ; АН = 25h, AL = номер прерывания
int 21h ; установить обработчик