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


Полезное:

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


Категории:

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






Организация и работа стека





Стек – это область памяти с LIFO-алгоритмом доступа к ячейкам, т.е. доступной для операций ЧТ/ЗП является верхняя ячейка.

Рис. 2.

Элементы стека располагаются в области памяти, отведенной под стек, начиная со дна стека (т.е. с его максимального адреса) по последовательно уменьшающимся адресам. Адрес верхнего, доступного элемента хранится в регистре-указателе стека SP. Как и любая другая область памяти программы, стек должен входить в какой-то сегмент или образовывать отдельный сегмент. В любом случае сегментный адрес этого сегмента помещается в сегментный регистр стека SS. Таким образом, пара регистров SS:SP описывает адрес доступной ячейки стека

Примечательно, что в исходном состоянии указатель стека SP указывает на ячейку, лежащую под дном стека и не входящую в стек (рис. 2а).

Загрузка данных в верхнюю ячейку стека (запись) осуществляется командой PUSH, а извлечение данных из верхней ячейки стека (чтение) – POP. Формат данных – 16 бит. Синтаксис команд PUSH, POP:

PUSH ор = POP ор = ,

где ор – операнд.

На рис. 2б-2в показано перемещение SP при загрузке стека; 2г-2д демонстрируют перемещение SP при извлечении данных из стека, причем после команды POP стек физически не затерт. Следовательно, принудительно изменив значение SP, можно обратиться к произвольной ячейке стека. Этот прием часто используется при работе с подпрограммами.

В случае отсутствия явного объявления сегмента стека в программе, операционная система сама создает стек по умолчанию в сегменте кода. Служебная (а не пользовательская!) необходимость в стеке возникает при выполнении команд CALL, INT. Корректное завершение этих команд связано с восстановлением состояния МП при возвращении в основную программу из подпрограммы или прерывания. В общем случае, состояние МП – это:

1. адрес следующей после CALL½INT команды (адрес возврата);

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



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