грамм ного управления машины имеет регистр, в котором поме
щ аю тся последовательно один за другим управляю щ ие коды — ком ан ды выполняемой программы.
Совокупность команд, необходимых для решения данной зад ач и , занумерованны х согласно их размещению во внутренней памяти, вместе с соответствующим образом зан умерованны ми исходными данными (включая постоянные, встречаю щ иеся в ре
шении зад ач и ) представляет собой программ у задачи.
В программе отмечается н ачальная ком анда, с которой д олж н а быть начата работа программы.
Помимо ком анд вычислительного назначения, т. с. команд, связанны х с выработкой посредством А У кодов-значений ф ун к
ций от соответствующих кодов-аргументов, для автоматического решения зад ач и на машине необходимы специальные у п р а в л я ю щие команды, посредством которых происходит обращение к внешним устройствам (ввода, вывода, внешней п ам яти), а та к ж е реализую щ ие предусмотренную программой последо
вательность выполнения операций.
Действие устройства управления в каж д ы й данный момент времени определяется тем, к а к а я команда находится в его
4 8 П Р И Н Ц И П Ы П Р О Г Р А М М Н О Г О У П Р А В Л Е Н И Я НА Ц И Ф Р О В Ы Х М А Ш И Н А Х [ г л . II
П Р И Н Ц И П И А Л Ь Н А Я С Х Е М А ЦА М 4 9
регистре, и зав ер ш аетс я засылкой соответствующего кода команды из З У в этот регистр. Тем самым машина автом атич е
ски переходит к выполнению следующей команды.
В целях контроля над выполнением программы (или ее ч а сти) по отдельным ком андам, помимо автоматического у п рав л е
ния, в машинах у станавли в ается система ручного управления.
С помощью ручного управления н аж атием пусковой кнопки вы
полняется т а к ж е н а ч ал ьн ая команда, т. е. происходит запуск машины па автоматическую работу.
В зависимости от конструкции машины разд ел я ю тся на машины с последовательным (или естественным) и п р и н у д и тельным порядком выполнения команд.
В машинах первого типа после выполнения k-i\ команды (т. е. команды, хранящ ейся в k-i\ ячейке З У ) выполняется (к + 1)-я ком ан да (или, как говорят, передается управление (к + 1) -й команде) и т. д. Исключение составляю т т а к н азы вае
мые команды передачи у п р а в л е н и я, т. е. команды, с помощью которых в зависимости от результатов предшествующих вычи
слений в соответствующих местах программы выясняется и р е а лизуется необходимость продолжения расчетов по тем или иным частям программы.
При этом заметим, что последовательное перечисление эле
ментарных вычислительных операций, необходимых д л я решения задачи, привело бы к п рограммам огромной длины, само соста
вление которых зан и м ал о бы времени не меньше, чем выполне
ние всех расчетов при ручном счете. Кроме того, т а к а я про
грам м а чрезмерно загр у зи л а бы ячейки ЗУ . Поэтому з а дачей программиста явл яется составление таких программ, по которым при сравнительно небольшом числе команд мо
ж е т быть выполнено большое количество отдельных вычис
лений (за счет многократного использования одних и тех же команд, что осущ ествляется с помощью операций передач уп рав лен и я ).
В машине с последовательным порядком выполнения команд к а ж д а я ком анда вычислительного назначения д о л ж н а сод ерж ать шифр выполняемой операции и номера ячеек, над кодами кото
рых д о л ж н а быть выполнена эта операция и в которые д олж ен быть отослан результат вычислений. Д л я составления ком анд не об язате л ьн о зн ать число, над которым производится операция, достаточно в команде у к а зать номер я ч е й к и —адрес, в которую оно было помещено в процессе ввода или в результате выпол
нения какой-либо предыдущей операции. Таким образом, не зная зар а н е е результатов предшествующих вычислений, можно составлять команды д ля выполнения операций над ними, у к а зы вая в ад ресах номера ячеек, в которые эти результаты отсы л аю тся д ля хранения.
4 З а к . I ICO, Э л ем ен т ы п р о гр а м м и р о в а н и я
5 0 П Р И Н Ц И П Ы П Р О Г Р А М М Н О Г О У П Р А В Л Е Н И Я Н А Ц И Ф Р О В Ы Х М А Ш И Н А Х [ г л . и
П оскольку в адресах ком анд указы в аю тся не числа, а л и ш ь их номера, число двоичных разрядов, необходимых д л я кодировки команд, мож ет быть небольшим при небольшой емкости внутреннего ЗУ. Действительно, д л я кодировки к а ж д ого адреса достаточно ограничиться числом разрядов п, если число ячеек внутреннего З У М 2".
Число адресов, которые могут быть даны в одной команде, оп ределяет адресность машины.
В м аш и нах с принудительным порядком выполнения ко м ан д в к а ж д о й ком анде указы вается адрес ячейки, хранящ ей сл ед у ю щую команду.
И з сказанного ясно, что одноадресные машины д олж н ы р а ботать по принципу последовательного выполнения ком анд.
Кроме того, очевидно, что одноадресные машины д олж н ы иметь в А У один пли несколько регистров для хранения п ром еж уточ
ных результатов. Арифметические действия при этом р а с ч л е няю тся на несколько этапов таким образом, чтобы к а ж д а я э л е м е н т а р н а я операция машины относилась только к одной из величин. В связи с этим в одноадресных маш инах список э л е ментарны х операций долж ен содерж ать, например, такие оп ер а
ции, к а к «взятие числа из. ячейки а и отсылка его в регистр А У с предварительной очисткой этого регистра»:
Р,а;
«прибавление числа, содерж ащ егося в ячейке а, к сод ерж им ом у реги стра АУ»:
Р2а;
«взятие числа из регистра А У и отсылка его в ячейку а»:
и т. д. Так, например, для выполнения следующей операции:
«слож и ть число, хран ящ ееся в ячейке а, с числом, хран ящ и м ся в ячейке (3, и поместить результат в ячейку 7», в программу д л я одноадресной машины следует поместить три команды:
Рх а;
Р &
В трехадресной машине с естественным порядком выполне
ния ком анд д ля этой ж е цели понадобится только одна ком ан да:
РаВ^. Вместе с тем д ля сложения чисел, хран ящ ихся в ячейках a - f 1, а + 2, . . . , а + п, с помещением результата в ячейку *у в одноадресной машине потребуется п + 1 команда, а в т р е х а д р ес н о й — п— 1 команда. В среднем ж е программы д ля трех-
П Р И Н Ц И П И А Л Ь Н А Я С Х Е М А Ц А М 51 адресных машин примерно вдвое короче соответствующих про
грамм для машин одноадресных.
П рограм м а, составленная д л я определенной машины (с опре
деленной адресностью, способом выполнения операций и их набором), без особых затруднений мож ет быть переработана в программу д л я любой другой универсальной машины. Поэтому мы в дальнейшем будем излагать основы програм м и рован ия для трехадресных машин с последовательным выполнением операций.
При этом мы пе станем ограничиваться каким-либо определен
ным набором выполнимых на машине элементарны х операций.
Запись ком анд д л я трехадресных машин мож ет быть пред
ставлена в таком достаточно удобном виде:
Код оп ерации I а д р ес II адрес 111 а д рес
Так, в трехадресной машине Стрела, работающ ей на 43 р а з рядах, для кодировки зн а к а операции отводится 6 р азря дов и па к аж ды й пз а д р е с о в — 12 разрядов; один р а з р я д — контрольный з н а к *)
1 адрес І
II адрес I III адрес Контрольный
знак оп ерацииКоя
0 - 1 1 12— 23 2*1— 35 3 6 3 7 — 42
Рассмотрим, что происходит в трехадресной машине с по
следовательным порядком выполнения ком анд после поступле
ния в УУ из ячейки З У с номером п кода, представляю щ его с о бой команду вычислительного характера.
Работа, в ы зван н ая выполнением этой команды, может быть р азд ел е н а па четыре такта.
П е р в ы й т а к т . Код операции из регистра УУ передается на коммутатор операций и настраивает А У на выполнение соот
ветствующей этому коду операции.
В т о р о й т а к т . С одерж имое первого ад реса команды (ІЛ) передается на коммутатор (внутреннего) ЗУ; открывается
ячейка ЗУ, номер которой указан в IА, в резул ьтате чего сод ер
ж и м ое этой ячейки считывается на соответствующий регистр АУ.
Т р е т и й т а к т. С одержимое ячейки, номер которой у к а зан в ІІЛ (во втором ад ресе), считывается на соответствующий
регистр АУ.
Ч е т в е р т ы й т а к т . А У в ы р а б а ты в ае т результат операции;
сод ерж им ое I I 1/1 регистра У У передается на ком мутатор З У \
*) Контрольный знак используется при проверке программы.
4 *
откры вается ячейка, номер которой указан в І І М выполняемой команды , и выработанный в А У код поступает в эту ячейку (в ы тесняя преж д е хранившийся в ней код); на регистр УУ посту
пает содерж им ое следующей по номеру команды — код ячейки с номером п + 1.
§ 2. Элементарные операции, выполняемые ЦАМ
К а к указывалось, для решения тех или иных математических или логических задач конструктивно в маш инах п ред усм атри вается возможность выполнения определенного набора элем ен тарн ы х операций, кодируемых в виде отдельных команд. В з а в и симости от адресности и других особенностей машины мож но у к а з а т ь те или иные необходимые наборы элементарных о п е р а ций; однако ограничение конструкций машин такими н аб орам и приводит к значительному удлинению программ и усложнению процесса программирования, а тем самым к загром ож ден ию п амяти машины и усложнению процесса ввода. Поэтому обычно выбирается достаточно широкий набор элементарных операций,
включаю щ ий минимум необходимых.
Зд есь мы рассмотрим элементарные операции д ля машины с трехадресным кодом команд. Элементарные операции, вы
полняемые машиной, в зависимости от назначения можно р а з бить на несколько групп:
1) основные арифметические операции;
2) дополнительные операции вычислительного назначения;
3 ) логические операции;
4 ) операции обращения к внешним устройствам;
5 ) операции над командами (команды переадресац и и);
6) операции передачи управления.
1. Основные арифметические операции. К основным а р и ф м е тическим операциям относятся операции сложения, вычитания умнож ения и деления. При этом команды имеют запись:
1. С л о ж е н и е ( + ) . Команда
5 2 П Р И Н Ц И П Ы П Р О Г Р А М М Н О Г О У П Р А В Л Е Н И Я НА Ц И Ф Р О В Ы Х М А Ш И Н А Х [ г л . II
+
аР т
означает «сложить число, номер которого а ука зан в первом адресе ( М) , с числом, номер которого (3 указан во втором адресе ( І М ) , и результат направить в ячейку ЗУ , номер кото
рой 7 указан в третьем адресе (ІІІЛ )» . 2. В ы ч и т а н и е (— ). К оманда
— . а Р 7
Э Л Е М Е Н Т А Р Н Ы Е О П Е Р А Ц И И , В Ы П О Л Н Я Е М Ы Е Ц А М 53 означает «вычесть из числа, номер которого а указан в 1/1, число, номер которого (3 указан в I I / 1, результат н аправить в ячейку ЗУ , номер которой ч указан в I I 1/ 1».
В машинах с плаваю щ ей запятой перед сложением и вычи
танием чисел вы равниваю тся их порядки, р езул ьтат операции нормализуется и округляется.
3. У м н о ж е н и е ( X) . Команда
X а р 7
означает «умножить число, номер которого а у к а за н в 1/1, на число, номер которого {3 указан в II/1, и резул ьтат направить в ячейку ЗУ, номер которой 7 ука зан в I I 1/ 1».
4. Д е л е н и е (:). К оманда
а р 7
означает «раздели ть число, номер которого а у к а зан в 1/1, на число, номер которого (3 указан в 11/1, и результат направить в ячейку ЗУ, номер которой 7 ука зан в I I 1/ 1».
В операциях умножения и деления результаты вычислений округляются, а в маш инах с плавающей запятой еще и н орм а
лизуются. В некоторых маш инах п редусматривается выполне
ние операции умножения без округления результата, ум н ож е
ния с выводом удвоенного количества разря дов , а т а к ж е д ел е
ния с выводом остатка.
После выполнения любой команды рассм атриваем ой группы выполняется следую щ ая по номеру ком анда программы, т. е.
управление передается (посредством УУ) к следующей по но
меру команде.