-----------------------------------------------------------------|Код Команда Число Описание ||операции тактовых || циклов || ||61 POPA 9 Извлечение из стека DI, SI, || BP, BX, DX, CX и AX ||61 POPAD 9 Извлечение из стека EDI, ESI, || EBP, EBX, EDX, ECX и EAX |----------------------------------------------------------------- Работа команды IF OperandSize = 16 (* Команда = POPA *)THEN DI <- Pop(); SI <- POP(); BP <- Pop(); теряется <- Pop(); (* Пропуск SP *) BX <- Pop(); DX <- Pop(); CX <- Pop(); AX <- Pop();ELSE (* OperandSize = 32, команда = POPAD *) EDI <- Pop(); ESI <- POP(); EBP <- Pop(); теряется <- Pop(); (* Пропуск ESP *) EBX <- Pop(); EDX <- Pop(); ECX <- Pop(); EAX <- Pop();FI; ОписаниеКоманда POPA извлекает из стека восемь 16-битовых регистров общегоназначения. Однако, значение SP вместо загрузки регистра SP уничтожается.Команда POPA реверсирует действие предыдущей команды PUSHA, восстанавливаязначения регистров общего назначения, которые они имели перед выполнениемкоманды PUSHA. Первый извлекаемый регистр - это DI.Команда POPAD извлекает из стека восемь 32-битовых регистров общегоназначения. Однако, значение ESP вместо загрузки регистра ESPуничтожается. Команда POPAD реверсирует действие предыдущей командыPUSHAD, восстанавливая значения регистров общего назначения, которые ониимели перед выполнением команды PUSHAD. Первый извлекаемый регистр - этоEDI. Изменяемые флагиОтсутствуют Исключения защищенного режима#SS(0), если начальный или конечный адрес стека не находится в пределахстекового сегмента; #PF(код сбоя) в случае страничного сбоя; Исключения режима реальных адресовПрерывание 13, если какая-либо часть операнда лежит вне пространстваисполнительных адресов от 0 до 0FFFFH. Исключения виртуального режима 8086Те же исключения, что и для режима реальных адресов: #PF (код сбоя) длястраничных сбоев.