Файл: Брага, В. В. Основы технологии машинной обработки статистической информации [учеб. пособие].pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 17.10.2024
Просмотров: 129
Скачиваний: 0
ная машинная программа переносится на перфокарты или перфо ленты, вводится в запоминающее устройство ЭВМ и отлаживается. Только после этого можно приступать к решению конкретной за дачи на ЭВМ.
Составление машинных программ называется программирова нием. Эту работу выполняют программисты. Имеются три группы языков, на которых можно написать программы для ЭВМ.
1.Машинные языки (системы команд конкретной модели ЭВМ).
Программа на машинном язьже пригодна, как правило, для одной модели ЭВМ (или ряда совместимых машин 1 ) . В случае необ ходимости решения данной задачи на несовместимых моделях ЭВМ надо составлять две машинные программы на разных машинных < языках. При этом методе программирования на каждую опера цию, выполняемую машиной, создается отдельная команда. Иначе этот метод называется «ручным» программированием. Ручное про граммирование — очень трудоемкая работа, средняя скорость со ставления программы составляет 3—5 команд в час. Не исключена возможность появления большого числа ошибок. Составление про грамм на машинном языке требует много машинного времени при отладке.
2.Универсальные языки программирования. В этом случае ма шинная программа пишется на алгоритмическом языке типа АЛГОЛ,. ФОРТРАН, КОБОЛ и др. Программа, написанная на ал горитмическом языке, пригодна с некоторыми изменениями для
любой модели ЭВМ, имеющей транслятор с данного языка.
3. Машинно-ориентированные языки. Они создаются для како го-либо типа машины. Например, для машины типа «Минск» соз даны языки символического кодирования (ЯСК), автокод инженера (АКИ).
Машинный язык рассматривается на примере машинного кода
ЭВМ |
«Минск-22». Универсальный язык — на примере алгоритми |
|
ческого языка КОБОЛ, машинно-ориентированный |
язык — на при |
|
мере |
языка символического кодирования (ЯСК). |
Второй и тре |
тий примеры показывают методы автоматизации |
программирова |
|
ния. |
|
|
В настоящее время намечается тенденция к автоматизации про граммирования. Например, для ЭВМ «Минск-32» не предусмотре но программирование на машинном языке. В основе автоматиза ции программирования лежит программирование на машинном языке. Выполнение программ, записанных любым способом, про изводится в конечном счете в ЭВМ всегда на машинном языке. Поэтому, чтобы лучше понять логику выполнения машиной раз личных операций, рассмотрим вначале методы составления про грамм на машинном языке для ЭВМ «Минск-22».
1 Совместимые ЭВМ |
могут |
работать |
по одним и тем же |
программам, |
но |
только по восходящей |
линии. |
К ним |
относятся, например, |
«Минск-22М» |
и |
«Минск-32». |
|
|
|
|
|
40
Электронная вычислительная машина работает по заранее со ставленной программе, которая представляет собой совокупность команд, определяющих последовательность выполнения машиной всех операций, необходимых для получения требуемых результа тов. Команда —- это условный цифровой код, который определяет порядок выполнения машиной отдельной операции. Одна коман да обычно обеспечивает выполнение только одной операции. Раз личные коды команд вырабатывают в машине комбинации управ ляющих сигналов, которые обеспечивают выполнение именно дан ной операции.
Вид, структура и характеристика команд точно определены для каждого типа ЭВМ. Полный набор таких команд данной ма шины составляет систему команд, или машинный язык данного типа ЭВМ. Последовательность таких команд, с помощью которых на машине решается задача, представляет программу. Длина про граммы может быть различной, и зависит, как правило, от слож ности задачи. Для каждой задачи составляется своя машинная программа. Если одна и та же задача решается на ЭВМ разных типов, для каждого типа машины составляется своя программа.
Программист должен стремиться составить программу с наи
меньшим числом |
команд, |
чтобы |
сократить время на |
вычисление. |
В программе |
одни и те же команды могут повторяться сколько |
|||
угодно раз. Все команды |
машины |
можно разделить на |
следующие |
основные группы:
1. Команды арифметических операций. К этой группе относятся все команды основных арифметических операций (сложение, вычи тание, умножение, деление). При помощи этих команд производятся основные преобразования над статистическими показателями: сум
мирование сводных |
итогов, |
вычисление |
процентов |
выполнения |
|
плана, |
темпов роста |
и т. д. |
|
|
|
2. Команды логических |
операций. Эту |
группу составляют ко |
|||
манды |
операций преобразования, сдвигов, |
сравнений |
и пересыл |
ки кодов. При помощи логических операций можно сравнить два числа, выполнить различные преобразования с числом, находятщимся в какой-либо ячейке ЗУ, например сдвинуть его вправо или
влево, выделить из числа требуемые разряды, присвоить знак ка кого-то числа, переслать число с одного места в другое и др. Логи ческие операции широко применяются при решении статистических задач: при сортировке информации в машине, при сравнении раз личных показателей и т. д.
3. Команды операций управления. Это команды операций ус ловной и безусловной передачи управления, которые используются при необходимости изменить естественный, т. е. последователь
ный, |
порядок выполнения команд и при обращении к стандарт |
ным |
подпрограммам. |
4. |
Команды, обращения к внешним устройствам. Эти команды |
позволяют вводить в память машины данные с различных машин ных носителей (перфокарт, перфолент), выводить результаты вы-
41
числений на различные устройства (алфавитно-цифровое печата ющее устройство, перфокарты, перфоленты и др.). а также обра щаться к данным, записанным во .внешней памяти (на магнитных лентах и магнитных дисках).
Код |
каждой команды подразделяется на несколько групп, на |
||
пример |
КОП НИ |
а2 |
Одна из них называется кодом |
операции (КОП), другая хранит номер индексной ячейки (НИ) и носит вспомогательный характер, определяя при необходимости изменения кода команды перед исполнением. Остальные группы на зываются адресами (ai, а2—адресная часть команды); они ука зывают, откуда взять числа (из каких номеров ячеек памяти), над которыми выполняется операция, и номер ячейки, куда направить результат.
Электронные вычислительные машины могут быть одно-, двухили трехадресные. Код команды одноадресной машины содержит
код операции и один адрес к о п . Это значит, что в выпол нении одной команды участвуют числа только из одной ячейки па
мяти (ЭВМ серии |
«Урал», БЭСМ-6). Код команды |
двухадресной |
машины содержит |
код операции и два адреса: к о п |
01 а2 , т. е. |
в выполнении одной команды участвует содержимое сразу двух ячеек (ЭВМ серии «Минск», хотя в ЭВМ «Минск-32» есть и одно адресные команды). Для трехадресной машины код команды со-
держит код операции и три адреса: | J\U1к о п11 а\ | а2 | ааз |, в выпол нении одной команды участвуют одновременно три ячейки (ЭВМ
серии М-220, БЭСМ-3, БЭСМ-4).
Рассмотрим некоторые особенности программирования на ма шинах с различным числом адресов. Предположим, надо умно жить содержимое ячейки ai на содержимое ячейки аг и результат поместить в ячейку а3 .
На одноадресной машине необходимо выполнить следующие
команды: |
|
|
|
1) |
число из ячейки а\ |
поместить в АУ (ai->• АУ); |
|
2) |
умножить число а\, |
находящееся |
в АУ, на содержимое ячей |
ки а2 |
(ai X иг) ; |
|
(öi X # 2 Я з ) • |
3) |
записать результаты в ячейку аз |
На двухадресной машине эта же операция производится по сле
дующим командам: |
|
|
|
||
1) число, находящееся в ячейке <Х\, умножить на |
число, нахо |
||||
дящееся в ячейке |
а2; результат оставить |
в АУ (ai X |
« 2 |
*"АУ); |
|
2) результат, полученный в АУ, записать в ячейку а3 |
(АУ-*-а3 ). |
||||
На трехадресной машине эта операция выполняется за одну |
|||||
команду, которая обеспечивает умножение |
чисел, расположенных в |
||||
ячейках а\ |
и а2, |
и запись результата в |
ячейку аз (а\ |
X # 2 - * - # з ) . |
|
Из примера |
видно, что одни и те же действия на машинах с раз- |
42
личным количеством адресов выполняются различным числом ко манд.
Код операции для каждой машины имеет свое цифровое обо значение; например, в машинах серии «Минск» «+10» означает сложение, «+20» — вычитание, «+30» — умножение, «+40» —де ление, « + 0 1 » — сравнение, «—00» — остановку машины, «—30» — безусловный переход, «—20» — управление циклом, «—50» — ввод цифровой информации с перфоленты, «—60» — выдачу цифровых кодов на печать.
Адресная часть команды, как правило, содержит адреса (но мера) ячеек запоминающего устройства машины, где находятся числа, над которыми должна быть выполнена операция, или но мер ячейки, в которую надо послать результат. Числовые данные, над которыми выполняются операции, в команде не указываются.
При |
программировании вместо |
КОП ставят цифровой код опера |
ций, |
а вместо а\ и Ü 2 — номера |
ячеек, где хранятся числа, над ко |
торыми производится операция. |
|
Предварительно все команды в виде чисел записываются про граммистом на специальные бланки. В левой части бланка циф рами записывается номер ячейки ОЗУ, куда помещается команда, и код команды, а в правой программист дает условные пояснения. Приведем пример записи нескольких команд для ЭВМ «Минск-22» на стандартном бланке:
|
|
Код команды |
|
|
|
|
|
|
Номер |
знак |
код |
ни |
|
|
|
Пояснения |
|
ячейки |
операции |
|
|
|
|
|
||
команды |
|
|
|
|
|
|
|
|
0100 |
+ |
10 |
00 |
0143 |
0125 |
|
|
|
0101 |
4- |
21 |
00 |
0250 |
0007 |
Вычесть |
из числа |
в ячейке |
|
|
|
|
|
|
0250 число в ячейке 0007 |
||
|
|
|
|
|
|
Результат |
оставить |
в АУ |
Первая запись означает, что в ячейке с номером 0100 в памяти машины хранится команда, выполнение которой позволит сложить (код операции сложения «+10») число, находящееся в ячейке 0143, с числом в ячейке 0125 и результат записать в ячейку 0125. Не
обходимо четко |
представлять себе, |
что код «+1 0 00 0143 |
0125» |
означает не команду сложения чисел |
143 и 125, а команду |
сложе |
|
ния некоторых |
чисел, хранящихся в |
ячейках с этими номерами. |
Итак, в левой части бланка цифрами записывается номер ячейки
оперативного запоминающего устройства |
(ОЗУ), куда |
помещается |
|
команда, и код команды, а в правой — программист |
дает поясне |
||
ния, чтобы облегчить отладку, внесение |
изменений |
в |
программу |
и т. п. |
|
|
|
Общее количество команд большинства универсальных ЭВМ достаточно велико (для «Минск-22» — более 100 команд). Для об легчения запоминания кода определенных операций образуют груп-
43