Ассемблер и программирование для IBM PC


          

Использование процедур дает хорошую возможность


Использование процедур дает хорошую возможность организо вать логическую структуру программы. Кроме того, операнды для команды CALL могут иметь значения, выходящие за границу от -128 до +127 байт. Технически управление в процедуру типа NEAR может быть передано с помощью команд перехода или даже обычным построч ным кодированием. Но в большенстве случаев рекомендуется использовать команду CALL для передачи управления в проце дуру и команду RET для возврата.
СЕГМЕНТ СТЕКА ------------------------------------------------------------
Ассемблер для IBM PC. Глава 7 141
До этого раздела в приводимых примерах встретились только две команды, использующих стек, - это команды PUSH в начале сегмента кодов, которые обеспечивают возврат в DOS, когда EXE-программа завершается. Естественно для этих программ требуется стек oчень малого размера. Однако, команда CALL автоматически записывает в стек относительный адрес команды, следующей непосредственно за командой CALL, и увеличивает после этого указатель вершины стека. В вызываемой процедуре команда RET использует этот адрес для возврата в вызывающую процедуру и при этом автоматически уменьшается указатель вершины стека. Таким образом, команды PUSH записывают в стек двухбайто вые адреса или другие значения. Команды POP обычно выбирают из стека записанные в него слова. Эти операции изменяют отно сительный адрес в регистре SP (т.е. в указатели стека) для доступа к следующему слову. Данное свойство стека требует чтобы команды RET и CALL соответствовали друг другу. Кроме того, вызванная процедура может вызвать с помощью команды CALL другую процедуру, а та в свою очередь - следующую. Стек должен иметь достаточные размеры для того, чтобы хранить все записываемые в него адреса. Для большенства примеров в дан ной книге стек объемом в 32 слова является достаточным. Команды PUSH, PUSHF, CALL, INT, и INTO заносят в стек адрес возврата или содержимое флагового регистра. Команды POP, POPF, RET и IRET извлекают эти aдреса или флаги из стека. При передаче управления в EXE-программу система устанавли вает в регистрах следующие значения:

Содержание  Назад  Вперед