Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Мараева И.Б. Вычислительная техника в инженерных и экономических расчетах. Автокод Инженер для ЭЦВМ Минск-22 учеб. пособие

.pdf
Скачиваний:
3
Добавлен:
23.10.2023
Размер:
4.54 Mб
Скачать

70

г им шдпрограммам.

Служебные слова ПОДПРОГРАММА,

ВЫХОД и НАПАЛО так же,

как

и названия операторов, могут быть сокращены до первых:

трех

букв.

 

 

Таким образом, структура автокодовой программы для любой

задачи следующая:

 

 

Заголовок

 

 

Основная

 

 

программа

 

 

Подпрограммы,

 

если они

есть

 

НАЧАЛО.— N I

Оператор ВЫПОЛНИТЬ

Обращение к подпрограмме осуществляется при помощи опе­ ратора ВЫПОЛНИТЬ. После названия оператора и пробела указы­ вается начальная метка подпрограммы, которую надлежит выпол­ нить. Например, ВЫП — 3 X

После выполнения указанной подпрограммы управление пере­

дается

оператору, следующему за оператором ВЫПОЛНИТЬ.

П р и м е р ы

 

I ) .

Найти 2 цоложитеяьных корня уравнения

 

 

s ec х - х * - 1 - 0 .

 

Рассмотрим функцию f ( x ) = sec х - ас* - i

Один из кор-

 

 

 

 

 

 

 

 

х = I

-f(x )< 0

 

 

 

71

ней, очевидно, 0 . Так как

при

,

а

 

при

X =

1 ,5

 

f(x)>0>

то

один из корней фикции находится

в

промежутке

 

[ i ;

1 ,5 ] .

 

 

 

 

 

 

 

 

 

 

 

При 1 ,5 < Х < ^

 

-£(х]>0

при X =: 2

разрыв

функ-

ции.

УТ

$]Т

J ( x J < 0

и знака не меняет. Перемена зна­

При ^

 

< х

 

ка f ( x j

возможна снова только при

 

 

 

 

 

 

 

Легко

проверить, ч т о / (i72)> 0

, a

f(f/,76) < 0

, т . е .

в промежутке [4 ,7 2 ;

4 ,7 6 f

также имеется корень функции.Корни

в указанных промежутках единственны,

поскольку

f

'fxj > 0

в

[ I ; 1 ,5 ] и f fx ) < 0

в [4 ,7 2 ; 4 ,7 б ] .

 

 

 

 

 

 

Так как

-^"(xJy-O в

обоих промежутках,

то

корни

можно

вычислить

с любой степенью точности методом Ньютона, взяв

за

начальные

приближения

=

1 ,5 и

х

=

4 ,7 2 .

 

 

 

Найдем значения корней с точностью

&Е= 10"®.

 

 

 

Программа в

АКИ будет

иметь вид:

 

 

 

 

 

 

 

РЕШЕНИЕ— УРАВНЕНИЯ— Z

 

 

 

 

 

 

 

 

I . ВВОД — Е, Х1 Х2

I

 

 

 

 

 

 

 

 

 

ВЫЧ -

 

X =

XI

I

 

 

 

 

 

 

 

 

 

 

ВЫЛ ^ 5

2

 

 

 

 

 

 

 

 

 

 

 

 

ВЫЧ ^ Х ~ Х 2 I

 

 

 

 

 

 

 

 

 

 

 

ВЫЛ

5

JE

 

 

 

 

 

 

 

 

 

 

 

 

КОН _

I

 

 

 

 

 

 

 

 

 

 

 

 

5 .

ПОД «

 

I

 

 

 

 

 

 

 

 

 

 

 

 

4 . ВЫЧ - F - i ■С О Э С Ю -Х 'г-!-F i = SIN(X):C0S(X)’2 -Z X -I)

F - . F I E

выч ^X^X-D I

ЕСД - M02}(3)~) £ ~ T O ^ к t

НАЛ — НА— БПМ_, X. E l ВЫХ — 1 НАЧ

На ленте БПМ в результате выполнения программы получим

запись

 

 

 

 

+

II02505

+

01

;

+

9ЭЭ9999

-

05

;

+ 4754760

+

01

;

+ 9999999

-

05

,

т .е . значения корней уравнения гг = 1,102505 s x s =4,754760

72

с точностью до ICPJ .

2). Вычислить

S=

j f ( x j d x

. где

-Сум-

мирование ряда

закончить

на том члене,

начиная с

которого

выполняется

неравенство

J

-3

 

 

-j t , < 10 .

л

 

Интеграл

вычислить с

точностью

10

 

".

 

Программа в АКИ-Т будет следующая:

 

 

П р и м е

р ._ -

X

 

 

 

 

1 . ъ т ^ я = 2 < - в - у ^ Е = н ) - у ^ . н = 11

W S^.SlOT^fi^W ~b~lUHr~H^TQ4~ E)ssi 2. Z

ПАПНА -

БПМ — SX

 

КОН

I

 

 

2 . П О Д -Я

 

 

В Ы Ч _5У = 0 _ N = U

 

5 . ВЫЧ —

Si = S i + / ?_ N - N + 1 1

 

ВСЛ ^ R ^ j= h 0 - 3 ^ T 0 ^ 3 K

 

внч _S =S 1Z

 

вых — X

 

 

НАЧ _

i К

 

 

В этом примере можно было, конечно, упростить

задачу,

если обратить внимание на равномерную сходимость

заданного

ряда при

>

2 . Тогда ряд можно почленно интегрировать.т.е.

Задача сводится к вычислению суммы полученного числового ряда с точностью до 1СГ4 .

Обращение к стандартным подпрограммам

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

элементарных функций, вычисление интеграла, решение дифферен­

циального уравнения, действие умножения матриц

и т .д .

Каждый

раз заново программировать такие часто встречавшиеся

опера­

ции нецелесообразно. Поэтому в каждом вычислительном

центре

имеется

в наличии так называемые стандартные

подпрограммы,

которые

можно использовать в различных задачах.

 

 

 

 

 

73

Совокупность всех имеющихся стандартных подпрограмм

об­

разует библиотеку стандартных подпрограмм АКИ (БСП АКИ).

При

работе машины в режиме "Т " соответствующая библиотека

назы­

вается БС1ТГ АКИ.

 

 

 

В се стандартные

подпрограммы снабжены восьмеричными

но­

мерами и хранятся во

внешнем запоминал? м устройстве

запи­

санными на магнитную ленту. В вычислительных центрах имеются каталоги ЕСП АКИ. э которых перечислены все имеющиеся в на­

личии стандартные подпрограммы с их характеристиками, прави­ лами обращения и номерами.

В ЕСП входят: программы перевода действительных чисел в

целые и обратно; действия над матрицами: умножение, обраще­

ние, вычисление собственных чисел; действия с комплексными числами; решение алгебраических уравнений и систем линейных алгебраических уравнений; вычисление определенного интегра­

л а ; решение обыкновенного дифференциального уравнения и сис­

темы дифференциальных уравнений;

вычисление

значений

спе­

циальных функций и многие другие

операции.

Количество

стан­

дартных подпрограмм в БСП порядка 300-400.

 

 

 

При работе в АКИ-Т различают две группы стандартных под­

программ:

 

 

 

 

 

1 . Автокодовые, обращение к

которым организуется автома­

тически при трансляции задачи.

К ним относятся:

подпрограммы

вычисления элементарных функций

sin xf o o sx ,tg x ,

arcsin

ar,

a/cccosx, аяс1дx ,/х /, а ^

x

.определенного интеграла

при помощи оператора ИНТЕГРАЛ;

решение линейной системы

ал­

гебраических уравнений при помощи оператора АЛГЕБРАИЧЕСКИХ— УРАВНЕНИЙ— СИСТЕМА; •подпрограммы перевода чисел из двоичной системы в десятичную и обратно; подпрограммы печати, деления целых чисел, расчета количества повторений цикла.

2 . Библиотечные, обращение к которым надо записывать в программе при помощи специальных операторов. БИБЛИОТЕЧНАЯ—

ПРОГРАММА и

СП. Первый из

этих операторов

используется как

при обычном

режиме работы

машины, так и в

режиме "Т ".

В скобках записываются параметры СП в том виде,в котором они фигурируют в автокодовой программе.

Параметрами могут быть простые переменные, переменные с числовыми индексами, метки подпрограмм, которые реализуют вы­

74

числения в качестве нестандартных блоков СП, а также

 

деся­

тичные целые положительные числа от 0 до 4096,

выделенные с

двух

сторон кавычками з

отличие от

меток.

 

 

 

 

 

Например,

 

 

 

 

 

 

 

 

СП_

102

(А/1,1/, В /1,1/, С/1,1/, *

о ’ )

 

 

 

 

 

Здесь 6 - целое число.

С/1/, 19,Х,Е)Х

 

 

 

 

 

СП

62

(А/1/, N , В /I/,

 

 

 

 

 

Здесь

19

- метка подпрограммы на входном языке,

в которой вы­

числяются правые части системы дифференциальных

уравнений

1-го порядка.

 

 

 

 

 

 

 

 

При использовании стандартных подпрограмм следует

иметь

в виду,

что номера СП в

обычном режиме и в

режиме "Т"

могут

быть

различны. П оэтов,

прежде чем использовать

какую-нибудь

стандартную подпрограмму в своей программе, следует

 

внима­

тельно прочитать сведения о ней в каталоге БСП АКК или

БСПТ

АКИ.

 

 

 

 

 

 

 

 

 

 

Некоторые часто применяемые СП приведены в

^ 12

настояще­

го пособия (для работы машины в режиме " Т ").

 

 

 

 

 

 

Запись участков программы в кодах машины

 

 

 

В

автокодовую программ могут быть включены участки,

за ­

писанные в кодах машины.

 

 

 

 

 

 

 

Для этой операции служат операторы К 0Д _ и К 0Д _

 

ПРОДОЛ­

ЖЕНИЕ «—* .

 

 

 

 

 

 

 

 

После наименования оператора КОД через пробел

 

обычным

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

 

Программа машинного кода составляется в условных адресах,

начиная с 07000; используются стандартные рабочие

 

ячейки

00040-00065 и индексные ячейки 0 0 0 I6 -0 0 0 I7 .

 

 

 

 

 

Команды отделяются друг от друга точками. Адреса

могут

быть

абсолютными до

00065, относительными к

первой

команде,

имеющей адрес 07000,

наименованием простой

переменной

 

или

переменной с числовыми индексами,, меткой автокодовой

 

 

про­

граммы в

командах условных и безусловных переходов

 

этом

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

 

быть

переведена в восьмеричную систецу

и состоять из 4 -х цифр для

обычного режима или 5-ти цифр для

режима " Т ").

 

Вся информация в операторе КОД не должна

превышать 768

сн е олов. Если участок программы в кодах машины

превышает

75

768 символов, то его разбивают на части: перед первой частью

пишут

оператор КОД ^

, а перед всеми остальными -

оператор

КОД

ПРОДОЛЖЕНИЕ

.

 

 

 

Константы, используемые оператором КОД,

записываются

в

конце

этого участка

программы в восьмеричной

системе в форме

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

~3077,_Л /_ а , a ,

где Л/

-

количество констант; О, может быть

использован

как обычный второй адрес команды безусловного

перехода

-3 0

(если

a i

не применяется, то ставятся все нули). Если

кон­

станты в

операторе КОД не употреблялись, то вместо

N пишут­

ся нули.

 

 

 

 

Если после оператора КОД следует оператор КОД _

ПРОДОЛ­

ЖЕНИЕ, то требуемые константы заносятся в последний оператор.

Команды записывают в

соответствии

с правилами

в

обычном

режиме или в

режиме "Т ".

 

 

 

 

 

 

Общее количество команд и констант в операторах

КОД и

КОД ^ ПРОДОЛЖЕНИЕ не должно

превышать

123.

 

 

Первая команда оператора КОД не должна быть

индексиро­

ванной и не

монет

содержать

код операции -3 0 .

 

 

П р и м е р

 

 

 

 

 

 

 

 

3 автокодовой

программе надо выделить целую и

 

дробную

части часла А. Целую часть

обозначим -

С,

а дробную часть -

It. Тогда в

обычном режиме

этот участок

программы

 

будет

иметь вид:

 

 

 

 

 

 

 

 

 

КОД — -

10

00 —. A w 0040.

 

 

 

 

-

73

00

- 7010 -

 

0040.

 

 

 

 

 

6400 _

0040 — 0040.

 

 

 

 

-

7500 — 0040 -

0040.

 

 

 

 

-

1600 »

Аи. 0041.

 

 

 

 

-

3000 — 7006— С.

 

 

 

 

2500 — 0041 - А.

-3077 0001 - D.

0000 — 0000 - 0044 К

При работе в режиме "Т" код операции записывается

двумя

восьмеричными цифрами,

индекс-адрес - двумя цифрами,

из ко­

торых первая двоичная,

а вторая восьмеричная

(номер индекс­

ной ячейки); адреса команд записываются пятью цифрами,

пер­

вая из которых двоичная, а остальные четыре -

восьмеричные .

75

Двоичные вэнстанты программы записываются в восьмеричной

системе двенадцатью цифрами.

П р и м е р

(в режиме "Ти) :

КОД -1000 —

00000

07005.

-3 0 0 0 —

00003 — 00040.

-6 0 1 6 —

0 0 4 0 0 _

07025.

6400 — 07001 —

07025.

и т .д .

 

 

 

Перед оператором КОД

южно

ставить метку,

но приписы­

вать метду какой-нибудь команде внутри машинного кода

-

нельзя.

 

 

 

 

 

 

Работа с

магнитной лентой

 

 

 

При записи программы в

режиме "Т" можно для работы

с

магнитной лентой использовать

операторы ЗАНИЗЬ —

и

ЧТЕ­

НИЕ— . Пни служат для того ,

чтобы записать

на магнитную лен­

ту кагда-нибудь результаты вычислений или,

наоборот, списать

с магнитной ленты в оперативную память

машины массивы инфор-

MfiJ1ИИя

 

 

 

 

 

При этом в информационной части оператора надо указывать:

1)

А/

- номер лентопротяжного механизма, дуда будет

за ­

носиться или откуда будет считываться информация.

А/

может

быть числом (истинным номером лентопротяжного механизма от 0

до 15)

ш и

простой переменной целого типа.

 

 

2 )

A N

- начальный адрес обмена на магнитной ленте,

может

быть числом (истинным адресом от

0 до 131 0 7 II0 )

или

простой переменной целого типа.

 

 

 

3)

3

А / - наименование начального

элемента

обменивае­

маго массива. Если нужно записать или списать с магнитной

ленты не один, а несколько массивов, расположенных в опера­

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

элемента первого из обмениваемых

массивов.

 

4 )

(М) - количество элементов

обмениваемых массивов. Чис­

ло М может быть либо целым, либо

простой переменной

целого

типа.

Количество М машинных слов,

подлежащих обмену,

пишется

в круглых скобках после наименования начального элемента мас­

сива.

 

Запись операторов обмена с

магнитной лентой следующая:

з ш ~ Л Г , Щ

B /2 / ( A fjZ

Например, пусть требуется занести на магнитную ленту по­

 

 

 

77

лученные в результате

аппроксимации коэффициенты

уравнений

50-ти кривых второго

порядка

 

 

А х * * ВВ а?у -,'с у г+

+-F =0.

 

Эти коэффициенты

собраны в

массивы А, В , С, D ,

Е , /^со­

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

писать в оперативной памяти подряд, например, собрав в

один

одномерный массив, а затем уже перенести полученный

массив

на магнитную ленту. В АКИ-Т этот участок программы будет вы­

глядеть

так:

 

 

 

 

МАС_ Т (300) X

 

 

3.

ЗЫЧ^ Т / Ц

=A lTlJr/I+50l=BlJl„Tlr+W 0l=C lJl~

=

 

Т/ l * 1501=D I JU T /1 +200/ =£/7/_Т/Г * 250/= F/JlX

 

П0В ^ .3^1 = 1^ ( i ) . T =i ^ ( i ) ~ 50 E

 

 

ЗАП^N,AN, T j i l (3 0 0 )I

 

Если в

следующей задаче нам понадобится списать с

магнит­

ной ленты

массив

Т (300)

и снова заполнить массивы А, 3 . С,

J) , Е ,

F

, то в

программе будет следующий участок:

 

 

ЧТЕ ~ N , A N , T (ЗОО)Х

 

 

МАО ~ А (50), В (50), С (5 0 ), D (SO), Е(50), F(50) Е

5 ,

ВЫЧ- A l7l = T /lL B /7 l= T jI+ 5 0 l~ C lJl= T ll+ № / „ =

 

V l7l= T lI450L E l7/:T /l+ 200L F /7l= T /I+ 250/X

 

 

ШВ ^ 5 ^ 7 = i ^ ( £). I = i~ (d )~ 5 0 E

 

Переменные N

и RN

целого типа должны быть либо

зада­

ны на вводе, либо вычислены в программе до использования опе­

раторов обмена, либо заменены в операторах обмена целыми

числами.

Если обмениваемые массивы расположены в оперативной па­

мяти подряд, то их можно записать или прочитать с магнитной

ленты с помощью одного оператора без предварительного

объе­

динения в

о д а

массив.

 

 

Например,

массивы А (3 0 ), В

( 1 0 0 _ 2 . 5 0 ) , : М (10)

рас­

положены в

ОЗУ подряд. Тогда оператор '3bH~r.N,AN,A(fit€) Е

перенесет

их на магнитную ленту

в указанном порядке.

 

78

 

S

9 . Операции над двоичными числами

 

 

При работе

машины в

режиме "Т " в

авто кодовой

программе

мэяно использовать двоичные числа. Они записываются

в

вось­

меричной форме не белее

чем двенадцатью значащими цифрами,не

считая знача.

Впереди

оящне нули е

знак + можно не

писать.

Наряду с отдельными двоичными числами можно

применять

простые

переменные и массивы, элементами которых

я в л я е т с я

двоичные

числа. Простые

переменные и массивы, числовые

зна­

чений которых представлены в шшше в

двоичной форме,

будем

называть в дальнейшем простыми переменными и массивами двоич­ ного типа.

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

простыми переменны!® и массивами двоичного типа попользуется оператор ДВОИЧНЫЙ.-. . Оператор ДВОИЧНЫЙ — подразделяется на

оператор ДВОИЧНЫЙ*-» ВЫЧИСЛИТЬ*—, и ДВОИЧНЫЙ--. ЕСЛИ—*

.Пер­

вый упр17-, «бляется для выполнения логических операций

сложе­

ния, умножения, отрицания и логического сдвига. Второй

- для

сравнения двух 37 разрядных машинных слов (отношения равен­

с т в а ).

Логическое сложение производится по следующему правилу:

А

0

0

1 1

В

0

1 0

1

Р = А + В

0

I

I

I

Иначе: высказывание' Р справедливо в

том случае,

если

истинно хотя бы одно из высказываний

А или В . Операция логи­

ческого сложения часто называется операцией "или" и

обозна­

чается в программе символом "+ п.

 

 

 

 

Логическое умножение производится по правилу:

 

А

0

0 1 1

 

 

В

0

1 0

1

 

 

Р = А • В

0

0 0

1

 

 

Иначе: высказывание Р истинео з .

том случае, если справед­

ливы оба высказывания А и В .

 

 

 

 

 

Операцию логического умножения часто

называют операцией

"и " и обозначают в программе (• ).

 

 

 

Логическое отрицание производится ш

следующему правилу:

 

 

 

 

 

 

 

 

79

 

 

 

 

A j

О I

 

 

 

 

 

Р = -А I

1 0

 

 

 

Иначе: высказывание Р истинно в том случае,

если А ложно.

Операцию логического отрицания часто называют операцией

"н е ".

Знак отрицания в

программе

- . Отрицание записываете^

в

круглых скобках:

(-BETA) .

Но для чисел: -1 7 7 ,

а не (- 1 7 7 ).

Логические операции сложения, умножения и отрицания

вы­

полняются поразрядно.

 

 

 

 

 

 

П р и м е р

 

 

- 1 7 7 7 7 ^ Y ^Д.Х + В К

 

 

Д 3 0 - В Ы Ч .-Х =

 

 

 

Здесь в

качестве

X

берется

отрицание числа

 

 

 

177770

=

I I I I

I I I I I I Ш 2.

Тогда

 

X = I I I

I I I

I I I II I

I I I

I I I I I I НО 000 000

000 ооо2

 

Затем вычисляется двоичное число V по форцуле Y=fl.X + В ,

где двоичные

числа А и X перемножаются по правилу логическо­

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

Для операции логического сдвига используется слово СДВИГ, после которого в круглых скобках записываются два оиеранда.

Операция логического сдвига осуществляется следующим образом:

сдвигаются все

37 разрядов

первого операнда на

количество

разрядов, определяемое порядком зторого операнда

( т .е .

его

последними семью разрядами).

 

 

Например,

СЛВИГ (A/К/,

7 5 3 II5 0 0 0 I0 6 ).

 

 

Здесь все

37 разрядов

A/К/ будут сдвинуты на - 6 разрядов,

т .е . вправо.

 

 

 

 

Старшинство логических операций следующее: сдвиг,отрица­ ние, умножение, сложение.

Оператор ДВОИЧНЫЙЕСЛИ — сравнивает два 37 разрядных числа и, в зависимости от результата выполнения э т о й опера­

ции, передает управление тоцу или инощу помеченному операто­

ру.

 

 

 

 

П р и м е р

 

 

I ,

 

ДВО—. ЕСЛИ— СДВ (А, 1 3 ) - = X -

Т О - 10

 

что означает: если результат

сдвига А на 13

разрядов

влево

будет совпадать с X (поразрядно), то следует

перейти к

опе­

ратору под меткой 10.

 

 

 

 

Для размещения массивов

двоичного

типа в

памяти

машины

Соседние файлы в папке книги из ГПНТБ