
книги из ГПНТБ / Сафонов, С. Ф. Вычислительная техника в инженерных и экономических расчетах (конспект лекций)
.pdfДостоинство формы — быстрота выполнения операций. Ско рость выполнения операций (кроме операций умножения и де ления) такая же, как и при обработке чисел в форме с фиксиро ванной запятой.
В ЭВМ «Наири» числа могут быть записаны в форме «длин ных». Длинное число записывается в двух последовательных ячейках, причем целая часть числа записывается в предыдущей, а дробная — в последующей ячейке.
Число в форме длинного изобразится
as?- ■235 + а 34 • 234 |
+ а0 • 2n-j-a3i ■2- 34 + |
-•+ оза • г - 33'.-!-... + «1 • 2 -‘,
где аз5 — знаковый разряд, O34 — разряд переполнения, а; — раз ряды дробной части (в ячейке с дробной частью 36 и 35 разря ды не используются). Отрицательные числа записываются с по мощью модифицированного дополнительного кода. Например, отрицательное число 10,5 запишется в виде длинного числа во внутреннем коде
целая часть/числа |
дробная часть числа |
|||
111 |
10110 |
001000 |
0 |
|
Максимальное число в форме длинного, |
которое еще прини |
|||
мает машина, равно величине 10й—1. |
- |
|
1 |
Достоинство формы длинного числа — возможность легко, программным путем, отделять целую и дробную части числа. Это всегда легко сделать, потому что'целая и дробная части длинно го числа записываются в отдельных ячейках.
В ЭВМ «Наири» числа из одной формы в другую можно пере водить с помощью специальных операций.
Система операций. Цифровая электронная машина может вы полнять конечное число различных операций. Совокупность опе раций, выполняемых машиной, называется системой операций данной машины.
Каждой операции присваивается определенный номер, напи санный в той системе счисления, в которой работает машина. Этот номер называется внутренним кодом операции. Системы one-- раций многих ЭВМ являются полными, т. е. такими, что из них возможно составлять любые правила преобразования буквенной или цифровой информации. Из этого немедленно вытекает свой ство универсальности ЭВМ — возможность использования их для решения любых задач.
В системе ЭВМ «Наири» операции подразделяются на ма шинные и псевдооперации.
Машинная операция выполняется электронными схемами ма шины и обозначается при написании программ одной начальной
20 |
. |
буквой общепринятого названия операции. Например, для обо значения операции сложения используется буква С, для умноже
ния — буква У и т. п. |
1 |
Псевдооперация — состоит из набора |
машинных операций и |
является стандартным набором этих операций, используемых мно гократно для вычисления таких, например, часто встречающихся выражений, как ]/, sin, cos, tg, exp, Ig , In .
Стандартные наборы машинных операций (псевдоопераций) обозначаются в командах программ наподобие машинной опера ции с тем различием, что в обозначении этого набора испдльзуется не одна буква, а две. Например, обозначение логарифмирова ния (натурального)—In или вычисления корня квадратного—КП.
Такие наборы псевдоопераций хранятся в ДЗУ, и если ЭВМ находит в программах код псевдооперации, то она всегда по этому коду обращается к своей долговременной памяти и выполняет по соответствующей СП ту или иную псевдооперацшо.
Поскольку псевдооперацкя составлена из машинных операций, то она всегда работает медленнее машинных операций.
Команда. Это часть программы, выполняющая одно (приня тое неделимым) действие, например, по сложению, умножению, сравнению и т. п. различных чисел. Команда содержит в«себе обо значение операции и адресов,ячеек, в которых содержится обра батываемая информация:
С 100 Н 30
Это команда сложения двух чисел из 100 и 300 ячеек ОЗУ. Здесь буква С обозначает операцию, буква Н — модификацию, числа 100 и 30 — адреса обрабатываемой информации.
В полном коде команды различают две основные части — ко довую и адресную. В кодовой части указывается номер (код) тон операции, которую должна выполнить машина на данном шаге вычислений (при прохождении данной команды). В команде мо гут быть указаны:
а) адреса чисел, над которыми должна быть выполнена опе рация, или номера ячеек, откуда должны быть взяты числа для их обработки операцией, а также адрес ячейки, куда должен быть послан результат вычисления;
б) условия, при которых команда выполняется или пропуска' ется;
в) признак изменения адреса (адресов) или других кодов команды;
г) модификация команды — вариации исполнения команды. Программа вместе с исходным числовым материалом через считывающее устройство (в «Наири» с помощью телетайпа) вво дится в ОЗУ. Каждой команде, из которых состоит программа,
присваивается номер ячейки ОЗУ.
Работа ЭВМ заключается в выполнении отдельных команд в последовательности, предусмотренной программой.
21
Вобобщенном виде команду «Наири» можно обозначить так:
аАх %А2гтФ,
где а — код машинной операции или псевдооперации; А\ — первый адрес обрабатываемой информации; 0 — модификация; Л2— второй адрес обрабатываемой информации;
z —условие, при выполнении которого выполняется команда; при невыполнении условия команда с этим условием про пускается;
т — адрес ячейки ОЗУ, с содержимым которой условие све ряется;
ф— признак формирования команды.
Втаком виде для ЭВМ «Наири» команды считаются записан ными во внешнем коде, т. е в таком коде, в котором производится запись на бумаге при составлении программ и в котором програм мы печатаются на телетайпе при их вводе в машину.
Рассмотрим в качестве примера конкретную команду «Наи ри», записанную во внешнем коде,
С23 Я 30
Первая буква, с которой начинается команда, обозначает машин ную операцию сложения. Цифра 23, стоящая в команде вслед за обозначением операции, — это первый адрес обрабатываемой ин формации, цифра 30 — второй адрес. Буква Я — обозначает мо дификацию команды — в данном случае модификацию ^накопи тель» (см. ниже).
Команда выполняет такое действие: она производит сложение двух чисел, взятых машиной из 23 и 30 ячеек ОЗУ, а результат от сылает после выполнения действия в ячейку 30. После выполне ния действия результат всегда посылается машиной во второй ад рес команды. 1
ЭВМ «Наири»—двухадресная машина, так как в ее командах наибольшее количество адресов обрабатываемой информации равно двум.
Кроме одноадресных и двухадресных машин, существуют еще трех-четырехадресные машиньц
Для быстрейшего овладения программированием следует об ратить внимание на то, что во внутреннем коде все составляющие команду коды (операция, адреса, условие, модификация, признак формирования) изображаются двоичными наборами в форме це лых чисел.
Например, в команде Я 32 Я 15 ее элементы будут числа в форме целых, расположенные в разных частях разрядной сетки.
В машине «Наири» широко используются команды с условия ми—команды, срабатывающие при наличии каких-то числовых условий. Покажем, как записываются и выполняются команды с условиями, например, Я 20 Я 11 — 15.
22
Переслать содержимое 20 ячейки в 11 при условии, если б 15 ячейке содержится ноль. Команда с таким условием выполняется при выполнении условия (всегда на ноль), поставленного после второго адреса — в данном примере условия «= 15». Команда вы полняется так: если в момент исполнения команды в ячейке, по
^ |
Признак ф<:рмирс£ониЯ./igMyw// |
|
л.'£>1ц 5икац и а a nepai/uu / |
п е р в ы й а ф е с А , |
&>трои а д р ес /|? |
Вв Qв г?в / 0 0 00 0 0 п 00 в
--- V--'4-----v------ 'Ч-L
—!
Г- |
1 |
/ о в 0 №<7* О,) /}а о |
/ / / |
>V |
т |
|
це л о е целое число 5,
чи с л о у>е71Г>илолсе+*/<ос
лн о л £ с 53 по27разря'д_
ц е л о е <stjesw ж , |
г/'•.осе vc/c./fo я , |
p ty c/ю л о ^ с е н я е е |
р ‘-у<"• |
с 2 5 по /2 р а з р я д |
с / // > о / р а з р я д |
Рис. 5. Запись команды П 32 Н 15 во внутренней форме.
которой проверяется условие, находится то, что изооражаегся в команде символом условия, то команда выполняется. В противном случае команда пропускается, и действие передается следующей команде.
Б 5ВМ «Напри» имеется восемь условий, |
используемых в |
командах. Перечислим их: |„=0. 2 Ф 0. 3.>0. |
4 .^ 0 . э.<0. 6 |
< 0 . 7.! 8.оо |
|
Условия «!» и «.ос» выполняются особо. Если в конце команды поставлено условие «!», то это всегда означает, что команда с та ким условием выполняется только в том случае, если па пульте сигнализации нажата клавиша «Вариант». С помощью условия «!» передачами'управления, например, можно управлять с пульта сигнализации машины, что часто необходимо при откладках про грамм — процессов, когда составленная на бумаге программа впервые выполняется машиной. При первых, таких прохождениях программ почти всегда в них находятся ошибки. Дополнительные команды печати, поставленные специально для отладки програм мы,— команды с условиями «!» — могут выдавать по желанию оператора в нужный момент работы отлаживаемой программы требуемые величины, по которым морю судить о характере ра боты программы в тот или иной момент времени. Условие «!» можно использовать и для управления прохождением программ по заранее предусмотренному варианту.
Условие «оо» используется для анализа переполнения разряд ной сетки машины, т. е. для контроля правильности вычислений при вероятности появления в вычислении величин, превышающих диапазон представления чисел в машине. Команда с условием «оо» выполняется только в том случае, если содержимое 35-го и Зб-го разрядов ячейки одинаково. Последнее, как говорилось,
23
всегда случается в том случае, если нет переполнения разрядной сетки машины. Используя команды с условием «со», можно ана лизировать переполнение разрядной сетки машины. При появле нии переполнения можно отправлять машину, например, в прог рамму изменения масштабов задачи с печатью новых масштабов и автоматическим возвращением в начало той части программы, в которой при предыдущих масштабах наблюдалось переполнение разрядной сетки машины.
Команды с условиями для ЭВМ «Наири» могут выполняться по анализу содержимого любой ячейки ОЗУ, если только ее но мер меньше или равен 15 (на размещение большого номера во внутреннем коде команды не хватает разрядов).
Для всех команд с условиями:
второй адрес в командах с условиями не может превышать числа 15 (как и адрес, по которому проверяется условие);
не существует команд с условиями в модификации К (о мбдификации К см. ниже).
Если после знака условия в команде не поставлен номер ячей ки, то это всегда означает проверку условия по фиксированной ячейке ОЗУ а2.
Часто при программировании требуется передавать-управле ние, в ту или иную часть программы в зависимости от промежу точного результата вычислений. В арифметических операциях про. межуточный результат образуется в ячейке а2, т. е. перед выпол нением какой-то команды результат выполненной перед этим ко манды (арифметической) всегда находится в ячейке а& Так что если требуется передавать управление в какую-то часть програм мы в зависимости от промежуточного результата вычислений, то для этого можно использовать команду с условием по содержи мому ячейки а2.
Итак, если в команде с условием после знака условия не про ставлен номер ячейки, то условие выполнится (или не выполнит ся) по анализу содержимого ячейки а2. Пример:
П 20 Н 11 =
Переслать содержимое 20 ячейки в 11 ячейку при условии, ес ли в а2 находится (в момент выполнения команды с условием) число, равное нулю.
Команды с условиями позволяют реализовать в программах различного рода разветвления. Именно это и делает программы «творческими».
Скоро мы приступим к непосредственному изучению способов составления программ, но перед этим требуется еще рассмотреть внутренние коды команд — ведь это, пожалуй, одно из главных понятий языка ручного составления программ — языка РП.
Записаны ли внутри машины число или какая-то команда— они обязательно размещаются в 36-разрядной ячейке устройства
24
\
машины в виде двоичного кода. Такая двоичная запись представ ляет собой внутренний код команды или числа.
В языке ручного программирования некоторых ЭВМ имеется своеобразие в исполнении одних и тех же команд, или, иначе го воря, команды в этих машинах могут .исполняться в различных модификациях. Рассмотрим модификации-команд ЭВМ «Напри». Таких кодов команд или внутренних форм представления команд (внутренних кодов) в ЭВМ «Наири» семь.
Первая форма называется модификация «накопитель» (нако питель информации). Накопители информации — это различные внутренние н внешние устройства памяти. «Наири» не имеет внеш них устройств, памяти, это, конечно, снижает ее возможности. Запишем во внешнем коде в этой модификации какую-либо команду. Например,
С 37 Н 29
Буква С обозначает операцию сложения чисел в форме целых или в форме с фиксированной запятой. Буква, проставленная в середине команды, обозначает модификацию. В модификации «накопитель» информация для ее обработки выбирается из пер вого и второго адресов.
Команда, С 37 Я 29 складывает числа из 37 и 29 ячеек ОЗУ, а результат отсылается в 29 ячейку (вспомните, для арифметиче ских операций — всегда во второй адрес команды). Заметим, что результат отошлется и в фиксированную ячейку аг. В .модифика ции «накопитель» оба числа для обработки их операцией берутся из указанных в команде адресов. Решим такую задачу. Сложить два числа, размещенные в форме с плавающей запятой в 100 и 101 ячейках ОЗУ,'результат отправить в !1 ячейку, а исходное число из 101 ячейки сохранить.
29 /7 101 Я 11 — передача одного из слагаемых в 11 ячейку, 30 СП 100 И 11 — сложение чисел, представленных'в форме с
31 Я |
|
плавающей запятой. |
|
|
||
|
— останов машины. |
|
|
форме (в каком |
||
Рассмотрим, в какой двоичной внутренней |
|
|||||
внутреннем коде) |
записываются команды в устройствах машины |
|||||
|
. |
|
фЭесб размещается?призис?* <рормаро/с?*?а& |
|||
|
|
Н о л *< у ы д б /_____ / - п р и з н а к е е с - m b , |
О - H e m / с г н .н и о Н е ) |
|||
ХОд |
хо д |
/ |
А -первы й адрес |
А, |
ои afdpec |
|
модификации |
операции / |
' , |
/ |
|
/ |
0 0 о
L
/ / п р и з н а н п с е б д о о п е р а ц и и J
Рис. 6. Разбиение разрядной сетки ЭВМ «Наири» для записи команд в модификации «накопитель»
25
вмодификации «накопитель». Эта форма, определенная конструк торами машины, представлена на рис. 6.
Вмодификации «накопитель» машина не может прочесть пер вый адрес команды сразу, потому что машина распознает числа
вформе целых (команды как раз и содержат коды в виде чисел в форме целых), начиная всегда с первого (самого младшего) раз ряда. А первый адрес указанной модификации расположен с 25-
го по 12-й разряды включительно. Читая сразу же первый адрес из команды в модификации Н, машина восприняла бы его как двоичное число, размещенное с 25 по первый разряд, т. е. воспри няла бы его как какое-то большое число, ни в коем случае не рап ное первому адресу. Для верного чтения первого адреса машина сначала выделяет код первого адреса. Потом первый адрес сме щается машиной туда, откуда машина может прочесть его неис каженным, т. е. сдвигается вправо на 11 разрядов.
Вторая форма — модификация <гкороткий параметр». Напи шем во внешнем коде команду в этой модификации : С1К1011.
Сложить число 1 в форме целого с содержимым 1011 ячейки. Результат автоматически запишется в 1011 ячейке, а также в ячейке а2.
Следует всегда иметь в виду, что в модификации К (также как и в модификациях Я, Л, Пу, Лу, см. ниже) первый адрес есть собственно не адрес, а уже само обрабатываемое операцией число, и притом в форме целого. Для модификации Н и Н„ .(см. ниже) первый адрес есть адрес памяти, откуда берется для обра ботки одно из чисел.
Для модификации К разрядная сетка разбивается так, как по казано на рис. 7.
ко^ |
- |
w |
/ |
МОиитрс/АСУЦиС.- |
|
/ призмсг/с tjbopAfupo6atfuJ?
Рис. 7. Разбиение разрядной сетки ЭВМ «Напри» для записи команд в модификации «короткий параметр»
Так же, к^к и в модификации Н, для второго адреса модифика ции К отведены 1—11 разряды, а для первого адреса — 12—25 разряды. Код модификации — 001. Он расположен — как и в ос тальных модификациях — в трех старших разрядах ячейки.
По выполнению модификации К напоминает выполнение мо дификации П (см. ниже).
В модификации К одно из обрабатываемых (операций) чисел есть сам первый адрес, второе число берется из второго адреса.
26
У команды в модификации К второй адрес может быть любым адресом ОЗУ.
Итак, модификация К предназначена для команд с небольши ми первы.ми адресами и с большими вторыми адресами.
Третья форма —модификация «правый параметр». Пример команды в этой модификации:
С 32 Я 15
Число 32 в форме целого сложится с содержимым 15 ячейки. Ре зультат автоматически запишется в ячейку 15, а также в ячейку
й2-
Если командой складываются числа в форме целых,-тб число
в15 ячейке должно быть числом в форме целого.
Вмодификации Я одно из обрабатываемых операций чисел есть сам первый адрес, второе число берется из второго адреса.
Можно сказать, что одно из обрабатываемых чисел в этой мо дификации берется из кода команды.
Вот как разбивается разрядная сетка для модификации Я
(рис. 8). |
|
' |
мсдафалаааа дюрации |
Ариер&ый адрес |
А .'баорсд адрес |
0 / 0 |
• |
|
/jopc/jsscrsc
■{/JpUJHC/X
лсеЁдоолёрацииу
Рис. 8. Разбиение разрядной сетки ЭВМ «Напри» для записи команд в модификации «правый параметр»
Сравните, так же как и для модификации К только для второ го адреса отведены разряды с 1-го по 7-й, а для первого — с 8-го по 25-й. Обозначение модификации во внутреннем коде — 010.
В модификации Я второй адрес не может быть большим чис ла 127 — ведь в отведенных семи разрядах для его изображения и не запишешь двоичным кодом большего числа. Действительно
127 = 11111112
Зато первый адрес может в этой модификации быть большим в отличие от модификации Я или К. Достоинство по первому ад ресу в модификации Я порождено недостатком по второму ад
ресу.
Начинающие программисты часто забывают об этом и пыта ются иногда вводить^-в машину с телетайпа информацию такого, например, вида: С 11 Я 404. В таких случаях машина помогает программисту, тут же печатая признак ошибки — символ «*», и ожидает правильного ввода команды.,
Четвертая форма — модификация «левый параметр». Пока-
27
жем ее использование на одном из примеров. Образуем число в форме целого в 11 ячейке командой в модификации Л, причем число (двоичное) 2’8, содержащее единственную единицу в 19 раз ряде. Посмотрите на внутреннюю форму данной команды (рис. 9): Во внешнем же коде команда запишется П \ Л \ \.
9 |
КМ |
А |
loll |
1ФМо|Ф 1Ф М Ф1Ф М Ф1Ф 1Ф !оП Ф № |оН N |
|
Рис. 9. |
Запись |
команды Я 1 Л 11 во внутренней |
|
|
форме |
Вмодификации Л перед операцией первый адрес выделяется
исдвигается влево на одиннадцать разрядов, и лишь после этого
полученное таким образом число обрабатывается операцией. В модификации Л одно из обрабатываемых чисел есть сам первый адрес, но перед выполнением операции сдвинутый на одиннадцать разрядов влево (увеличенный на 2й). Второе число
берется из второго адреса.
Пятая форма—«накопитель с условием», с которой начина ется представление команд с условиями.
Вот команда в этой модификации:
КП 12 //ИуИО.
Извлечь квадратней корень из числа в форме с плавающей запятой из 12 ячейки при условии, если только содержимое 10 ячейки не равно нулю. В противном случае команда пропускает ся, и управление передается следующей за ней (КП —псевдо операция).
Использование условий в командах делает возможным вы полнение той или иной команды в зависимости от того, что про изошло в вычислениях перед командой с усл'овием.
Вот как разбивается разрядная сетка машиньцдля модифика ции Н (рис. 10):
Для различия машиной в трех старших разрядах внутреннего кода модификации Ну указывается двоичный набор 100.
В модификации Ну оба обрабатываемых операцией числа бе
рутся из адресов |
(первого и второго). |
Команда в модификации |
||
О |
КОП. |
th |
m |
Z « Яг |
г-'—у.—---- *----— |
— -----...........--у—'— |
v*-^—• |
||
f 00 |
|
|
! |
|
m -номерячейки,покото рой проберяется ус/юдие
г-уй1о8ие{?г)>,<р£11т.у
Рис. 10. Разбиение разрядной сетки ЭВМ «Напри» для записи команд в модификации Ну
28
Ну выполняется, если выполнено условие; в противном случае команда пропускается.
Шестая форма — модификация «правый параметр с усло вием»- В этой модификации команда может иметь такой вид:
/7 1/7 11^=
Послать целое число 1 в ячейку 11 при условии; если только в ячейке а2 не содержится ноль. Напомним, что в ячейке а2 нахо дится результат предыдущего действия. Вспомните, если после знака условия не указан номер ячейки, по которой проверяется условие, то это означает проверку условия по содержимому ячей ки а2.
Для модификации П у в машине отведен формат внутреннего кода (рис. 11).
/кодОперации
/код |
/ |
Л ризиок |
модификации |
/ |
формирования |
Рис. И. Разбиение разрядной сетки ЭВМ «Напри» для записи команд в модификации Пу
В модификации Пу одно из обрабатываемых чисел берется равным первому адресу, второе число берется из второго адреса. Команда в модификации /7У выполняется, если выполнено усло вие, в противном случае команда пропускается.
Пример. Вычислить функцию y = s \ n x гари условии, если в 11 ячейке в момент вычисления должно находиться число меньше нуля, в 12 ячейке число больше нуля, а в 13 ячейке число равно нулю. Результат записать в 14 ячейку и выдать на печать с пятью
знаками после запятой.
Составляем программу. В ЭВМ «Наири» операция вычисле ния функции sin х исполняется только для чисел в форме с плава ющей запятой, поэтому и выберем эту* форму для представления
чисел.
Разместим аргумент в форме с плавающей запятой в произ вольно выбранной 29 ячейке. Программу начнем тоже с произ вольно выбранной ячейки 100. (Перечень ячеек ОЗУ, которые мо гут быть заняты при использовании СП и псевдоопераций (при ведены в табл. III).
100 И 106 11— передача управления в 106 ячейку, если в 11 ячейке число не меньше нуля или равно нулю; 101 Я 106 775» 12 —• передача управления в 106 ячейку, если в 12 ячейке число не больше нуля или равно нулю;
29.