Файл: Бакиров Р.О. Применение современных электронных вычислительных машин при расчете и проектировании конструкций инженерных сооружений учебное пособие.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 05.04.2024
Просмотров: 101
Скачиваний: 0
§ 2. ЭЛЕМЕНТЫ ПРОГРАММИРОВАНИЯ
ОСНОВНЫЕ КОМАНДЫ МАШИНЫ
Внастоящее время выпускается значительное число электрон ных цифровых вычислительных машин. Количество и возможности: команд различных машин неодинаковы. Однако по назначению можно выделить следующие характерные группы команд: ариф метические, управления, логические, печати, обмена информацией.
Всвязи с тем, что общие принципы программирования не за висят от конкретного типа машины, вопросы программирования! ниже разбираются для условной одноадресной машины, которую в дальнейшем будем называть ЭЦВМ-У.
Для удобства изложения введем несколько обозначений:
0001), 0002) — восьмеричные числа — номера ячеек памяти для размещения программы;
< С > — ячейка, отведенная для хранения величийы /;
(s) — содержимое сумматора (выше указывалось, что одноад ресная машина все действия производит через сумматор);
(0) — код операции, например ( + ) и (-» ), обозначает содер жание действия, предусмотренного программой ( « + » сложение,
«-> » — безусловная передача управления и т. д.);
(s)= (s) + < / > — содержание сумматора складывается с ве
личиной I, и сумма записывается в сумматор;
(s) = (s) + (n) — содержимое сумматора складывается с содер жимым ячейки номер п, и сумма записывается в сумматор.
Условимся, что все команды машины, за исключением операций управления, имеют стандартную передачу управления.
Арифметические операции
К арифметическим относятся операции, производящие сложе ние, вычитание, умножение и деление. При выполнении арифмети ческих операций в машине обычно вырабатываются управляющие сигналы ср и со. В некоторых машинах при делении на нуль сигнал Ф не вырабатывается, но на панели загорается специальная лам почка, и машина останавливается.
22
Арифметические операции имеют коды: |
( + ) — |
сложение; |
(—) — вычитание, (X ) — умножение, ( :) |
— деление. |
< / > . |
Запись команд производится в виде ( + ) |
(п) или ( + ) |
В частности, приведенные выше команды означают, что содер жимое сумматора складывается с содержимым ячейки номер п или
содержимым ячейки для хранения величины I. |
|
приведена |
в |
||||||||||
Система |
арифметических |
операций |
ЭЦВМ-У |
||||||||||
табл. |
3. |
|
|
|
|
|
|
|
|
Т а б л и ц а |
3 |
||
|
|
|
|
|
|
|
|
|
|
||||
Опе |
Код |
Наименова |
Вид |
|
Содержимое |
Условия образо |
|||||||
ние опера |
|
вания сигналов |
|||||||||||
рации операции |
ции |
команды |
сумматора |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ш = |
1 |
<р = |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
||
й> |
|
|
|
|
|
|
|
|
|
|
|
р > |
N |
Sьа |
+ |
Сложение |
( + > < / > |
( S ) = |
( . * ) + < / > |
( « ) < 0 |
|||||||
о |
|
|
|
|
|
|
|
|
|
|
|||
0) |
|
|
|
|
|
|
|
|
|
|
|
|
|
3* |
— |
Вычитание |
( - х |
/ |
> |
(«) = |
( s ) — |
< |
1 > |
( * ) < 0 |
р > |
N |
|
Я |
|||||||||||||
0> |
X |
Умножение |
(X ) |
< |
1 > |
( s ) = |
( s ) x |
< |
1 > |
(*) < |
0 |
р > |
N |
2 |
|||||||||||||
-е* |
|
|
|
|
|
|
|
|
|
|
|
|
|
Я |
|
Деление |
( : ) < / > |
(«) = |
(*): < |
t > |
(*) < |
0 |
Р > |
N |
|||
о. |
|
||||||||||||
< |
|
|
|
|
|
|
|
|
|
|
|
|
|
Из этой таблицы следует, что при принятых обозначениях ни чего запоминать не нужно, ибо вид команды соответствует обще известной математической символике.
Логические операции
Реальные машины обычно имеют целый набор логических опе раций: формирование чисел, присвоение знака числу, сдвиг числа на определенное число разрядов, сравнение чисел и т. д. Эти коман ды, весьма существенные для программиста, в связи с предназна чением пособия, здесь не рассматриваются. Из этой группы опера ций остановимся лишь на операции сравнения, приведенной в табл. 4.
|
|
|
|
|
Т а б л и ц а 4 |
||
Опе |
Код |
Наименова |
Вид |
Содержимое |
Условия |
образо |
|
ние опера |
вания сигналов |
||||||
рации операции |
ции |
команды |
сумматора |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
«0= |
1 |
ср = 1 |
Логи |
( ~ ) |
Сравнение |
( о < i > |
(5) = 0 при срав |
(*) + |
0 |
|
чес |
|
содержи |
|
нении |
|
|
|
кие |
|
мого сум |
|
(s) ФО при нес- |
|
|
|
|
|
матора и |
|
|
|
|
|
|
|
ячейки |
|
равнении |
|
|
|
|
|
адресной |
|
|
|
|
|
|
|
части |
|
|
|
|
|
23
Операции управления
Мы рассматриваем машину с последовательным порядком вы полнения команд, поэтому для разветвления вычислительного про цесса служат операции управления: безусловной и условной пере дачи управления, передачи управления с возвратом и останов (см. также § 1). Основные характеристики этих операций приведены в табл. 5.
|
|
|
|
|
Т а б л и ц а 5 |
|
Опе |
Код |
Наименование |
Вид команды |
Условия |
образования |
|
опе |
||||||
рации |
операции |
сигналов ш<р |
||||
рации |
|
|||||
|
(-*) |
Безусловная пе |
(->) (0125) |
Независимо |
от сигнала м уп-’ |
|
|
|
редача управ |
|
равление передается коман |
||
|
|
ления |
|
де 0125; сигнал — не выра |
||
|
|
|
|
батывается |
|
|
|
Условная |
пере |
|
|
|
|
( i ) |
дача |
управле |
( ¥Г > ) |
<0125) |
|
1 е н и я |
|
ния |
|
|
|
|
|
|
|
|
|
|
|
а |
|
|
|
|
|
|
со |
( « - - в |
Передача |
управ |
--s”) |
(сн) |
|
а. |
|
ления |
с |
возвра |
|
|
с |
|
том |
|
|
|
|
>> |
|
|
|
|
|
|
|
|
|
|
|
|
При ш = 0 — передача управ ления следующей команде, при ш = 1 — команде 0125; сигнал <р — Hte вырабатыва ется
Управление передается к стандартному блоку, начи нающемуся с ячейки „сн* последующим возвратом к с месту программы, откуда производилась эта передача
управления; сигналы ы и <р не вырабатываются
(Стоп) Останов |
(Стоп) (0000) Машина останавливается |
Вспомогательные операции
Вспомогательными будем называть операции пересылки, пере вода и печати, характеристика которых приведена в табл. 6.
24
О пе |
Код |
Наименова |
|
|
Содержимое |
|
ние опера |
Вид команды |
|||||
рации операции |
сумматора |
|||||
ции |
|
|
||||
|
|
|
|
|
||
|
(П) |
Пересылка |
(П) |
(0125) |
Пересылка |
|
|
|
числа |
|
|
числа из |
|
3 |
|
|
|
|
сумматора в |
|
|
|
|
|
ячейку 0125: |
||
V |
|
|
|
|
|
|
X |
|
|
|
|
0125 = (s) |
|
у |
|
|
|
|
|
|
О |
|
|
|
|
|
|
-а |
|
|
|
|
|
|
V |
(5) |
Вызов чис |
(S) |
(0125) |
Вызов числа |
|
о |
||||||
С |
|
ла |
|
|
из ячейки |
номер 0125 в сумматор
(s) = (0125)
Т а б л и ц а 6
Условия образо вания сигналов
и» = 1 |
9 = 1 |
(s) < 0 |
V |
|
(10-> 2) |
Перевод |
(10 -> 2) (s) |
Перевод со |
|
||
|
|
числа |
|
держимого |
|
||
|
|
|
|
сумматора |
|
|
|
ев |
|
|
|
из десятич |
|
||
а |
|
|
|
ной в двоич |
|
||
О |
|
|
|
|
|
|
|
о> |
|
|
|
ную систему |
|
||
с. |
|
|
|
|
|
|
|
|
(2 -*■ 10) |
” |
(2 -> 10) (s) |
Перевод |
— |
— |
|
|
|
|
|
(2 |
10) |
|
|
|
(Пщ) |
Печать чис |
(П,р) (s) |
Печать деся |
|
||
|
|
ла |
|
тичного чис |
|
||
|
|
|
|
ла, |
нахо |
в |
|
|
|
|
|
дящегося |
|
||
|
|
|
|
сумматоре |
|
||
X |
|
|
|
|
|
|
|
«в |
|
|
|
|
|
|
|
а1 |
(Пв) |
|
(П») (s) |
|
|
|
|
0> |
* |
Печать восьме |
|
||||
|
|
|
|
ричного чис |
|
||
|
|
|
|
ла (коман |
|
||
|
|
|
|
да), |
нахо |
в |
|
|
|
|
|
дящегося |
|
||
|
|
|
|
сумматоре |
|
ПРОСТЕЙШАЯ ПРОГРАММА
Дана четырехшарнирная прямоугольная обделка подземного сооружения, на которую действуют нагрузки от горного давления q и е (см. рис. 1). Максимальная величина изгибающего момента в верхнем ригеле определяется по формуле (1). Требуется соста вить программу однократного использования в предположении, что
25
исходные данные q, /, 8 находятся в памяти машины соответствен
но в ячейках < q > , <С1>, < 8> .
Используя принятые обозначения и рассмотренную выше систе му команд, для вычисления М по формуле (1) легко составить следующую простейшую программу 2.
П р о г р а м м а 2
№
команд
0001
0002
0003
Команды
V ч“■/« 152, |
Л |
( х ) < / >
(X) < 4 >
№
Пояснения команд Команды Пояснения
(s) = |
/ |
|
0004 |
( •) |
< |
8 > |
(s) = |
М |
(*) = |
г- |
0005 |
(П) |
< |
м > |
< М > |
= М |
|
( s ) = q i |
2 |
0006 |
(Стоп) |
0000 |
Останов |
В данном случае мы имеем следующие элементы описания за дачи: постановку (характеристика физической сущности, расчетная схема), математическую формулировку [формула ( 1)], исходные данные — (q, I, 8), выходной результат (величина М) и особое тре бование к программе (одноразового пользования, исходные данные находятся в памяти). Ввиду исключительной простоты задачи опи сание последовательности вычислений производить в данном слу чае не потребовалось.
Из элементов программирования в данном примере налицо лишь программирование в условных (содержательных) адресах, так как выбор численного метода и алгоритмизацию в данном слу чае производить не требуется.
РАЗВЕТВЛЯЮЩАЯСЯ ПРОГРАММА
Наличие в машине логических операций позволяет составлять программы, обеспечивающие разветвление вычислительного про цесса.
Пусть требуется построить разветвляющуюся программу для предыдущего примера при условии, что после вычисления макси мального момента по формуле ( 1) определяется напряжение в опасном сечении согласно выражению
где W — момент сопротивления |
элемента |
ригеля, определяемый |
по формуле |
№ |
|
W = |
(5) |
|
|
6 ; |
|
b, h — соответственно ширина и высота элемента.
26
Кроме того, следует предусмотреть сравнение расчетного и до пускаемого (для материала конструкции) напряжений согласно условию
а — [о] > 0 . |
(6) |
При выполнении этого условия необходимо выдать на печать единицу < 1> (признак того, что расчетное напряжение недопусти мо для материала конструкции) и остановить машину; в противо положном случае нужно напечатать а и остановить машину.
Принципиальное отличие описания рассматриваемой задачиот предыдущей заключается в том, что оно, во-первых, кроме рас четных формул, содержит логическое условие (6), во-вторых, кро ме математической формулировки, включает описание последова тельности вычислений, приводящее к конечному результату. Прав да, исключительная простота задачи позволила произвести лишь, словесное описание последовательности вычислений, хотя при ре шении практических задач это сравнительно редкое явление.
Перед программированием напомним читателю, что условная машина работает с числами в двоичной системе счисления, поэто му перед выдачей результата на печать необходимо перевести его
№
команд
0001
2
3
4
5
6
7
0010
1
2
Команды
(X ) < / >
(X ) < q >
( : ) < 8 >
(П) < М >
(S) < Ъ > (X ) < h > (X ) < h >
( :) < 6 >
(П) < w>
Пояснения |
№ |
||
команд |
|||
|
|
||
(s) = |
/ |
3 |
|
(s) = |
П |
4 |
|
(s) - |
qP |
5 |
|
(s) = |
M |
6. |
|
< M > |
= Af |
7 |
|
(s) = |
b |
0020 |
|
(s) = |
bh |
1 |
|
(s) = |
b h a |
2 |
|
(s) = |
W |
3 |
|
< w > = w |
4 |
||
|
|
5 |
|
|
П р о г р а м м а |
3 |
|||
Команды |
Пояснения |
|||||
(5) |
< |
M > |
(*) |
= |
M |
|
( : ) |
< |
W > |
(.9) = |
0 |
||
(П) < a > |
< а > = а |
|||||
( - ) |
< |
[а] > |
(s).= |
а — |
||
( P ) ( 0 0 2 3 ) : |
to =* 0 |
|
0020■ |
|||
( 0 = 1 |
—> 0023 |
|||||
|
|
|
||||
( S ) < 1 > |
( s ) = l |
|||||
(П,0) |
(s) |
Печать 1 |
||||
(-»•) |
(0025) |
|
|
|
||
(S) |
< s > |
C*) = a |
||||
(Пю) |
(s) |
Печать a |
||||
(Стоп) (0000) |
Останов |
27