push operand
(push onto stack)
Inštrukcia
push uloží operand na
vrchol zásobníka. Operandom môže byť 16- alebo 32-bitový univerzálny register,
segmentový register, premenná typu word
alebo dword a číslo. Registre a pamäťové
operandy, ktoré nie sú typu word
alebo dword
(napr. 8-bitový register), nemožno ukladať do zásobníka. Priamy
operand (číslo) veľkosti bajtu zaberie v zásobníku dve slová. Procesor pri ukladaní do
zásobníka zmenší ukazovateľ zásobníka (obsah registra ESP) o 2, resp. 4 (podľa
typu operandu) a potom uloží operand do zásobníkového segmentu na offset daný registrom ESP. Operandy sa pritom
ukladajú ako obvykle v obrátenom poradí slabík, takže najnižší bajt operandu
bude na offsete ESP v zásobníkovom segmente.
pop operand
(pop from stack)
Inštrukcia
pop vyberá zo zásobníka
jedno slovo alebo dvojslovo. Operandom môže byť 16- alebo 32-bitový univerzálny
register alebo pamäťové miesto typu word
alebo dword. Postup pri
vyberaní zo zásobníka je taký, že slovo, resp. dvojslovo (podľa typu operandu)
sa skopíruje z adresy ESP do operandu a potom sa ESP zvýši o 2, resp. 4.
pushad
(push all general registers)
Inštrukcia
pushad uloží do zásobníka obsahy všetkých
32-bitových univerzálnych registrov v poradí EAX, ECX, EDX, EBX, ESP (pôvodný
obsah), EBP, ESI, EDI a upraví ukazovateľ zásobníka: ESP = ESP - 32.
popad
(pop all general registers)
Inštrukcia popad
skopíruje 16 slov z vrcholu
zásobníka do 32-bitových univerzálnych registrov v poradí EDI, ESI, EBP,
ďalšie dve slová sa ignorujú, EBX, EDX, ECX, EAX a upraví ukazovateľ zásobníka: ESP
= ESP + 32.