Команда pop выталкивает 16-битовое данное из стека, т.е. пересылает слово из
вершины стека (на которую указывает регистр SP) по адресу операнда-приемника.
После этого содержимое SP увеличивается на 2, и SP указывает на предыдущее слово
стека, которое теперь является его новой вершиной. Выталкивать из стека можно
только целые слова (не байты). Программа должна строго следить за тем, чтобы
каждой команде проталкивания в стек push отвечала обратная команда выталкивания
из стека pop. Если стек используется для временного хранения некоторых данных,
то извлекать эти данные из стека следует в порядке, обратном их сохранению.
В качестве операнда-приемника можно использовать любой 16-разрядный регистр
(кроме CS) или ячейку памяти. Команда не воздействует на флаги процессора.
Пара команд push - pop часто используется для пересылки данного из регистра
в регистр (особенно, в сегментный) через стек.
Пример 1
push AX ;Временное сохранение
push BX ;в стеке
push DS ;трех операндов
pop DS ;Восстановление из стека
pop BX ;трех операндов
pop AX ; в обратном порядке
Пример 2
push CS ;Пересылка CS через стекpop DS ;Теперь DS=CS
Пример 3
;В полях данных
mem dw 0
; В программном сегменте
pop mem ;Восстановление из стека в память
Допустимо использование 32-битовых операндов и дополнительных режимов адресации 32-разрядных процессоров.
Пример
pop EAX ;Извлечение из стека двойного слова