В гл.3 обсуждалось, как реализован стек в микропроцессоре 8088.
Микропроцессор 8088 адресует стек с помощью регистровой пары SS:SP.
Помещение объектов в стек приводит к тому, что он растет в сторону
меньших адресов памяти. Стек, кроме всего прочего, служит и для
запоминания адресов возврата из подпрограмм. В этом разделе
рассматриваются некоторые команды, которые непосредственно работают
со стеком.
Фиг.4.7 иллюстрирует ассемблированные стековые команды.
Мнемоника команд очевидна; за кодами операций PUSH и POP следует
имя регистра для указания операнда. Единственным исключением
является помещение и извлечение из стека регистра флагов, которые
используют мнемонику PUSHF и POPF соответственно. Содержимое любой
ячейки памяти, которую программа может адресовать, используя
возможные способы адресации, также может быть помещено или
извлечено из стека.
При любых действиях со стеком в микропроцессоре 8088 базовой
единицей информации является 16=битовое слово. Длина любого
объекта, помещаемого в стек либо извлекаемого из стека, составляет
одно или несколько слов. Байтовых команд, связанных с засылкой
данных или извлечением их из стека, не существует. Если, например,
программе необходимо сохранить содержимое регистра AL а стеке, она
должна поместить содержимое регистра AX, так как не существует
способа сохранения только содержимого регистра AL.
Основное назначение стека - временное хранение информации. Как
мы уже видели, стек используется для сохранения адреса возврата;
программа также может сохранять данные. Если программа хочет
использовать регистр, пусть даже сохранить текущие данные, она
может послать значение этого регистра в стек. Эти данные
сохраняются в стеке и позже могут быть восстановлены. Например,
Microsoft (R) Macro Assembler Version 5.00 1/1/80 04:00:43
Фиг. 4.7 Операции со стеком Page 1-1