PUSH - ulož slovo na vrchol zásobníku

Z Delphi & Pascal (česká wiki)
Verze z 10. 1. 2013, 17:16, kterou vytvořil Zdeno Sekerák (diskuse | příspěvky)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaci Skočit na vyhledávání
Instrukce
PUSH - ulož slovo na vrchol zásobníku
Časování
3-5 (80286), 2-5 (80386)
Popis
Instrukce PUSH snižuje hodnotu ukazatele zásobniku SP (ESP) o 2 a její operand je umísten na nový vrchol zásobníku. Je-li ukládaná hodnota registru SP (ESP), pak ji instrukce PUSH u procesoru 80286/80386 ukládá takovou, jaká byla před provedením instrukce PUSH (na rozdíl od PUSH u 8086, kde byla uchovávaná hodnota SP dekrementována o 2). Ukládat lze ES, CS, SS, DS, pamětové místo, bezprostrední operand či registr.


Syntaxe
PUSH source


Ovlivňuje příznaky
žádné


Nedefinované příznaky
žádné


Výjimky v privilegovaném módu
Jestliže je nová hodnota SP vně limitu segmentu SS, je generována výjimka "chyba zásobníku". Jestliže registry CS, DS nebo ES obsahují neplatné efektívni 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ů. Paměťové adresy jsou vytvářeny z 32-bitových efektívních adres.


Příklad
 PUSH AX
 PUSH EBX   ;(jen pro 80386)
 PUSH CS