Всего на сайте:
248 тыс. 773 статей

Главная | Информатика

Команды обращения к подпрограммам  Просмотрен 206

Очень часто одну и ту же процедуру нужно выполнить в несколь­ких точках программы. Вместо того чтобы повторно записывать команды этой процедуры в каждой точке, удобнее и эффективнее офор­мить ее в виде подпрограммы. На рис.4.11 показано взаимодействие главной программы и подпрограммы.

Разумеется, должен быть обес­печен возврат в главную программу в ту же точку, откуда было сделано обращение, или в некоторую точку, четко определенную относи­тельно точки обращения.

Общий подход к решению этой проблемы состоит в том, чтобы пре­дусмотреть специальные команды, с помощью которых можно было бы запомнить исходную точку, а затем вернуться к ней. В нашем иллю­стративном микропроцессоре эти функции выполняют две команды: «переход на подпрограмму» (JMS) и «возврат из подпрограммы» (RET). Информационные потоки для этих команд приведены на рис 4.12.

Сначала рассмотрим команду JMS. По третьему синхроимпульсу третьего машинного цикла содержимое регистра адреса данных, рав­ное адресу входа в подпрограмму, поступает на программный счет­чики, тем самым осуществляется переход. Одновременно старое со­держимое программного счетчика, которое уже было продвинуто и указывало на следующую за JMS команду, помещается в стек. После завершения подпрограммы команда RET позволяет вернуться в глав­ную программу. При ее выполнении стек поднимается, и на програм­мном счетчике восстанавливается адрес команды в главной программе на которую следует вернуться.

Совершенно ясно, что та же пара команд позволяет подпрограмме обратиться в свою очередь к другой подпрограмме и т. д. Это называ­ется вложенными обращениями или вложенными подпрограммами. Единственное ограничение на число уровней вложения налагается размерами стека, поскольку, когда стек опускается, содержимое его нижнего регистра теряется.

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

 

 

Предыдущая статья:Команды передачи управления Следующая статья:Арифметические и логические команды
page speed (0.044 sec, direct)