assem / Ответы по пунктам / 023
.docx-
Описать сегмент стека, команды работы со стеком.
Стек – организованный специальным образом участок памяти, который используется для временного хранения переменных, передача параметров вызываемым подпрограммам и сохранение адреса возврата при вызове процедур и прерываний.
Команда PUSH и POP. Для работы со стеком.
Команда PUSH помещает содержимое регистра или ячейки памяти размером в 16 битовое слово на вершину стека. А POP снимает слово с вершины стека и помещает его в ячейку памяти или регистр. PUSH источник, POP приемник.
Пример: PUSH SI; PUSH DS; PUSH TABLE[BX][DI] (ячейка памяти). Под вершиной стека мы понимаем ячейку в сегменте стека, адрес которой хранится в указателе SP. Если надо вытащить из стека то SP=SP+2 и вытаскиваем.۩
Пример описания стекового сегмента
(можно не описывать, а пользоваться системным стеком)
sseg segment [ para stack 'stack' ] ; заголовок стекового сегмента
db 256 dup(' ') ; область памяти под стек
tos label word ; переменная для определения вершины стека
sseg ends ; конец стекового сегмента
Обычно стековый сегмент не описывается в программе, т.к. пользуются системным стеком. Для тех, кто хочет пользоваться собственным стеком, надо помнить, что для этого надо проинициализировать регистр стекового сегмента. Скобки [ ...], указанные в описании сегментов, говорят о том, что то, что указано внутри скобок, может быть опущено. ۩