POP - vyzvedni operand ze zásobníku

From Delphi & Pascal (česká wiki)
Jump to navigation Jump to search
Instrukce
POP - vyzvedni operand ze zásobníku
Časování
5 (80286), 5-7 (80386)
Popis
Instrukce POP vyzvedáva obsah vrcholu zásobníku a ukláda jej do DS, ES, SS, paměti nebo registru. Instrukce POP vezme slovo adresované registrem SP (= ukazatel zásobníku) a uloží jej na místo specifikované cílovým operandem instrukce. Ukazatel zásobníku je pak zvýšen o 2.


Syntaxe
POP destination


Ovlivňuje příznaky
žádné


Nedefinované příznaky
žádné


Výjimky v privilegovaném módu
Je-li ze zásobníku zaváděna hodnota do segmentového registru, je generována všeobecná výjimka porušení ochrany paměti, výjimka "chyba zásobníku" nebo výjimka "deskriptor nenalezen". Výjimka "chyba zásobníku" je generována také v případe, že aktuální vrchol zásobníku není umístěn v rozsahu právě adresovaného segmentu SS. Stejnou výjimku bude generovat také umístení operandu instrukce v segmentu chráneném proti zápisu. Jestliže registry CS, DS nebo ES obsahují neplatné efektivní adresy operandu, je generována všeobecná výjimka porušení ochrany paměti. Jestliže SS obsahuje neplatnou adresu, je generována 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
Šírka slova je 32 bitů. Adresy operandu v paměti jsou vytvárěny z 32-bitových efektívních adres.


Příklad
 Registrový operand
 POP CX
 POP EAX (jen pro 80386)
 Segmentový registr
 POP SS