logo

Главная Система команд x86 Базовая система команд CPU LEAVE
Система команд 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

LEAVE

Выход из процедуры высокого уровня

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

OF

DF

IF

TF

SF

ZF

AF

PF

CF

 

 

 

 

 

 

 

 

 

 

Код

Команда

Описание

Проц.

Пример

C9

LEAVE

Загрузить в SP значение из BP и считать из нового стека BP

Intel286

leave

C9

LEAVE

Загрузить в ESP значение из EBP и считать из нового стека EBP

Intel386

leave

Операция:

IF StackAddress = 16

  THEN SP = BP;

  ELSE (* StackAddrSize = 32 *)

     ESP = EBP;

FI;

IF OperandSize = 32

  THEN BP = Pop();

  ELSE (* OperandSize = 32 *)

     EBP = Pop();

FI;

Описание:

Команда LEAVE производит действия обратные команде ENTER. Копируя указатель кадра eBP в указатель стека, команда LEAVE освобождает пространство стека, использовавшееся для локальных переменных в завершающейся процедуре. Новый указатель кадра выбирается из стека в регистр BP или EBP, восстанавливая кадр вызвавшей процедуры. Последующая команда RET передает управление вызвавшей процедуре.

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

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

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

#GP, если регистр BP не указывает на местоположение внутри пространства эффективных адресов от 0 до 0FFFFh.

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

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


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



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

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

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