LEAVE - výstup z procedúry
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...“)
- 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.
- Příklad
LEAVE