есть две программы: - первая делает подмену прерывания 20h, ждет нажатия кнопки, проверяет работу подмененного прерывания и восстанавливает это прерывание, после чего завершается int 20h - вторая прога содержит сначала int 20h, а потом ожидание нажатия клавиши теперь в чем проблема: в одном досовском окошке запускаю первую прогу, когда прерывание заменяется, запускаю в другом окошке вторую прогу и вот тут непонятки! почему вторая прога завершается не требуя нажатия клавиши? ведь прерывание подменено! выкладываю коды, чтоб понятнее было: ---------------------- прога номер 1---------------------------- org 100h cli ;подмена прерывания push ax push es xor ax,ax mov es,ax mov ax,[es:20h*4] mov [cs:int_old],ax mov ax,[es:20h*4+2] mov [cs:int_old2],ax mov ax,int_new mov [es:20h*4],ax mov [es:20h*4+2],cs pop es pop ax sti mov ax,10h ;проверка того, что прерывание подменено int 16h ;и тут все как надо mov ax,0 int 20h int 16h cli ;восстановка прерывания push ax push es xor ax,ax mov es,ax mov ax,[cs:int_old] mov [es:20h*4],ax mov ax,[cs:int_old2] mov [es:20h*4+2],ax pop es pop ax sti mov ax,10h ;завершение проги int 16h int 20h int_new: ;само прерывание (новое) mov ax,10h iret int_old dw 0 int_old2 dw 0 symbol db ' $' -------------------------прога номер 2------------------------- org 100h int 20h ;прога завершается как всегда, как будто mov ah,10 ;прерывание не подменяли int 16h писал все на NASM. подскажите, как сделать, чтобы прерывание подменивалось нормально для всей винды, а не для одного окошка и как это объяснить...
Потому что в винде каждой ДОС проге выделяется своя ДОС сессия (типа собственная персональная ДОС ) и на другие проги она никак повлиять не может. Чтобы работало в винде используй виндовую модель flat и API сервисы