logo search
Кафедра “Системы автоматического управления”

6.4 Понятие стека.

В пространстве данных МПС DSEG , как правило, выделяют специально-организованную область памяти называемую системным стеком SSEG или стеком времени выполнения.

Системный стек предназначен для хранения адресов возврата и состояний МП при вызове подпрограмм и обслуживании прерываний. Стек может также использоваться для временного хранения переменных и передачи параметров при вызове подпрограмм.

Стек - это область памяти с доступом типа "последним пришел - первым вышел" или LIFО (Last Input - First Output). Стек обычно заполняется в сторону уменьшения адресов.

Для адресации стека используется специальный регистр МП, называемый указателем стека - SР (Stack Pointer). Указатель стека всегда показывает (содержит адрес) на последнюю заполненную ячейку стека – называемую вершиной стека ТОS - Top Of Stack.

Отличительной особенностью данного регистра (SР) является то, что он относится к регистрам с автомодификацией. Это означает, что он автоматически изменяет свое состояние на число записанных или считанных байт (уменьшает или увеличивает в зависимости от операции) после выполнения операции доступа.

При записи в стек байта данных (операция PUSH) содержимое SР уменьшается на 1 и затем используется в качестве адреса новой вершины, в которую заносится элемент.

При считывании байта данных из стека (операция РОР) сначала считывается содержимое ТОS, а затем содержимое SР автоматически увеличивается на 1 для адресации новой вершины стека. Работа стека показана на рис.6.4.

Исключительные удобства, представляемые стеком при вызове подпрограмм (п/п), привели к тому, что практически все современные МП имеют средства для его построения в виде регистра SР.

Рис.6.4.

Рассмотрим процесс вызова п/п при помощи системного стека. Допустим, что наша программа включает в себя основной модуль (MAIN) и две п/п. Передача управления из вызывающей программы в п/п и обратно отражена на рис.6.5 при помощи стрелок.

Рис.6.5.

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

Рис.6.6.