Справочник по языку Ассемблера IBM PC

     

PUSHA


(PUSH All general registers onto stack)

Размещение всех регистров общего назначения в стеке

Схема команды:  pusha 

Назначение: размещение в стеке регистров общего назначения в следующей последовательности: ax, cx, dx, bx, sp, bp, si, di.


Алгоритм работы:

уменьшить значение указателя стека esp/sp на 32/16 (в зависимости от значения атрибута размера адреса — use16 или use32);

включить в стек последовательно значения регистров общего назначения ax, cx, dx, bx, sp, bp, si, di.

Содержимое di при этом будет на вершине стека. В стек помещается содержимое sp по состоянию до выполнения команды.
Состояние флагов после выполнения команды:

выполнение команды не влияет на флаги

Применение:


Команда pusha используется совместно с командой popa для сохранения и восстановления всех регистров общего назначения. Эти команды удобно использовать при работе с процедурами, программами обработки прерываний, а также в других случаях для сохранения и восстановления регистров общего назначения как части контекста некоторого вычислительного процесса.

my_proc proc    near         pusha ;тело процедуры, в которой изменяется ;содержимое регистров общего назначения ...         popa         ret         endp         

См. также: уроки 7, 10, 14, 15, 16, 17 и команды , , , , , , , ,



Содержание раздела