Связь с подпрограммами

 

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

Система связей подпрограмм в целом представляет собой некоторое множество соглашений, разрабатывавшихся в течение достаточно долгого времени и нашедших свое воплощение в соответствующей системе макрокоманд IBM. Несмотря на то что, вообще говоря, возможно, а иногда даже необходимо действовать вопреки этим соглашениям, программист, поступающий подобным образом, неизбежно идет на риск. Составленная им «нестандартная» программа может оказаться не в состоянии успешно взаимодействовать как с операционной системой, так и с другими программами пользователей. Большинство программ, входящих в программное обеспечение, поставляемое фирмой IBM, составлены с учетом этих соглашений. Подобные соглашения выполняются для программ на ФОРТРАНе, КОБОЛе и многих других языках. Изучив предлагаемый материал, вы сможете организовать взаимодействие вашей программы с программами, написанными на других языках, а также с программами, предоставляемыми фирмой IBM.

Команды связи с подпрограммами

BAL R1,D2(X2,B2)

Branch And Link

R1?(PC); PC?D2 + (X2) + (B2)

BALR R1, R2

Branch And Link Register

R1?(PC); PC?(R2)

LM  R1 ,R3,D2(B2)

Load Multiple

Загрузить в регистры с R1 по R3 содержимое последовательных слов памяти, начиная с адреса D2+(B2)

STM  R1,R3,D2(B2)

STore Multiple

Записать в последовательные слова памяти, начиная с адреса D2 + (B2), содержимое регистров с R1 по R3

 

 

Это интересно