Справочник по языку Ассемблера IBM PC

     

LEAVE


(LEAVE from procedure)

Выход из процедуры

Схема команды:  leave 

Назначение: удаление из стека области локальных (динамических) переменных, выделенной командой enter.


Алгоритм работы:


команда выполняет обратные команде enter действия:

    содержимое ebp/bp копируется в esp/sp, тем самым восстанавливается значение esp/sp, которое было до вызова данной процедуры. С другой стороны, восстановление старого значения esp/sp означает освобождение пространства в стеке, отведенного для завершающейся процедуры (локальные переменные процедуры уничтожаются);

    из стека восстанавливается содержимое ebp/bp, которое было до входа в процедуру. После этого действия значение esp/sp также становится таким, каким оно было до входа в процедуру.



    В результате этих двух действий также восстанавливается кадр стека, если он был, вызывающей программы.
    Состояние флагов после выполнения команды:

    выполнение команды не влияет на флаги

    Применение:


    Команда leave не имеет операндов и выполняет обратные команде enter действия. Эта команда должна находиться непосредственно перед командой ret, которая в зависимости от соглашений конкретного языка по вызову процедур удаляет или не удаляет аргументы из стека (см. урок 14).

    .286 proc1   proc         enter   16,0 ...         leave         ret proc1   endp         

    См. также: урок 14 и команды ,



    Содержание раздела