P
Пример 2:
push DS; Пересылка DS через стек pop ES; Теперь ES=DS
Допустима засылка в стек 32-битовых операндов (регистров и ячеек памяти), а также занесение в стек 8-, 16- и 32-битовых непосредственных значений. Каждое 8-битовое значение занимает в стеке целое слово. Операнды любого допустимого размера могут заноситься в стек вперемежку, если это не вступает в противоречие с операциями по извлечению этих данных из стека.
Пример 1:
push AX; Сохранение в стеке регистра АХ push 32h; Сохранение в стеке ;константы 32h (она займет в стеке 1 слово) push EAX; Сохранение в стеке регистра ;ЕАХ (два слова стека)
386+ PUSHA Сохранение в стеке всех регистров
Команда pusha сохраняет в стеке содержимое всех регистров в следующем порядке: АХ, СХ, DX, ВХ, значение указателя стека SP перед выполнением данной команды, далее ВР, SI и DI. Команда не имеет параметров и не воздействует на флаги процессора.
Пример:
pusha
386+ PUSHAD Сохранение в стеке всех регистров в 32-разрядном режиме
Команда pushad сохраняет в стеке содержимое всех регистров в следующем порядке: EAX, ECX, EDX, ЕВХ, значение указателя стека ESP перед выполнением данной команды, далее EBP, ESI и EDI. Команда не имеет параметров и не воздействует на флаги процессора.
Пример:
pushad
386+ PUSHFD Занесение в стек содержимого расширенного регистра флагов
Команда pushfd уменьшает на 4 содержимое указателя стека ESP и заносит на эту новую вершину содержимое расширенного регистра флагов EFALGS. При этом сохраняются все флаги процессора. Команда pushfd не имеет параметров и не воздействует на флаги процессора.
Пример:
pushfd; Содержимое регистра флагов сохраняется в стеке