Схема обработки прерывания
При выполнении команд основной программы и подпрограмм обработчиков прерываний для хранения временных данных (операндов, результата, слова состояния и т.п.) используется один и тот же набор рабочих регистров. Из-за случайности момента появления запроса прерывания переход на обработчик прерывания сразу после его появления может привести к нарушению нормального хода выполнения программы из-за разрушения данных основной программы. Поэтому, перед переходом на обработчик прерывания следует сохранить содержимое рабочих регистров (сохранение контекста), а после завершения обработчика восстановить их содержимое.
Для сохранения содержимого рабочих регистров выделяется специальная область в памяти данных - стек данных. Для загрузки данных в стек и выгрузки их из стека в системе команд микроконтроллера имеются специальные команды.
При загрузке данных в стек его размер увеличивается, при выгрузке - уменьшается. Если имеется много вложенных прерываний, то область стека может перекрываться с областью других данных программы и нарушить ее нормальную работу.
Максимальный уровень вложенности прерываний должен регулироваться программистом установкой необходимых приоритетов прерываний, а также размерами резервируемой под стек области памяти данных.
Стек данных строится по типу LIFO (последним зашел - первым вышел).