Перемещение данных в стек и из стека


Со стеком (областью памяти в сегменте стека, работающей по дисциплине FIFO — «первым-пришел-первым-ушел») вы уже встреча-лись. На вершину стека всегда указывает регистр SP. Для обращения к данным в стеке, с использованием режимов адресации памяти, при которых указателем базы является регистр BP, можно использовать инструкцию MOV. Например, инструкция:

mov ax,[bp+4]

загружает регистр AX содержимым слова в сегменте стека со смеще-нием BP+4 (доступ к стеку через регистр BP описывается в Главе 2).

Однако чаще к стеку обращаются с помощью инструкций PUSH и POP. Инструкция PUSH сохраняет операнд в вершине стека, а инст-рукция POP извлекает значение из вершины стека и сохраняет его в операнде. Например, инструкции:

mov ax,1

push ax

pop bx

заносят значение (равное 1) в регистре AX в вершину стека, затем извлекают 1 из вершины стека и сохраняют ее в BX.