Схема взаимодействия ПП с главной
Подпрограммы и ввод/вывод
Подпрограммы составляются как универсальные программы, взаимодействующие с любыми главными. Составление ПП обычно предшествует составлению главной. Имеются библиотеки стандартных подпрограмм. Они хранятся во внешней памяти, организуются с помощью каталога. Запись в каталоге содержит адрес, длину, имя и другую информацию.
Можно составить две программы ПП, вычисляющую значение Х, и главную, вычисляющую значение 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+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
- Команда возврата имеет вид:
5П | О | R1 |
Схема исполнения:
1. ((УК))→РК
2. (УК)+1→УК
3. Дешифровка коп
4. (R1) → УК
5. Переход к пункту 1
Схема:
Формат главной | |
А | P1 R1 D |
А+1 | |
… | |
В | P1 R1 D |
В+1 | |
ПП | |
D | |
Е | БП ОR1 |
В качестве регистра R1 может быть использован любой из РОН, но в командах обращения и команде возврата должен исполнятся один и тот же регистр.