Архитектура базовой ЭВМ. Кириллов В.В. - 67 стр.

UptoLike

Составители: 

64
1) помещает в ячейку М адрес следующей за JSR М команды, т. е.
команды, которая должна выполняться вслед за командами
подпрограммы;
2) передает управление команде, расположенной в ячейке с адресом
М+1.
Последней исполняемой командой подпрограммы должна быть
команда выхода, т. е. команда BR (М), по которой осуществляется переход
к команде с адресом, хранимым в ячейке М.
Пример 2.5. Получить удвоенный модуль чисел X, Y и Z, хранящихся в ячейках
памяти 58, 63 и 71 соответственно. Результаты (2|Х|, |Y|, 2|Z|) поместить в ячейки 74, 77
и 82.
Для решения этой задачи можно взять за основу программу примера 2.4,
оформив ее фрагмент в виде подпрограммы (табл. 2.17). В программе табл. 2.17 в
подпрограмму передается всего одна величина: в аккумулятор помещается число,
модуль которого нужно удвоить. Результат вычислений (опять одна величина)
возвращается в основную программу через тот же аккумулятор. А как же передать и
(или) получить два или большее число параметров?
Таблица 2.17
Первый вариант программы получения удвоенного модуля трех чисел
Адрес
Содержимое
Комментарии
Код
Мнемоника
Основная программа
10
11
12
13
F200
4058
2030
3074
CLA
ADD 58
JSR 30
MOV 74
Запись в аккумулятор значения Х, обращение к
подпрог-рамме получения удвоенного модуля
(запись в ячейку 30 адреса 13 и переход к команде,
расположенной по адресу 31), пересылка
результата в ячейку для хранения 2 │Х│
14
15
16
17
F200
4063
2030
3077
CLA
ADD 63
JSR 30
MOV 77
Те же действия, что и в командах 10–13, но над
аргументом Y. При обращении к подпрограмме в
ячейку 30 пересылается адрес возврата 17
18
19
1A
1B
F200
4071
2030
3082
CLA
ADD 71
JSR 30
MOV 82
Те же действия, что и в командах 10–13, но над
аргументом Z. При обращении к подпрограмме в
ячейку 30 пересылается адрес возврата 1B
1C
F000
HLT
Останов ЭВМ
Подпрограмма получения удвоенного модуля
30
31
0000
9034
BPL 34
Ячейка для размещения адреса возврата
Первая команда: проверяет знак числа в
аккумуляторе, и если он положительный, то
передает управление командам удвоения
содержимого аккумулятора
32
33
F400
F800
CMA
INC
Изменение знака
34
35
F600
C830
ROL
BR (30)
Удвоение содержимого аккумулятора
Выход из подпрограммы (переход к выполнению
команды, адрес которой хранится в ячейке 30)