logo
КС-ZAO / Лекции ЦЭВМруский вариант11

Инструкции pusha и popa

Инструкции PUSHA и POPA предоставляют эффективное средство, с помощью которого можно заносить и извлекать из стека все восемь общих регистров. Инструкций PUSHA заносит в стек восемь общих регистров в следующем порядке: AX, CX, DX, BX, SP, BP, SI, DI. POPA извлекает регистры DI, SI, BP, BS, DX, CX и AX (то есть выполняет действие, обратное действию инструкции PUSHA). Регистр SP инструкцией POPA не извлекается, вместо этого SP увеличивается на 16 - длину блока регистров, занесенных в стек по инструкции PUSHA, а значение SP, занесенное в стек по инструкции PUSHA, очищается инструкцией POPA и отбрасывается. На сегментные регистры, флаги и указатель инструкций PUSHA и POPA не влияют.

Учтите, что инструкция PUSHA выполняется быстрее, чем восемь отдельных инструкций PUSH, но медленнее, чем три или четыре инструкции PUSH. Если вы хотите сохранить только несколько регистров, то лучше сделать это с помощью инструкции PUSH. Такое же замечание можно сделать относительно инструкций POPA и POP.