Материал: Нечаев А.Н. Устройство и работа электронных цифровых машин

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

ление следующей, 26-й команде, либо «обходит» коман­ ды с номерами 26, 27, 28 и 29, передавая управление команде с номером 30.

Другая особенность многих машин состоит в том, что с помощью небольшого числа команд (обычно двух) можно выполнить некоторую операцию над боль­ шой группой чисел. Такие операции называются г р у п- п о в ы м и. Они позволяют,- в частности, переносить груп­ пы (массивы) информации из одного. запоминающего устройства в другое или из одной части запоминающе­ го устройства в другую. Такие групповые операции на­ зываются групповыми передачами, или операциями об­ мена между запоминающими устройствами.

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

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

Рассмотрим сначала т р е х а д р е с н у ю с и с т е м у команд, так как она в наибольшей степени соответству­ ет естественному процессу выполнения арифметических операций. Команда этой системы состоит из четырех групп чисел и содержит указания: из каких ячеек запо­ минающего устройства взять исходные числа (адреса 1-го и 2-го числа), какую операцию над этими числами провести (вид операции записывается в виде условного

кода) и в какую

ячейку ЗУ

поместить результат (ад­

рес результата). Например:

 

 

Код операции

Адрес

Адрес

Адрес

1-го числа

2-го числа

результата

 

05

101

102

560

м

а

Ъ

С

Команду, приведенную выше в качестве примера, сле­ дует прочитать так: число, находящееся в ячейке ЗУ с

50

номером «а» (например, 101), умножить (условным ко­

дом операции умножения в данном

примере является

число 05) на число,

находящееся в ячейке с номером

«b » (например, 102),

и результат

поместить в ячейку,

имеющую номер «с»

(например, 560). По этой команде

устройство управления посылает числа, хранящиеся в ячейках запоминающего устройства с номерами «а» и «Ь», в арифметическое устройство. ’’После , выполнения умножения устройство управления переносит результат из арифметического устройства в ячейку «с». Заметим, что в ячейках «а» и « b» сохраняются те же числа, кото­ рые были в них до считывания, а изменяется только со­ держимое ячейки «с».

Трехадресная команда не содержит указания о том, какая команда должна быть выполнена после данной. Поэтому если нет специальной команды условного или безусловного перехода, то при использовании трехад^ ресной системы. команды программы выполняются по­ следовательно, одна за другой, начиная с первой, пока не будет выполнена вся программа.

При о д н о а д р ес н о й с и с т е м е команда состоит из двух групп чисел: адреса одного числа и кода опе­ рации.

В общем случае для выполнения одной арифметиче­ ской операции требуется три одноадресные команды. Так, например, при одноадресной системе ,для сумми­ рования двух чисел необходимо извлечь из запоминаю­ щего устройства первое число и послать его в сумматор арифметического устройства (операция посылки в сум­ матор— ПС). Затем нужно извлечь из ЗУ второе число й также послать его в сумматор, где оно будет просум­ мировано с первым числом и сохранено до следующей команды (операция сложения — Сл). Номера ячеек, из которых выбираются числа, указаны в первой и второй командах. Результат суммирования посылается в ту ячейку, адрес которой указан в третьей команде (опе­ рация посылки — ПЯ) •

4*

51

К

ПС

Адрес

1-го числа

 

 

К+1

Сл

Адрес

2-го числа

 

 

К+2

ПЯ

Адрес

 

 

результата

Нетрудно заметить, что не всегда выполнение ариф­ метической операции требует трех одноадресных команд. Например, для последовательного суммирования групп из п чисел с посылкой конечного результата в запоми­ нающее устройство потребуется п •+■1 одноадресных команд, так как частные суммы не отсылаются каждый раз в ЗУ, а остаются в сумматоре и к ним с каждой но­ вой командой посылки прибавляется новое число. Та­ ким образом, одноадресные команды оказываются вы­ годными для выполнения таких групповых операций, в результате которых образуется одно число.

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

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

Чаще двухадресная команда кроме двух адресов и кода операции имеет также указатель порядка исполь­ зования адресов. В зависимости от значения этого ука­ зателя каждый из адресов может быть использован как для считывания, так и для записи или для того и друго­ го одновременно. Например, по двухадресной команде может быть выполнена операция сложения ( 0 = Сл ) двух чисел, стоящих в ячейках «а» и «Ь», с записью ре­ зультата в ячейку «Ь» (или в ячейку «а»). При другом значении указателя может быть выполнена пересылка числа из ячейки «а» в ячейку «Ь» (или наоборот) без выполнения каких-либо действий в арифметическом устройстве.

52

Код

Адрес

Адрес

Указатель

операции

1-го числа

2-го числа

 

е

а

Ь

 

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

Код

Адрес

Адрес

Адрес

Адрес

следующей

операции

1-го числа

2-го числа

результата

команды

 

 

 

 

-Четырехадресная система позволяет осуществить так называемое свободное выполнение программы, при котором последовательность выполнения команд может быть какой угодно. Заметим, что четырехадресная си­ стема предоставляет больше возможностей для програм­ мирования задач, но оборудование машины при этом ис­ пользуется хуже, чем при одно-, двухили трехадресиой системе. Поэтому такие машины не получили рас­ пространения. •

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

53

Для решения задач, связанных с сортировкой и пе­ рераспределением чисел в памяти, более удобны двух­ адресные системы, позволяющие по одной команде (бо­ лее короткой, чем трехадресная) переслать число из од­ ной ячейки в другую. В одноадресной машине для это­ го требуется две команды.

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

Для уяснения сущности программирования рассмот­ рим два примера (с использованием трехадресной и од­ ноадресной систем команд).

П р и м е р

1. Для трехадресной машины.

 

С о с т а в л е н и е п р о г р а м м ы д л я в ы п о л н е ­

ния на м а ш и н е г р у п п о в о й

о п е р а ц и и .

Такая

программа может быть частью

более сложной

про­

граммы.

 

 

 

Допустим,

что требуется умножить п чисел

ах, ...,

ап, размещенных в последовательных ячейках запоми­ нающего устройства, на некоторое постоянное число Ь. Можно легко составить программу, содержащую я трех­ адресных команд умножения, и с помощью ее решить за­ дачу. Однако при программировании более сложных за­ дач такой путь приведет к тому, что программа будет содержать чрезмерно большое количество команд, для записи которых понадобится очень много ячеек ЗУ. Ис­ пользуем для сокращения, количества команд цикличе­ скую программу, позволяющую многократно выполнять' одну и ту же операцию (в данном случае умножение). Запишем эту команду, предположив, что она находится в ячейке запоминающего устройства:

54

Источник: https://tut-files.ru/previewfile/124908