logo

Главная Система команд x86 Базовая система команд CPU POPA

Система команд x86

Программирование - Архитектура и система команд микропроцессоров x86
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

POPA

Извлечь из стека значения всех 16-битных регистров общего назначения

Влияние команды на флаги и форматы команды:

OF

DF

IF

TF

SF

ZF

AF

PF

CF

 

 

 

 

 

 

 

 

 

 

Код

Команда

Описание

Проц.

Пример

61

POPA

Загрузить из стека регистры DI, SI, BP, BX, DX, CX и AX

Intel286

popa

61

POPAD

Загрузить из стека регистры EDI, ESI, EBP, EBX, EDX, ECX и EAX

Intel386

popad

Описание:

Команда POPA загружает из стека восемь 16-битных регистров общего назначения. Команда POPA проделывает действия обратные команде PUSHA, восстанавливая регистры общего назначения к значениям, бывшим в них до выполнения команды PUSHA, кроме регистра SP, который пропускается. Первым загружаемым регистром является регистр DI.

Команда POPAD извлекает восемь 32-битных регистров общего назначения. Команда POPAD проделывает действия обратные команде PUSHAD. Мнемоники POPA и POPAD имеют один код операции. Конкретная выполняемая команда определяется атрибутом размера операнда. Некоторые ассемблеры могут вставлять соответствующий префикс размера операнда перед кодом операции при преобразовании мнемоник POPA и POPAD, другие же ассемблеры воспринимают эти мнемоники одинаково и программируют только код операции, работа команды в этом случае определяется текущей установкой размера операнда для кодового сегмента (бит D дескриптора).

Операция:

IF OperandSize = 16 (* Команда POPA *)

THEN

  DI = Pop();

  SI = Pop();

  BP = Pop();

  eSP = eSP + 2 (* Пропустить следующие 2 байта в стеке *)

  BX = Pop();

  DX = Pop();

  CX = Pop();

  AX = Pop();

ELSE (* OperandSize = 32, команда POPAD *)

  EDI = Pop();

  ESI = Pop();

  EBP = Pop();

  eSP = eSP + 4 (* пропустить следующие 4 байта в стеке *)

  EBX = Pop();

  EDX = Pop();

  ECX = Pop();

  EAX = Pop();

FI;

Особые ситуации защищенного режима:

#SS(0), если в процессе исполнения команды вершина стека выходит из пределов стекового сегмента;
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память при текущем уровне привилегий равном 3.

Особые ситуации режима реальной адресации:

SS, если в процессе исполнения команды вершина стека выходит из пределов стекового сегмента.

Особые ситуации режима V86:

Такие же, как и в режиме реальной адресации.
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память.


Входит в группу команд: Базовая система команд CPU




Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Top.Mail.Ru       Сервер радиолюбителей России - схемы, документация,

 соревнования, дипломы, программы, форумы и многое другое!   схемы новости электроники