|
|
|
|
Переключение стека и сохранение регистров
Стек является важной составной частью среды программы. Так как повторная активация происходит в результате прерывания, то способ определения
используемого стека или доступного пространства стека отсутствует. Стеки, используемые диспетчером прерывания int 21h, достаточно большие, чтобы
разместить значения всех регистров процессора. Любая прерванная программа также должна иметь возможность использовать оставшуюся память стека, иначе
она не сможет выполнять запросы BIOS. Диспетчер BIOS сохраняет все регистры в текущем стеке.
Перед повторной активацией TSR, программа ISR должна сохранить все регистры и переключиться на личный стек TSR. Разумно сохранять регистры в
том стеке, который использовался в момент возникновения прерывания. Оба значения стека и регистров являются частью одного и того же контекста
программы, и стек должен иметь необходимое пространство для этих значений.
|
|