Все стековые команды манипулируют только со словами и сопровождаются автоматической модификацией указателя стека. При включении в стек производится декремент, а при извлечении из стека - инкремент регистра SP. До выполнения стековых команд необходимо инициализировать регистры SP и SS. Кроме того, каждой команде РОР должна предшествовать команда PUSH.
Команда PUSH включает в стек содержимое адресуемого регистра или ячейки памяти, а команда РОР извлекает содержимое вершины стека и переходит в общий регистр или ячейку памяти.
Формат команд:
1) PUSH mem/reg
POP mem/reg
2) PUSH reg
POP reg
3) PUSH sreg
POP sreg
Пример:
[DS] = 2800
[BX] = 0400
[SP] = 1000
[SS] = 2F00
[28400] = A020
PUSH [BX]
[28FFFE] = A020
[SP] = 0FFE
Команды PUSHF и POPF предназначены для временного запоминания в стеке и последующего восстановления из стека содержимого 16 - битного флагового регистра.
Команда PUSHA - занесение в стек всех регистров
½01100000½
Команда PUSHA записывает в стек восемь значений регистров: AX, CX, DX , BX, SP, BP, SI, DI в указанной последовательности и уменьшает регистр SP на 16.
Команда POPA - извлечение из стека всех общих регистров
½01100001½
Команда РОРА извлекает из стека восемь значений в регистры: DI, SI, BP, SP, BX, CX, AX в указанной последовательности и увеличивает регистр SP на 16. (8088, 80186, 80286).