LEAVE - výstup z procedúry

From Delphi & Pascal (česká wiki)
Jump to navigation Jump to search
Instrukce
LEAVE - výstup z procedúry (na vyšší úrovni)
Časování
5 (80286), 4 (80386)
Popis
Instrukce LEAVE provádí operaci duální k instrukci ENTER. LEAVE uvolní všechny lokální promenné a nastaví BP na hodnotu SP, navrací registrům hodnoty bezprostrědne po vykonání procedúry. Když je BP (EBP) kopírován do SP (ESP), je prostor v zásobníku použitý pro procedúru uvolnen. Starý ukazatel struktúry (viz instrukci ENTER) je nyní vyzvednut ze zásobníku a uložen do BP (EBP). To obnoví strukturu volajíciho podprogramu a nasleduje instrukce RET nn odstraňujíci všechny argumenty uložené do zásobníku pro potreby procedúry, která právě končí.


Syntaxe
LEAVE (žádné operandy)


Ovlivňuje příznaky
žádné


Nedefinované příznaky
žádné


Výjimky v privilegovaném módu
Neukazuje-li BP (EBP) na paměťové místo uvnitr aktuálního zásobníkového segmentu, je generována výjimka chyba zásobníku.


Výjimky v reálnem módu
Je-li operand na offsetu 0FFFFH, je generováno přerušení INT 13.


Poznámka pro 80386
Šírka slova je 32 bitů. Jsou použity registry ESP a EBP.


Příklad
LEAVE