Команды PUSH и POP:
Команда PUSH позволяет поместить в стек содержимое любого 16- или 32-битного регистра или ячейки памяти.
push eax : поместить ЕАХ в стек;
POP, записывает в свой операнд значение вершины стека (последнее сохраненное в стеке значение).
Команды PUSHA/POPA и PUSHAD/POPAD:
Иногда полезно сохранить в стеке значения сразу всех регистров общего назначения.
Для этого используется команда PUSHA, а для извлечения из стека
значений всех регистров служит команда РОРА. Команды PUSHA и РОРА
помещают в стек и извлекают из него все 16-разрядные регистры. Операндов
у этих команд нет.
Поскольку команды PUSHA и РОРА разрабатывались для предшественника
процессора 80386, они не могут сохранять значений 32-битных регистров (они
просто не подозревают об их существовании). Для сохранения и восстановления
значений расширенных регистров служат команды PUSHAD и POPAD.
Регистры помещаются в стек в следующем порядке (сверху вниз):
(Е)АХ, (Е)СХ, (E)DX, (E)BX, (E)SP, (E)BP, (E)SI, (E)DI.
Команды PUSHF/POPF и PUSHFD/POPFD:
В 16-битных процессорах и регистр признаков был 16-битным, поэтому
для помещения в стек флагов и восстановления из него использовались
команды PUSHF и POPF. Для новых процессоров, где регистр признаков
32-битный, нужно использовать 32-битные версии этих команд — PUSHFD
и POPFD.
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.