Otevřít hlavní menu

Změny

CALL - volání procedury

Přidáno 1 990 bajtů, 4. 11. 2012, 23:23
Vytvorená stránka „;Instrukce : CALL - volání procedury ;Časování : 7-185 (80286), 3-275 (80386) ;Popis : Instrukce CALL způsobuje, že adresa příští vykonávané instrukce je ...“
;Instrukce
: CALL - volání procedury

;Časování
: 7-185 (80286), 3-275 (80386)

;Popis
: Instrukce CALL způsobuje, že adresa příští vykonávané instrukce je uchována v zásobníku a řízení programu je predáno operandu instrukce CALL. Po ukončení volané procedury vykonáva volajíci program instrukce nasledujíci bezprostredne za instrukcí CALL.


;Syntaxe
: CALL operand


;Ovlivňuje příznaky
: žádné (výjimkou je případné přepnutí úloh (task switching))


;Nedefinované příznaky
: žádné


;Výjimky v privilegovaném módu:
* volani "FAR CALLS": je generována všeobecná výjimka přivilegovaného módu, výjimka "[[deskriptor neexistuje]]", výjimka "[[chyba zasobniku]]" a výjimka "[[neplatný segment stavu úlohy]]".

* volání "NEAR direct CALLS": je generována všeobecná výjimka přivilegovaného módu v případe, že procedúra je lokalizována vňe segmentu CS.

* volání "NEAR indirect CALLS": je generována všeobecná výjimka přivilegovaného módu při neplatné efektívni adrese operandu v segmentových registrech CS, DS nebo ES a nebo výjimka "chyba zásobníku" při neplatné adrese v segmentu SS. Všeobecná výjimka přivilegovaného módu je generovaná také v případe, že je získán nepřímy offset ležíci mimo hranice segmentu CS.


;Výjimky v reálnem módu
: Je generováno přerušení INT 13 v případe, že slovní operand má offset 0FFFFH.


;Poznámka pro 80386
: Slovní operand ma šírku 32 bitů, operand typu ukazatel má šírku 48 bitů.


;Příklad:
CALL ADDER ; procedúra je uvnitr nebo vňe segmentu

pro 80386:
CALL IMMPTR ; Operand typu ukazatel je 48-bitový

CALL DISP16 ; Užíva 32-bitový rozšírený ukazatel instrukce

CALL registr nebo paměť
; posunuti je 32-bitové.
; slovní operandy jsou 32-bitové


[[Category:Assembler]]
[[Category:Instrukce mikroprocesoru 80386]]