Если в процедуру необходимо передать некоторую переменную, то для процедуры она является формальным параметром. А конкретное значение данной переменной, которое передается в процедуру для замещения соответствующего формального параметра, является фактическим параметром. Например, если описать некоторую процедуру для сложения двух чисел как SUM(x,y), то переменные x,y явл. формальными параметрами, а при обращении к процедуре для вычисления суммы 4 и 5
SUM(4,5) значения 4 и 5 являются фактическими парметрами.
Поэтому одну и ту же процедуру можно использовать многократно для разных наборов значений этих переменных, SUM(5,7) SUM (100,45)
Передача значений в процедуру называется передачей параметров.
Результатом выполнения процедуры может быть некоторое значение, которое необходимо передать вызывающей программе. Передача результата из процедуры в программу тоже организовывается как передача параметров.
Передавать параметры можно
· через регистры
· через стек
· через общую область памяти
· с помощью директив extern и public
Существует два способа передачи данных:
1. Передача параметров по значению
В этом случае передаются сами данные, т.е. их значения
!!! При передаче параметров по значению в процедуре обрабатываются их копии. Поэтому значения переменных в основной программе не изменяются!!!
2. Передача параметров по ссылке
В этом случае передаются адреса (ссылки) параметров
!!! Здесь обрабатываются не копии, а сами данные, поэтому при изменении данных в процедуре они автоматически изменяются и в вызывающей программе!!!
Т.Е. Передача параметра по ссылке означает передачу адреса ячейки, соответствующей фактическому параметру.
Передача параметров через регистры
Самый простой способ передачи данных. Его суть заключается в следующем:
Основная программа записывает фактические параметры в какие-нибудь регистры, а процедура берет их оттуда и обрабатывает.
Аналогично поступают с результатом. Процедура помещает результат в какой-то регистр, а программа извлекает его оттуда.
!!! Если размер данных превышает 16 или 32 бит (размер регистра), то передавать нужно не сами данные, а ссылки на них.
Совет 1 Рекомендуется тщательно комментировать процедуру и основную программу.
Необходимо описать в какие регистры какие параметры помещаются, в какие регистры помещается результат.
Совет 2. Рекомендуется использовать при небольшом количестве параметров, т.к. число доступных регистров ограничено.