|
Для работы подпрограммы нужны 9 констант (г2 -5- гв и г8 ч- гг1), вид которых зависит от этих параметров. Если следовать только что избранному пути, то при каждом обращении к подпрограмме 8.2.4 (с новыми параметрами) придется запасать все эти заготовки и писать девять команд их пересылки в рабочие ячейки подпрограммы. (Какие рабочие ячейки подпрограммы здесь имеются в виду? Для заготовок г9, zl0 и zxx это могут быть прямо ячейки г3, г4 и г5, тогда в самой подпрограмме команды пересылки этих заготовок в эти ячейки будут уже не нужны, а команду о пч г9 о г2 можно заменить командой. Но для остальных констант ячейки с адресами z2 ч- г@ и г8 следует рассматривать как рабочие и засылать в них нужное содержимое при обращении к подпрограмме.) Поэтому попытаемся организовать работу с модулями так, чтобы параметр-адрес сообщался модулю в более или менее чистом виде, а использование этого адреса внутри модуля было бы делом самого модуля. В программах для машин типа М-20 параметр-адрес а проще всего передавать в составе машинного слова (заготовки) О ЛИ 0 а 0 4 (1) Пусть в модуле М1у к которому мы обращаемся, под такое слово выделена рабочая ячейка ах. Тогда в блоке связи, через который происходит обращение к модулю Мх (в группе команд засылки аргументов), для посылки слова (1) в эту ячейку можно воспользоваться командой 2 АИ а 0 аг но можно, конечно, применить и команду привычного вида О ПЧ а0 0 ах если в модуле М0, из которого производится обращение, уже существует ячейка а0У в которой хранится заготовка (1). Таким образом, мы сводим случай параметра-адреса а к случаю параметра-значения, представленного словом (1). Для использования информации, переданной модулю с помощью слов такого вида, к модулю добавляется формирующая часть. Ее назначение — сформировать все команды, вид которых зависит от параметров-адресов, т. е. команды типа команд ри + 4 и рв + 7 в подпрограмме 14.2.1. Покажем на ее примере, как составляется эта часть. Воспользуемся •приемами, известными нам по § 4 гл. 11. Они являются составной частью формируемого модуля.
|