63
2.5. Подпрограммы и параметры
Достаточно часто встречается ситуация, когда отдельные части
программы должны выполнять одни и те же действия по обработке
данных (например, вычисление тригонометрической функции). В
подобных случаях повторяющиеся части программы выделяют в
подпрограмму, а в соответствующие места программы заносят лишь
команды обращения к этой подпрограмме. В базовой ЭВМ для этой цели
используется команда JSR ("Обращение к подпрограмме").
На рис. 2.6 показана часть основной программы, содержащая две
команды JSR 300, с помощью которых осуществляется переход к
выполнению команд подпрограммы.
JSR 300
JSR 300
24
25
26
71
72
73
...
300
301
326
Ячейка, используемая для размещения
адреса возврата из подпрограммы
Первая ко-
манда под-
программы
Команда
выхода из
подпрог-
раммы
Подпрограмма
Основная
программа
Обращения к
подпрограмме,
расположенной
в ячейках с
300 по 326
BR (300)
...
Рис. 2.6. Обращение к подпрограмме из основной программы
По команде JSR 300, расположенной в ячейке 25, выполняются
запись числа 25+1=26 в ячейку с адресом 300 и переход к первой
исполняемой команде подпрограммы, расположенной в ячейке 301. Далее
начинается процесс выполнения команд подпрограммы, который
завершается на команде BR (300), расположенной в ячейке 326. Это
команда безусловного перехода с косвенной адресацией. Она
предписывает ЭВМ выполнить переход к команде, расположенной по
адресу, сохраняемому в ячейке 300. Так как в эту ячейку ранее было
занесено число 26, то будет исполняться команда, записанная в ячейке 26,
т. е. следующая за обращением к подпрограмме.
По команде JSR 300, расположенной в ячейке 72, осуществляется
запись числа 72+1=73 в ячейку с адресом 300 и начинается выполнение
подпрограммы (с ячейки 301). При исполнении последней команды
подпрограммы BR (300) будет осуществлен переход к команде,
расположенной по адресу 73, т. е. адресу, хранимому в ячейке 300.
Таким образом, при оформлении подпрограммы перед первой ее
командой следует разместить ячейку, в которую будет пересылаться адрес
возврата из подпрограммы. В обращении к подпрограмме указывается
адрес именно этой ячейки, и команда JSR М выполняет следующие
действия: