Ан
Анна

Собственный обработчик прерывания (ASSEMBLER)

Написал резидентный обработчик, который (по всей видимости) использует досовский стек. Появилась необходимость стека в обработчике, как это реализовать? Или можете дать ссылки, где об этом что-то написано?
Спасибо!

ВС
Виктор Снигур

Надеюсь, что резидентную программу для MS DOS вы написали как и положено, в виде исполняемого *.com файла.

MyInt: ;точка входа в обработчик
push ax
mov word ptr cs:StkPtr,sp ;сохранение указателя на системный стек
mov ax,ss
mov word ptr cs:StkPtr+2,ax ;сохранение сегментной части адреса системного стека
mov ax,cs ;установка сегментной части собственного стека
mov ss,ax
mov sp,MyStkPtr ;установка указателя на собственный стек
pusha

;Здесь ваш обработчик что-то делает

popa
lss sp,cs:StkPtr ;Восстановление системного стека (сегментной части и указателя)
pop ax
iret ;выход из обработчика

StkPtr dd ? ;Здесь сохраняется адрес системного стека
MyStk dw 80h dup (?) ;Область собственного стека обработчика
MyStkPtr equ offset $ ;Адрес указателя на свой стек

end start

Похожие вопросы
[ASSEMBLER] Как выйти на обработчик прерывания?
PHP обработчик не обрабатывает в браузере
Assembler: Взаимодействие с пользователем
Обработчики событий JS
Assembler!!! help me!!
С чего начать? Assembler
Assembler. Как описать переменную?
Несколько обработчиков одного события (С++).
Где ошибка в коде assembler!!!
Взгляните на мой плохой Assembler