Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






POP приемник






Приведем несколько примеров:

PUSH SI; Можно сохранить регистр общего назначения

PUSH DS; или регистр сегмента,

PUSH CS; включая регистр CS

PUSH COUNTER; Можно также сохранить содержимое

PUSH TABLE [BX][DI]; ячейки памяти

Будучи взаимно обратными командами, PUSH и POP обычно используются парами, т.е. каждой команде PUSH в программе должна соответствовать своя команда POP. Например, при сохранении содержимого регистра АХ в стеке и последующем его восстановлении программа будет иметь вид:

PUSH AX; Сохранить АХ на вершине стека

.......; Другие команды программы,

....... изменяющие содержимое АХ

.......

POP AX; Восстановить значение АХ сняв его с вершины стека

Под вершиной стека понимается ячейка в сегменте стека, адрес которой содержится в указателе стека SP. Так как стек " растет" по направлению к младшим адресам памяти (к ячейке 0), то первое помещаемое в стек слово запоминается в ячейке стека с наибольшим адресом, следующее - на два байта ниже и т.д. Регистр SP всегда указывает на слово, помещенное в стек последним. Следовательно, команда PUSH вычитает 2 из значения указателя стека, а затем пересылает операнд-источник (слово) в стек. Действуя обратным образом, команда POP пересылает в операнд-приемник слово, адрес которого содержится в регистре SP, a затем добавляет 2 к содержимому этого регистра. На рисунке 3.1 показаны состояния стека и его указателя до и после использования команд PUSH и POP.

В результате исполнения команды PUSH указатель стека передвинется на два байта памяти ниже, и в этих байтах (ранее не используемых) будет содержаться значение регистра АХ, В результате исполнения команды POP содержимое регистра SP вернется в исходное состояние. С помощью серии команд PUSH в стеке можно сохранить 32768 слов, причем каждая команда PUSH помещает свой операнд на вершину стека, и поэтому с помощью команды POP слова извлекаются из стека в порядке, обратном их записи. Следующая последовательность команд помещает значения четырех регистров в стек, а затем восстанавливает их:

PUSH AX; Сохранить АХ,

PUSH ES; ES,

PUSH DI; DI и

PUSH SI; SI

POP SI; Восстановить SI,

POP DI; DI,

POP ES; ES и

POP AX; AX

Команды PUSH и POP удобны также для копирования содержимого одного регистра сегмента в другой. Например, с помощью команд

PUSH ES

POP DS

можно скопировать значение регистра ES в регистр DS.


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал