Регистр указателя стека SP/ESP всегда указывает на вершину стека, то есть на адрес последнего записанного в стек элемента (байта). При занесении элемента в стек МП уменьшает содержимое регистра SP/ESP, а затем записывает элемент по адресу новой вершины.
Регистр SP/ESP всегда указывает на вершину стека, то есть на адрес последнего записанного в стек элемента (байта). При занесении элемента в стек МП уменьшает содержимое регистра SP/ESP, а затем записывает элемент по адресу новой вершины.
Регистр BP/EBR сохраняет первоначальный (стартовый) адрес вершины стека и служит для получения доступа к элементам внутри стека.
При естественном следовании команд МП, начав работу, выбирает из памяти и выполняет одну команду за другой, пока не дойдёт до команды «Останов» (HLT).
Особенности работы со стеком:
а) обращение осуществляются по принципу «первый пришёл – последний вышел»;
б) по мере записи данных стек растёт в сторону младших адресов;
в) адреса элементов стека отсчитываются от стартового адреса, занесённого в регистр сегмента стека SS.
Для работы со стеком существуют команды:
PUSH – «запись слова» записывает значение в вершину стека. По этой команде: а) уменьшается на 2 значение, занесённое в указатель стека SP, б) значение записывается по адресу, указываемому парой регистров SS, SP (см. рис. 2.6.4).
POP – команда, обратная PUSH - «считывание слова». По этой команде содержимое двух верхних ячеек стека считывается и помещается в соответствующие регистры W и Z, а содержимое регистра указателя стека SP увеличивается на 2.

Рисунок 4.2.4 – Принцип работы команды PUCH

Рисунок 4.2.5 – Принцип работы команды РОР