Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
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.
|