Пересылка данных через стек

Пример:

Необходимо выполнить операцию 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.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: