Сохранение адреса возврата в регистре

Схема взаимодействия ПП с главной

Подпрограммы и ввод/вывод

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

Можно составить две программы ПП, вычисляющую значение Х, и главную, вычисляющую значение Z, и использующую ПП. В главной должна стоять команда безусловного перехода к ПП, а в конце ПП – команда безусловного перехода к главной.


Схема:

  Формат главной
   
   
А Переход к ПП
   
А+1  
   
   
  ПП –мма
   
D  
 
   
  Возврат const
   
   

D – точка входа (первая строка ПП)

Часто одну ПП надо использовать для вычисления значения f(x) от разных аргументов. Тогда надо обращаться к ПП два раза из разных мест. Перед каждым обращением нужно правильно задать аргумент.

Схема обращения к ПП из двух мест:

  Формат главной
А Переход к ПП
А+1  
   
   
В Переход к ПП
   
   
  ПП -мма
D  
   
Возврат const
   
   
   
   

Более сложный вариант: приближенное вычисление определенного интеграла, имеет место взаимодействия вложенных ПП.

  ПП
D  
А1  
А1+1  
В1 Переход к ПП
С1  
 
  Возврат
   
   
  Формат главной
   
А Переход к ПП
А+1  
   
В Переход к ПП
В+1  
   
   
   
  ПП
D1  
   
   
 
  Возврат
   
   
   
   

В связи с использованием ПП возникают проблемы:

- Вызов ПП и возврат(1)

- Передача параметров (2)

- Сохранение регистров (3)

- Настройка по параметрам (4)

- Настройка по мету (5)

1. Вызов ПП и возврат. В ячейках А и В находятся команда перехода по адресу D, а команда возврата в ячейке Е - переменная. После вызова из ячейки А в Е должна стоять команда в А+1, после вызова из В – по адресу В+1, т.е в ячейке Е постоянно меняется адрес возврата. Очевидно, информация об адресе возврата должна быть передана из главной перед вызовом ПП.

Приемы организации возврата:

- Засылка в ПП команды возврата: используется двухадресная команда безусловного перехода по адресу D.

БП ~ D

Формат:

Команды:

Команды пересылки
(j) → E

(j+1) → E

А содержимое ячеек j и j+1 являются заготовленными константами в виде команд безусловного перехода.

(j) - БП~А+1

(j+1) - БП~В+1

Схема засылки возврата

  Формат главной
А-1 (j)→Е
А БП~D
А+1  
 
В-1 (j-1)
В БП~D
В+1  
   
  ПП
D  
   
 
   
   
   
   

Такой способ организации связи требует на каждое обращение три ячейки: для двух команд четырех обращений к памяти. Решение проблемы – организация возврата путем объединения команд ячеек А-1 и А в одну. В систему команд вводится команда перехода:

ПП Е D

Зная адрес точки входа ПП, можно используя команду в

ПП D-1 D

формате модернизировать:

Схема возврата:

  Формат главной
   
   
A Переход к ПП
A+1  
   
   
   
  ПП
D-1  
D  
 
 
   
E  
   

Точка выхода ячека D-1, точка Е не нужна!

В системе команд(СК) вводится две команды:

- Команда вызова ПП имеет вид:

ПП R1 D

Схема исполнения:

1. ((УК))→РК

2. (УК)≠1→УК

3. Дешифровка коп

4. (УК) →R1

5. D→УК

6. Переход к пункту 1

- Команда возврата имеет вид:

О R1

Схема исполнения:

1. ((УК))→РК

2. (УК)+1→УК

3. Дешифровка коп

4. (R1) → УК

5. Переход к пункту 1


Схема:

  Формат главной
А P1 R1 D
А+1  
 
В P1 R1 D
В+1  
   
  ПП
D  
   
   
   
Е БП ОR1
   

В качестве регистра R1 может быть использован любой из РОН, но в командах обращения и команде возврата должен исполнятся один и тот же регистр.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: