Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль / tp3 / tp3 / 18.doc
Скачиваний:
22
Добавлен:
10.12.2013
Размер:
69.12 Кб
Скачать

Interrupt;

begin

.

.

.

end;

Как можно видеть, все регистры передаются в качестве псевдопараметров, так что вы можете их использовать и изменять в своей программе. Вы можете опустить некоторые из параметров или все параметры, начиная с параметра Flag и кончая ВР. Попытка описать большее количество параметров или попытка опустить отдельный параметр без пропуска также того параметра, за которым он следует, является ошибкой, хотя сообщения о ней не выдается. Например:

procedure IntHandler(DI,ES,BP : word);

procedure IntHandler(SI,DI,DS,ES,BP : word);

При входе в нее процедура обработки прерываний автоматически сохраняет все регистры (независимо от заголовка процедуры) и инициализирует регистр DS:

PUSH AX

PUSH BX

PUSH DX

PUSH SI

PUSH DI

PUSH DS

PUSH ES

PUSH BP

MOV BP,SP

SUB SP,LocalSize

MOV AX,SEG DATA

MOV DS,AX

Обратите внимание на отсутствие инструкции STI, чтобы разрешить дальнейшие прерывания. С помощью оператора inline вы можете написать ее сами (если это необходимо). Набор операторов выхода восстанавливает регистры и выполняет функцию возврата прерывания:

MOV SP,BP

POP BP

POP ES

POP DS

POP DI

POP SI

POP DX

POP CX

POP BX

POP AX

IRET

Процедура обработки прерываний может модифицировать свои параметры. Когда обработчик прерываний возвратит управление, изменение описанных параметров приведет к изменению содержимого соответствующих регистров. Это может оказаться полезным, когда вы используете обработчик прерываний в качестве пользовательского сервисного средства, аналогичного вызову функции DOS по инструкции INТ 21Н.

В процедурах обработки прерываний, обслуживающих прерывания, получаемые от аппаратных схем, следует воздерживаться от использования каких-либо программ ввода-вывода Турбо Паскаля или программ распределения памяти, поскольку они не являются реентерабельными. Из-за их нереентерабельности нельзя также использовать никакие функции DOS.

Соседние файлы в папке tp3