Отправляет email-рассылки с помощью сервиса Sendsay

Уроки по ассемблеру

  Все выпуски  

Уроки по ассемблеру


Информационный Канал Subscribe.Ru


Assembler. Уроки с сайта http://progs.biz

Рассылка №6

Assembler. Урок 11. Что такое стек?

Полные версии уроков (с картинками) можно найти по адресам:
Урок 11. Что такое стек?

К. Грегори. Использование Visual C++ 6. Специальное издание

Заказать на Озоне

Подробнее

Рассылки сайта progs.biz через subscribe.ru
Windows API
Windows SDK: уроки по созданию приложений с использованием API функций Windows и всем, что с ними связано - сообщения, обработчики, диалоговые окна и элементы на них, меню, рисование, горячие клавиши и др. API-функции можно использовать фактически в любом языке программирования, так что знание таких функций позволит обойти ограничения того или иного языка.

Ассемблер. Урок 11. Что такое стек?

Стек - это некоторая область памяти, которая организована специальным образом. Основной принцип при работе стека - первый пришел - последним ушел. Или, что тоже самое - последний пришел - первый ушел. Образно это можно представить так - представьте себе, что вы кладете на стол одну игральную карту. На эту карту сверху еще одну, потом еще одну и т. д. Т. е. каждую последующую карту вы кладете все выше и выше на предыдущие. Когда же вы берете карты, то вы каждый раз берете карту сверху - сначала самую верхнюю, потом ту, которая оказалось под ней и т. д.. Из середины колоды карту брать нельзя. При таком способе вы можете каждый раз брать только одну карту - а именно верхнюю. Вот по такому принципу стек и устроен.

Для работы со стеком вы должны знать один адрес - а именно адрес доступного элемента стека (верхнего).

Адрес, по которому находится верхний элемент стека, хранится в регистре SP (Stack Pointer). Этот адрес постоянно меняется - когда мы кладем очередной элемент в стек, то этот адрес уменьшается. Положили элемент еще - адрес в SP уменьшился еще. Когда же мы из стека достаем элемент (помните, что достать можно только один "верхний" элемент), то этот адрес уваличивается.

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

Наверх

Copyright Алексеев Игорь, 2002-2003
Copyright сайт progs.biz, 2002-2003
Распространение материалов без разрешения владельцев авторских прав запрещено.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное