Скачиваний:
401
Добавлен:
22.01.2014
Размер:
3.74 Mб
Скачать

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.

Лекция №7 способы адресации

План лекции

1. Основные определения.

2. Однокомпонентные способы адресации.

3. Прямой способ адресации.

4. Адресация с вычисляемым адресом.

5. Многокомпонентые способы адресации.

7.1 Основные определения.

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

Ранее мы определили, что источниками и приемниками операндов в МПС могут служить регистровая память RSEG, память данных DSEG, а также порты ВВ IОSEG. В дальнейшем для обозначения элементов указанных областей будем использовать соответственно следующие символы: reg, addr, port.

Адрес операнда, считываемого или размещаемого в одном из пространств МПС, называется исполнительным.

Сведения об исполнительных адресах закодированы в командах и могут быть представлены в явной и неявной формах. В первом случае, последовательность бит, определяющая команду, включает в себя поле кода операции и адресные поля. Код операции непосредственно предписывает действия, которые необходимо выполнить МП (сложить, переслать и т.п.) и способ формирования исполнительного адреса, информация, необходимая для формирования которого содержится в адресных полях.

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

Явная форма представления более гибкая, вследствие того, что одна и та же команда может использоваться для адресации различных объектов, но требует увеличения поля команды, что снижает эффективность объектного кода. Неявная форма, связывая часть адресной информации с операцией, сужает ее действие, но длина машинной команды при этом уменьшается, вследствие того, что отсутствует адресное поле.

В реальных командах, как правило, применяются обе формы представления адресной информации, т.е. часть информации о месте нахождения одного операнда передается в неявной форме (источником или приемником является регистр), остальная часть информации передается в явной форме в адресном поле.

Для обеспечения эффективного доступа к различным структурам данных (массивы, стеки, списки), а также перемещаемости программ и данных на этапах загрузки и выполнения, разработан целый ряд способов построения исполнительного адреса, называемых способом адресации (mоd) или просто адресацией.