LEAVE - výstup z procedúry

Z Delphi & Pascal (česká wiki)
Verze z 7. 12. 2012, 17:19, kterou vytvořil Zdeno Sekerák (diskuse | příspěvky) (Vytvorená stránka „;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...“)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaci Skočit na vyhledávání
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