Přidáno 2 520 bajtů,
11. 1. 2013, 17:54 ;Instrukce
: RET - návrat z procedúry
;Časování
: 15-55 (80286), 10-68 (80386)
;Popis
: Instrukce zabezpečuje pokračování programu tím, že prěnese řízení progamu na adresu návratu, která byla (při volání procedúry) uložená do zásobníku. Tato adresa je obvykle umístěna do zásobníku instrukci [[CALL]]. Intrasegmentové ([[NEAR]]) návraty [[RET]] plní registr instrukce (instruction pointer) dvěma nejhornejšími byty umístěnými na vrcholu zásobníku. Tyto dva byty udávají offset instrukce která má být vykonávaná jako další. Intersegmentové ([[FAR]]) návraty [[RET]] začínají stějne jako intrasegmentové přenesením horních dvou byte ze zásobníku (t.j. offset příští vykonávané instrukce). Jako další akce je však provedeno naplnění registru [[CS]] dalšími dvěma byte ze zásobníku. Tyto další dva byte obsahují adresu segmentu v němž leží příští vykonávaná instrukce. Abychom provedli intrasegmentový návrat [[RET]] a změnili ukazatele zásobníku je tedy trěba zavést horní dva byte ze zásobníku do registru instrukce. Pak je trěba zaéest další dva byte ze zásobníku do ukazatele zásobníku ([[stack pointer]]). Tyto poslední dva byte znovu nastaví poslední obsah ukazatele zásobníku jenž mohl případne být uložen na vrchol zásobníku před instrukci CALL. Abychom provedli intersegmentový návrat [[RET]] a zmenili ukazatele zásobníku je trěba opět zavést horní dva byte ze zásobníku do registru. To je offset příští vykonávané instrukce. Další dva byte jsou ze zásobníku zavedeny do registru [[CS]]. To je adresa segmentu v němž leží příští vykonávaná instrukce. Další dva byte ze zásobníku se musí uložit do ukazatele zásobníku ze stejných pohnútek jako při intrasegmentovém návratu.
;Syntaxe
: RET (žádné operandy)
;Ovlivňuje příznaky
: žádné
;Nedefinované příznaky
: žádné
;Výjimky v privilegovaném módu
: V některých případech je generována všeobecná výjimka porušení ochrany paměti, výjimka "[[deskriptor není přítomen]]" nebo výjimka "[[chyba zásobníku]]".
;Výjimky v reálnem módu
: Jestliže je slovní operand na offsetu 0FFFFH je generováno přerušení [[INT 13]].
;Poznámka pro 80386
: Je používan 32-bitový rozšířený ukazatel instrukce. Ze zásobníku je vyzvedaván 32-bitový [[EIP]].
;Příklad
RET
[[Category:Assembler]]
[[Category:Instrukce mikroprocesoru 80386]]