Změny

Skočit na navigaci Skočit na vyhledávání

JMP - nepodmíněný skok

Přidáno 2 446 bajtů, 10. 11. 2012, 00:59
Vytvorená stránka „;Instrukce : JMP - nepodmíněný skok ;Časování : 7-183 (80286), 7-268 (80386) ;Popis : Instrukce JMP predáva řízení programu na jinou instrukci, přiče...“
;Instrukce
: JMP - nepodmíněný skok

;Časování
: 7-183 (80286), 7-268 (80386)

;Popis
: Instrukce JMP predáva řízení programu na jinou instrukci, přičemž není uchovávaná žádna informace o návratu. [[JMP]] provádí intrasegmentové přímé a nepřímé skoky a mezisegmentové skoky. Intrasegmentové přímé skoky používají offset umísteny ihned za instrukci. Intrasegmentové nepřímé skoky užívají obsahu paměťového místa adresovaného byty, které nasledujíci po instrukčním byte. Když je instrukce intrasegmentovým přímým skokem, vzdálenost od konce instrukce k cílovému návěstí je pričtena k [[IP]] ([[EIP]]). Mezisegmentové skoky nahrazují obsah registru [[CS]]. Pro příme skoky je to zajištěno druhým slovem nasledujícim instrukci. Pro skoky nepříme je registr [[CS]] nahrazen druhým slovem nasledujícim po naznačené adrese dat (viz příklady).


;Syntaxe
: JMP (target)


;Ovlivňuje příznaky
: Pri přepnutí úlohy (task switching) jsou ovlivneny všechny příznaky; jinak nedochází k ovlivnení žádnych příznaků.


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


;Výjimky v privilegovaném módu
: Jestlize je typ skoku [[NEAR]], múže byt generovaná všeobecná výjimka porušení ochrany paměti v případe, že offset místa určení je mimo hranice aktuálního segmentu [[CS]]. Jestliže je typ skoku [[FAR]], múže být generovaná také všeobecná výjimka ochrany. Jiné možné výjimky jsou: "[[deskriptor není přítomen]]", "[[chyba zásobníku]]", "[[neplatný stavový registr úlohy]]". Jestliže je u intersegmentového nepřímého skoku operandem registr, je generována výjimka "[[nedefinovaný operační kód]]".


;Výjimky v reálnem módu
: Jakmile je v případe nepřímého intersegmentového skoku operandem registr, je generováná výjimka "[[nedefinovaný operační kód]]".


;Poznámka pro 80386
: Je použit 32-bitový rozšírený ukazatel instrukce. Ukazatelové operandy jsou 48-bitové a jejich přemístení jsou 32-bitová.


;Příklad
Intersegmentový prímý skok:
JMP FAR_LABEL


Intersegmentový neprímý skok:
JMP TABLE[BP][DI]
JMP TABLE[EBP][EDI] ; jen pro 80386


Intrasegmentový prímy skok:
JMP NEAR_LABEL


Intrasegmentový neprímý skok:
JMP WORDPTR[BX][DI]

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

Navigační menu