Пример:
Необходимо выполнить операцию X:=Y, где X и Y – переменные размером в слово:
PUSH Y
POP X; X:=Y
Проверка на выход за пределы стека
SP=0? – стек полон?
SP=к? – стек пуст?
(к - размер сегмента стека в байтах)
Очистка и восстановление стека
ADD SP, 2*N; очистка стека от N слов
MOV AX, SP
……..; записи в стек
MOV SP, AX
Доступ к элементам стека
Пример:
Пусть в стеке записано не менее трех слов. Требуется в регистр АХ записать копию третьего сверху элемента стека:
Адрес третьего слова стека равен адресу вершины стека плюс 4. Устанавливаем регистр BP на вершину стека и используем выражение [BP+4] для доступа к третьему слову:
MOV BP, SP
MOV AX, [BP+4]; AX:=w3
Важно: при работе со стеком необходимо соблюдать баланс между командами записи в стек и чтения из стека.
Пример использования стека
В одномерном массиве сосчитать количество пар чисел, сумма которых равна 10.