Assembler для начинающих


         

Передача параметров


      Стек также служит удобным местом для передачи информации в
    подпрограммы и из них. Обычно программа передает параметры в
    подпрограмму, помещая их в регистры, однако в некоторых случаях
    число параметров превышает размеры регистрового пространства. В
    таких случаях програииа может поместить параметры в стек до
    выполнения команды CALL (вызов подпрограммы). Как мы увидим в
    гл.10, стек является единственным средством передачи параметров в
    подпрограммы, написанные на языке ассемблера, из языков высокого
    уровня Бейсик и Фортран.
 
      Подпрограмма может очень эффективно загружать эти параметры из
    стека. В обычных случаях программа читает информацию из стека
    единственным способом - извлекая ее оттуда. Вместо этого
    подпрограмма может использовать регистр BP, как указатель на
    область стека. Когда программа передает параметры через стек, одной
    из первых команд в подпрограмме выполняется команда
 
      MOV BP, SP
 
      которая загружвет регистр BP текущим значением указателя стека.
    Поскольку регистр BP - адресный регистр, подпрограмма может
    использовать его при адресных вычислениях, а это означает, что все
    параметры доступны как смещения относительно регистра BP.
 
      Конструкторы микропроцессора 8088 определенно помнили об
    описанном выше методе передачи параметров, так как при доступе к
    данным регистр BP использует по умолчанию регистр стекового
    сегмента SS в качестве сегментного регистра. Во всех других
    нормальных случаях доступа к данным микропроцессор использует
    регистр DS. Поскольку стек находится в стековом сегменте,
    регистровую пару SS:BP очень естественно использовать для адресации
    информации в стеке.
 
      На Фиг. 4.7 изображен пример, демонстрирующий использование
    регистра BP для доступа к параметрам, переданным через стек. В этом
    примере головная программа перед выполнением команды CALL поместила
    четыре слова в стек. Подпрограмма загружает в BP указатель данных в



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