Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Извлечение элемента из стека





Выполняется командой POP. У этой команды также один операнд, который может быть 16-битным регистром (в том числе сегментым, но кроме CS) или 16-битной переменной в памяти. Команда работает следующим образом:

операнд читается из памяти по адресу в SP;

значение в регистре SP увеличивается на 2.

Обратите внимание, что извлеченный из стека элемент не обнуляется и не затирается в памяти, а просто остаётся как мусор. Он будет перезаписан при помещении нового значения в стек.

Примеры:

pop cx;Поместить значение из стека в CX

pop es;Поместить значение из стека в ES

pop [x];Поместить значение из стека в переменную x

pop word [di];Поместить значение из стека в слово по адресу в DI

Соответственно, есть ещё 2 команды. POPF помещает значение с вершины стека в регистр флагов. POPA восстанавливает из стека все регистры общего назначения (но при этом значение для SP игнорируется).

Стек – это память с линейно упорядоченными ячейками и специальным механизмом доступа, исключающим необходимость указания адреса при записи и чтении. В зависимости от используемого правила доступа, называемого дисциплиной, различают два типа организации стековой памяти: очередь и стек. Дисциплина определяется применительно к входным (записываемым) и выходным (читаемым) последовательностям слов. Очередь реализует дисциплину FIFO (First-In-First-Out – первый поступивший извлекается первым). Стек, в отличие от очереди, организован в соответствии с дисциплиной LIFO (Last-In-First-Out – последний поступивший извлекается первым), т.е. информация из стека выбирается в обратном по отношению к записи порядке.

Физически стековая память МП КР580ВМ80А или просто стек представляет собой набор ячеек оперативной памяти, снабженный указателем стека SP. При обращении к стеку необходимо первоначально назначить область стека в ОЗУ, записав в указатель стека SP адрес вершиныс помощью команды LXI SP, data 16 или команды SPHL. Указатель SP всегда адресует «вершину стека», под которой понимается ячейка стека, доступная для чтения. По мере записи и считывания данных из стека содержимое SP меняется: при записи или загрузке в стек, например, при исполнении команд PUSH, значение SP уменьшается – стек растет в сторону младших адресов, а при чтении или выталкивании данных из стека, при исполнении команд РОР, значение SP увеличивается. Указанное правило при обращении к стеку реализуется автоматически, и поэтому при операциях со стеком возможно безадресное задание операнда. В качестве указателя стека обычно используют реверсивный счетчик. Стековая память является безадресной. Обмен данными между МП и стеком осуществляется 16-разрядными словами путем последовательной передачи по шине старшего и младшего байтов слова. Все операции со стеком должны быть сбалансированы т.е. каждая подпрограмма должна иметь равное число команд PUSH и POP. Принцип работы стека и способ адресации его вершины иллюстрирует рис. 40.

В МП стек применяется в качестве средства сохранения адресов возврата и состояния данных при работе с подпрограммами. Его использование приводит к существенным упрощениям при организации вложенных подпрограмм, когда одна программа вызывает другую, которая в свою очередь может вызвать третью и т.д. В таких случаях при каждом вызове адрес возврата текущей программы и другая необходимая информация (содержимое РОН) загружаются в стек. При возврате информация в обратном порядке выбирается из стека. При организации стека, моделируемого в памяти с произвольным доступом, время обращения к элементам данных стека равно времени обращения к памяти. Однако стек, наряду с отмеченными особенностями его использования, эффективнее обычной памяти. Во-первых, используемые при обращении к стеку команды PUSH и POP короче стандартных команд обращения к памяти, так как в них один из операндов неявно адресуется через регистр SP, и, во-вторых, инкремент или декремент указателя SP с образованием нового адреса производится автоматически. Из других применений стека можно выделить его использование для временного хранения данных, когда для них нет смысла выделять фиксированные места в памяти, для организации прерываний, для передачи и возврата параметров при вызовах процедур возвратах из них. Кроме этого, стековая память является важнейшей компонентой процессоров со стековой архитектурой.

 

а) б) в)

 

Рисунок 40 – Принцип работы стека и способ адресации его вершины с использованием указателя (SP):

а) стек после инициализации (содержит недействительные данные);

б) стек после записи в него командами PUSH B, PUSH D данных регистровых пар (BC), (DE);

в) стек после извлечения из него командой POP D данных в регистровую пару (DE) (данные в ячейках памяти 0A60, 0A5F стеку не принадлежат)

 

Основными недостатками стека являются трудность обнаружения ошибок, основными видами которых являются:

- перемещение из стека данных в неверном порядке;

- перемещение в стек или выборка из него избыточных данных;

- переполнение стека или потеря данных в стеке;

- сложность отладки и документирования программ.

Date: 2016-06-06; view: 2129; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию