Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 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 команды (адрес возврата);
|