Скачиваний:
25
Добавлен:
15.06.2014
Размер:
27.14 Кб
Скачать

Подпрограммы. Способы передачи данных. Процедуры. Ближние и дальние процедуры.

Подпрограмма

Возможно выполнение программного модуля, состоящего из нескольких ассемблированных программ. В этом случае программу можно рассматривать, как состоящую из основной программы и одной или более подпрограмм. Причины такой организации программ состоят в следующем:

- бывает необходимо скомпоновать программы, написанные на разных языках, например, для объединения мощности языка высокого уровня и эффективности ассемблера;

- программа, написанная в виде одного модуля, может оказаться слишком большой для ассемблирования;

- отдельные части программы могут быть написаны разными группами программистов, ассемблирующих свои модули раздельно;

- ввиду возможно большого размера выполняемого модуля, может появиться необходимость перекрытия частей программы в процессе выполнения.

Процедуры

Любая процедура представляет собой такую программу в миниатюре, которая, отработав, возвращает управление вызвавшей ее программе

На Ассемблере процедуры принято оформлять специальным образом: <имя_процедуры> PROC <тип>

<код>

<имя_процедуры> ENDP

У директивы PROC есть параметр <тип> (NEAR либо FAR). Параметр может отсутствовать, тогда считается, что он равен NEAR. При параметре NEAR или при его отсутствии процедура называется "ближней", при параметре FAR — "дальней". К ближней процедуре можно обращаться только из того сегмента команд, где она описана, и нельзя обращаться из других сегментов, а к дальней процедуре можно обращаться из любых сегментов, в том числе и из того сегмента, где она описана.

Вызов процедуры: CALL <имя_процедуры>

Возврат из процедуры: RET

Команда CALL записывает адрес следующей за ней команды в стек и затем осуществляет переход на первую команду указанной процедуры. Команда RET считывает из вершины стека адрес и выполняет переход по нему (возврат в головную программу). Напомним, что в ПК адрес команды, которая должна быть выполнена следующей, задается парой регистров CS:IP.

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

  1. по значению: перед обращением к процедуре основная программа вычисляет значения фактических параметров, и именно эти значения передаются процедуре.

  2. по ссылке: основная программа записывает в какой-то условленный регистр адрес фактической переменной, а процедура оперирует переменной с его помощью. Регистр может быть любой, но лучше, если это будет регистр-модификатор: BX, BP, SI, DI.

Соседние файлы в папке Ответы на билеты