• Ешқандай Нәтиже Табылған Жоқ

Устройство программного управления. Устройство про

грамм ного управления машины имеет регистр, в котором поме­

щ аю тся последовательно один за другим управляю щ ие коды — ком ан ды выполняемой программы.

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

шении зад ач и ) представляет собой программ у задачи.

В программе отмечается н ачальная ком анда, с которой д олж н а быть начата работа программы.

Помимо ком анд вычислительного назначения, т. с. команд, связанны х с выработкой посредством А У кодов-значений ф ун к­

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

вательность выполнения операций.

Действие устройства управления в каж д ы й данный момент времени определяется тем, к а к а я команда находится в его

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».

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

лизуются. В некоторых маш инах п редусматривается выполне­

ние операции умножения без округления результата, ум н ож е­

ния с выводом удвоенного количества разря дов , а т а к ж е д ел е­

ния с выводом остатка.

После выполнения любой команды рассм атриваем ой группы выполняется следую щ ая по номеру ком анда программы, т. е.

управление передается (посредством УУ) к следующей по но­

меру команде.