Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
(PUSH operand onto stack)
Размещение операнда в стеке
Схема команды: |
push источник |
Назначение: размещение содержимого операнда источник в стеке.
Синтаксис
Алгоритм работы:
Состояние флагов после выполнения команды:
выполнение команды не влияет на флаги |
Применение:
Команда push используется совместно с командой pop для записи значений в стек и извлечения их из стека. Размер записываемых значений слово или двойное слово. Также в стек можно записывать непосредственные значения. Заметьте, что в отличие от команды pop в стек можно включать значение сегментного регистра cs. Другой интересный момент связан с регистром sp. Команда push esp/sp записывает в стек значение esp/sp по состоянию до выдачи этой команды. В микропроцессоре i8086 по этой команде записывалось скорректированное значение sp. При записи в стек 8-битных значений для них все равно выделяется слово или двойное слово (в зависимости от use16 или use32).
my_proc proc near push ax push bx ;тело процедуры, в которой изменяется содержимое ;регистров ax и bx ... pop bx pop ax ret endp
|
(PUSH All general registers onto stack)
Размещение всех регистров общего назначения в стеке
Схема команды: |
pusha |
Назначение: размещение в стеке регистров общего назначения в следующей последовательности: ax, cx, dx, bx, sp, bp, si, di.
Синтаксис
Алгоритм работы:
Содержимое di при этом будет на вершине стека. В стек помещается содержимое sp по состоянию до выполнения команды.
Состояние флагов после выполнения команды:
выполнение команды не влияет на флаги |
Применение:
Команда pusha используется совместно с командой popa для сохранения и восстановления всех регистров общего назначения. Эти команды удобно использовать при работе с процедурами, программами обработки прерываний, а также в других случаях для сохранения и восстановления регистров общего назначения как части контекста некоторого вычислительного процесса.
my_proc proc near pusha ;тело процедуры, в которой изменяется ;содержимое регистров общего назначения ... popa ret endp
|
(POP operand from the stack)
Извлечение операнда из стека
Схема команды: |
pop приемник |
Назначение: извлечение слова или двойного слова из стека.
Синтаксис
Алгоритм работы:
Алгоритм работы команды зависит от установленного атрибута размера адреса use16 или use32:
Состояние флагов после выполнения команды:
выполнение команды не влияет на флаги |
Применение:
Команда применяется для восстановления содержимого вершины стека в регистр, ячейку памяти или сегментный регистр. Заметим, что недопустимо восстановление значения в сегментный регистр cs.
my_proc proc near push ax push bx ;тело процедуры, в которой изменяется содержимое ;регистров ax и bx ... pop bx pop ax ret endp
|
(POP All general registers from the stack)
Извлечение всех регистров общего назначения из стека
Схема команды: |
popa |
Назначение: извлечение из стека регистров общего назначения di, si, bp, sp, bx, dx, cx, ax.
Синтаксис
Алгоритм работы:
Состояние флагов после выполнения команды:
выполнение команды не влияет на флаги |
Применение:
Команда popa по принципу работы является обратной команде pusha и используется для восстановления содержимого всех регистров общего назначения значениями из стека. Эту команду можно использовать в процедурах и программах обработки прерываний для восстановления регистров общего назначения прерванной программы.
.386 my_proc proc near pusha ;тело процедуры, в которой изменяется ;содержимое регистров общего назначения ... popa ret endp
|