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

книги из ГПНТБ / Кушнерев Н.Т. Программирование для ЭВМ Минск-32

.pdf
Скачиваний:
43
Добавлен:
24.10.2023
Размер:
11.94 Mб
Скачать

жет быть одним из чисел 0,1 или 4, а также абсолютной этикеткой, принимающей такое значение.

При выполнении оператора содержимое В2 пересылается в ячейку В1 того уровня, на котором выполняется программа.

П Е Р Е С Л А Т Ь ИЗ ЯЧЕЙКИ УРОВНЯ (ПУА)

ПУА

[:И;] B l ; В2

Определитель 1010

Т = 2 0 мксек

Содержимое ячейки В1 того уровня, на котором выполняется программа, пересылается в ячейку В2.

ЧИТАТЬ ИЗ ЯЧЕЙКИ УРОВНЯ (ЧУ)

ЧУ

[:И;] В1

Определитель 1011

Т = 15 мксек

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

ЗАПИСАТЬ В ЯЧЕЙКУ УРОВНЯ (ЗУ)

I

ЗУ [:И;] B l | Определитель 1000 Т = 1 5 мксек

Результат предыдущего оператора пересылается в ячейку В1 того уровня, на котором выполняется программа.

Остальные операторы действий над содержимым ячеек уровня приведены в табл. 6.

Т а б л и ц а 6

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

 

Оператор

Действие

Вы полнение

Время,

Опреде­

 

мксек

литель

СУ

[:И;]В1;В2

сложение

с

фиксиро­

(В1) + (В2)—-В1

25+30

0001

ВУ

[:И;] В1;В2

ванной запятой

( B l ) — ( В 2 ) — - В 1

25+30

0010

вычитание

 

с фикси­

 

 

рованной

запятой

 

 

 

ЛСУ

[:И;] В1;В2

'логическое сложение (B1)V(B2)—*В1

25

0101

ПСУ

[:И;] В1;В2

поразрядное

сложе­

( В 1 ) ф ( В 2 ) - * В 1

25

о н о

ЛУУ

[:И;] ВГ;В2

ние

 

умноже­

( В 1 ) Л ( В 2 ) — В 1

25

0111

логическое

 

ние

3.11. ВСПОМОГАТЕЛЬНЫЕ ОПЕРАТОРЫ

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

90

НЕТ ОПЕРАЦИЙ

( Н 0 П )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Возможны

следующие

разновидности

 

оператора:

 

 

Н 0 П

 

:И;]

B l ; В2

 

+00

і

біаі

б 2 а 2

 

 

Т = 10

мксек

 

Н 0 П

 

И,]

В1

 

 

+00

і

біа,

00

 

 

 

Т = 10

мксек

 

Н 0 П

 

И]

 

 

 

+00t

00

00

 

 

 

Т = 10

мксек

 

Оператор не выполняет никакого действия.

 

 

 

 

Р А З Р Е Ш И Т Ь О К Р У Г Л Е Н И Е ( Р 0 К Р )

 

 

 

 

 

 

 

 

 

Р 0 К Р

 

 

 

Код

операции — 04,.

еди­

Т = 1 0

мксек

 

 

 

 

 

 

ница

в разряде 13 и

нули

 

 

 

 

 

 

 

 

 

во всех остальных раз­

 

 

 

 

 

 

 

 

 

рядах

 

 

 

 

 

 

 

 

 

 

 

Адресная часть не используется.

 

 

 

 

 

 

 

 

Устанавливается

в нулевое

 

состояние

 

индикатор Б Л 0 К Р , т. е.

все арифметические

операции, следующие

за

оператором

Р 0 К Р ,

будут производиться

с округлением

 

до

тех

пор, пока

округление

не будет

запрещено.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ЗАПРЕТИТЬ ОКРУГЛЕНИЕ

( 3 0 К Р )

 

 

 

 

 

 

 

 

 

 

3 0 К Р

 

 

 

Код

операции

04,

еди­

Г = Ю

м к с е к

 

 

 

 

 

 

ницы

в

разрядах

11 и

13

 

 

 

 

 

 

 

 

 

и

нули

 

во

всех

осталь­

 

 

 

 

 

 

 

 

 

ных

разрядах

 

 

 

 

 

 

 

 

Адресная часть не используется.

 

 

 

 

 

 

 

 

Устанавливается

в единичное

состояние

индикатор

Б Л 0 К Р ,

т. е. все

арифметические

операции,

следующие

за

оператором

3 0 К Р ,

будут

выполняться

без

округления,

пока

округление не

будет разрешено.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

РАЗРЕШИТЬ НОРМАЛИЗАЦИЮ

( Р Н 0 Р М )

 

 

 

 

 

 

 

 

Р Н 0 Р М

 

 

Код операции 04, еди­

Т = 10

мксек

 

 

 

 

 

 

ница

в

разряде

14 и

 

ну­

 

 

 

 

 

 

 

 

 

ли

во

 

всех

остальных

 

 

 

 

 

 

 

 

 

разрядах

 

 

 

 

 

 

 

 

 

 

Адресная часть не используется.

 

 

 

 

 

 

 

 

Устанавливается

в

нулевое

 

состояние

индикатор

 

Б Л Н 0 Р ,

после чего все операции с плавающей запятой, следующие за опе­

ратором Р Н 0 Р М , будут выполняться

с нормализацией результата

до запрещения

нормализации.

 

 

 

ЗАПРЕТИТЬ НОРМАЛИЗАЦИЮ

(3H0PM)

 

 

3 H 0 P M

Код

операции 04,

еди­ Т»=10 мксек

 

ницы

в

разрядах

11, 14

 

и нули

во всех

осталь­

 

ных

разрядах

 

 

Адресная часть не используется.

91

Устанавливается в единичное состояние ' индикатор

Б Л Н 0 Р ,

что приводит к запрещению нормализации влево

результатов всех

операций

с плавающей

запятой, выполняемых

после

оператора

3 H 0 P M

до тех пор, пока

нормализация не будет

разрешена. Нор­

мализация вправо не запрещается.

УСТАНОВИТЬ ИНДИКАТОРЫ В Е Д И Н И Ч Н О Е СОСТОЯНИЕ (УИ1)

УИ1 [:И;] <индикаторы> коД

операции

—04, еди­ Т = 1 0 мксек

ницы в разряде И и раз­

рядах,

соответствующих

перечисленным

в

опера­

торе

индикаторам,

и ну­

ли

в остальных

разрядах

 

В адресной части оператора записываются сокращенные наи­

менования тех индикаторов,

которые

устанавливаются

в единич­

ное

состояние. Соответствие

между

индикаторами

и

разрядами

машинной команды

следующее:

 

 

 

 

 

 

 

Индикаторы

Номер разряда

 

 

 

 

 

машинной команды

 

 

 

 

 

Б Л 0 К Р

 

 

13

 

 

 

 

 

Б Л Н 0 Р

 

 

14

 

 

 

 

 

НУЛЬ

 

 

15

 

 

 

 

 

Б Л П Р Е

 

 

18

 

 

Если в

адресной

части

указывается

несколько

индикаторов,

то

они

отделяются

друг

от друга

знаком « + ».

Например,

УИ1 Б Л 0 К Р + Б Л Н 0 Р .

 

 

 

 

 

 

 

При выполнении оператора устанавливаются в единичное со­

стояние

индикаторы,

перечисленные

в

операторе,

а

состояние

остальных индикаторов не изменяется.

 

 

 

 

Оператор может

использоваться

для запрещения

округления

и нормализации влево одновременно или

по отдельности, а также

для установки единичного состояния индикатора НУЛЬ. Операто­ ры УИ1 Б Л 0 К Р и УИ1 Б Л Н 0 Р равносильны операторам 3 0 К Р и 3 H 0 P M соответственно.

УСТАНОВИТЬ И Н Д И К А Т О Р Ы В НУЛЕВОЕ СОСТОЯНИЕ (УИО)

УИО [:И;]

< и н д и к а т о р ы > код

операции

—04,

еди- Т = 10 мксек

 

ницы

 

в

разрядах,

соот­

 

ветствующих

перечислен­

 

ным

в

операторе

индика­

 

торам,

и

нули

во

всех

 

остальных

разрядах

 

 

 

 

 

Устанавливаются

в нулевое

состояние

индикаторы,

перечис­

ленные в операторе. Состояние остальных

индикаторов

не изме­

няется.

 

 

 

 

 

 

 

 

 

Оператор может

использоваться

для

разрешения

округления

и нормализации одновременно

или

по отдельности,

а также

для

гашения индикатора

НУЛЬ.

Операторы

 

УИО

Б Л 0 К Р

и

УИО

Б Л Н 0 Р равносильны операторам Р 0 К Р и

Р Н 0 Р М

соответственно.

92

Г л а в а 4. ЭЛЕМЕНТЫ ПРОГРАММИРОВАНИЯ

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

В данной главе будет рассматриваться техника составления программ на языке символического кодирования с учетом особен­ ностей машины «Минск-32» и системы ее математического обес­ печения. Этапы решения задачи, предшествующие программиро­ ванию в основном не зависят от типа машины.

Одним из основных положений

системы

программирования

машины «Минск-32» является тот

факт, что программа решения

всякой задачи рассматривается

как

объединение самостоятель­

ных, более простых программ,

реализующих

отдельные части

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

4.1. РАСПРЕДЕЛЕНИЕ ПАМЯТИ ВНУТРИ ПРОГРАММЫ

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

В о с н о з н о

й о б л а с т и

располагаются команды, констан­

ты, собственные

величины, т.

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

93 j

жны быть сохранены при выходе

из программы и могут быть

использованы при

повторном

входе

в программу.

К р а б о ч е й

о б л а с т и

относятся рабочие ячейки програм­

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

рабочих областей предпочтительнее.

 

 

 

 

 

В о б щ е й

о б л а с т и

помещаются

величины,

используемые

несколькими

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

Общим

величинам

отводится

одно и

то же место

в

памяти. Такие

области

должны

быть одинаково

описаны во

всех программах,

которые

их используют.

Общая

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

Каждая

ячейка, используемая

в программе,

должна

быть

отнесена к какой-либо области. Индексные ячейки всегда разме­ щаются только в индексном поле. Наличие рабочих и общих об­ ластей в программе не является обязательным.

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

ячейка, отнесенная к какой-либо

области,

имеет

некоторый

адрес

относительно начальной ячейки

 

этой

области,

или,

что

то же

самое,

относительно базиса,

за

которым

закреплена

область.

После

трансляции этому адресу

будет

соответствовать

одиннад­

цатиразрядный относительный

адрес в

команде. Отсюда следует,

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

реса

ячеек, отстоящих от начала области

не далее

чем

на 2048.

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

если

 

использо­

вать

индексирование или операторы

со

специальным

 

базирова­

нием

(см. 4.2).

 

 

 

 

 

 

 

 

 

Для задания типа области, закрепления

области

за

тем

или

иным базисом служит оператор «Базис».

 

 

 

 

 

 

 

Б А З ИС (БАЗ)

 

 

 

 

 

 

 

 

 

 

БАЗ В1 / ; Р А Б

\

 

 

 

 

 

 

 

 

 

Г . 0 Б Щ І

 

 

 

 

 

 

 

 

 

В1 обозначает номер базиса. Он

может

быть

задан

числом

от

0 до 3 или абсолютной этикеткой. Этикетка, задающая

номер

ба­

зиса, должна быть

определена с помощью

оператора

 

ЗНАЧ в

одном из предыдущих операторов и тоже может принимать зна­

чение от 0 до 3. Если определяется рабочая

или

общая область,

то в операторе записывается РАБ или 0 Б Щ .

Для

основной обла­

сти обозначение типа области отсутствует.

Некоторые

области

могут иметь наименование — метку, которая

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

в опе­

раторе БАЗ в графе «Этикетка». Метки должны быть различными для различных областей одной программы, но одинаковыми для одних и тех же общих областей разных программ.

94

Оператору* БАЗ не соответствует никакая команда в протранслированной программе. Этот оператор используется транслято­ ром для того, чтобы присвоить номер базиса, указанный в нем, адресам всех операндов этой области. Он используется также в процессе загрузки для определения места области в оперативной памяти.

Оператор БАЗ является первым оператором в каждой области программы. В момент выполнения программы содержимым того базиса, номер которого задан в операторе БАЗ, будет абсолютный адрес первой ячейки этой области. Поэтому целесообразно запи­ сать этикетку у оператора, следующего за БАЗ.

Примеры записи оператора БАЗ.

Зтикетно

Коп

 

2г,

 

 

 

 

 

 

 

 

Адреса

 

>!\

l

1 \ №

і

і

\V

і

I » I і

,

і

да

 

і і

і

 

 

|J5,

 

1

1

1 1

ЄІЛІЗ,

 

І

• 1x.:xP-S\Bi

,

,

, .

,.

і

 

і

 

і

 

1

1

1 1

S,AI3,

 

,

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

01

і і j і і і і і

 

і .

і

 

 

і і

 

 

 

 

Є,Л,ЗІ

 

,

 

 

 

 

 

 

 

 

 

 

 

11 1

 

 

 

 

 

 

 

 

 

 

 

t

i

l l

і - і

і

і

1

1

1

1

1 1

1

1

1

1

1

1

 

 

 

|.,|...

• 1 - І

1 1

 

 

 

1

1

1

1 1

1

1

 

 

 

 

 

 

 

I

 

РЕЗЕРВИРОВАТЬ

ПАМЯТЬ (РЗВ)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

РЗВ < количество ячеек >

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Оператор РЗВ используется для того, чтобы

 

зарезервировать

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

 

 

название

пер­

вой ячейке этого участка. Название записывается

 

 

в графе

«Эти­

кетка» этого оператора,

а в адресной части

 

указывается количе­

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

Память отводится соответственно расположению оператора РЗВ в символической программе. Содержимое ячеек отведенного участка памяти не определено.

Примеры записи оператора РЗВ.

Зтикетно

Коп

 

12s

і

i»i

,

,

і

 

 

І2\ і

і' 1 «

'Л . .

&

 

 

 

 

P,3,Bt.

,

fi.t,e.

 

j

 

і

і

і

і

Р,Я,б,.

,

P,3tB,

,

Pi

і

і

j

і

і

і

і

і

 

 

i ° . * i t f i

t

1 \ i

l

l

i

l

l

 

ї ї

 

1 1 1 L . -

. i - J

1.1..., . . . I

- l — l - L . I — l I I 1

 

 

Если

требуется указать

в

каком-либо

операторе

адрес

одной

нз ячеек

зарезервированного

участка,

то

для этого

следует

запи­

сать составную этикетку, состоящую из этикетки этого участка и номера ячейки в нем. Принято считать, что первая из этих ячеек имеет нулевой номер. Например, для записи единицы в последнюю ячейку участка ПОЛЕ, приведенного выше, следует записать оператор П + 1 ; П 0 Л Е + 8.

95

 

 

I

 

НАЧАЛО (НАЧ)

 

 

 

НАЧ B l

 

 

 

B l может быть восьмеричным или

десятичным числом от 0 до

2047 или этикеткой, которая должна

быть определена до

этого

оператора. Это

означает, Что указанная этикетка должна

встре­

титься в графе

«Этикетка» в одном

из операторов программы,

предшествующих НАЧ.

Оператор предназначен для указания относительного адреса операторов программы, если программист хочет изменить после­ довательность адресов операторов. Обычно при трансляции про­ граммы ячейки памяти, занимаемые каждой областью, получают последовательные относительные номера, начиная с нулевого. Если в области записан оператор НАЧ, то следующие за ним опе­ раторы получают адреса, начиная с адреса, определенного опера­ тором НАЧ. При этом ячейки с пропущенными номерами будут зарезервированы. Если же адрес, указанный в операторе НАЧ, меньше адреса предыдущего оператора, то предыдущие значения ячеек игнорируются и заменяются новыми. Оператор не снаб­ жается этикеткой.

Пример

}гике'«г

 

 

 

fan

 

 

 

 

 

 

 

 

f \

.

,

і "

, , х21

M\

 

x

/Hi

x

,

,

fWf

І

І

J

І

dxlxlx

x

'

. i

f

 

 

 

 

,

,

,

 

 

 

'

xDxDx

\ .

-

,

; .

Л ' . I s " .

 

 

^ J

1

1 1 ..

1 1

1 1

1 .

 

 

 

 

 

 

 

1

 

 

 

 

-

'

-

1

 

 

 

'

'

1 1

*

1

t

I 1

 

 

 

 

 

 

 

 

 

 

Константа ЭТИК

будет

 

иметь

 

 

в

программе относительный

адрес 0144, а, например, предшествующая ей ячейка может быть

адресована как ЭТИК—1 (относительный

адрес

0143). Вместо

НАЧ 100 можно записать Р З В 100.

 

 

Р Е З Е Р В И Р О В А ТЬ ПАМЯТЬ Д Л Я И Н Д Е К С Н О Г О

П О Л Я

(РИП)

Р И П < количеств о я ч е е к >

 

 

Оператор РИП предназначен для резервирования требуемого количества ячеек в индексном поле для программы. Количество резервируемых ячеек индексного поля записывается в адресной части оператора в виде десятичного или восьмеричного числа. Это количество должно быть кратно 16. Местоположение индексного поля определяется при загрузке программы в МОЗУ, а не програм­

мистом. Поэтому оператор Р И П

может ставиться

в любом

месте

программы. В программе может

быть несколько операторов

РИП .

В этом случае общая длина

индексного поля

равняется

сумме

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

всеми операторами Р И П .

 

96

Примеры записи оператора

 

РИП.

 

 

 

 

 

 

 

 

 

 

 

 

 

.Этикетка

 

 

Коп

 

 

 

 

 

 

 

 

 

 

 

Афеса

 

 

и

 

 

заме

 

і

і

і « 17,

,

,

,21

22\

і

i»i

і

і

ДО

і і

і

 

l J 5 l

 

1

і

1

 

1^1

 

і

і

і

і

Р,И,Л,

 

,

3 , г ,

 

,

j

,

,

,

,

,

, .

,

,

(

 

,

,

,

.

J

 

і

і

і

,,і

 

 

 

 

2,0,3,1

 

 

 

 

 

 

 

 

 

,

,

,

>

,

.

!

1

 

l

i

t

)

1

1

1

1

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

і

і

і

1

і

і

і

і

і

і

 

 

 

 

 

 

 

 

j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

і

і, ,і

і ,

1

1 1 1

— I I I !

 

 

 

 

 

і

і

і

і

і

і

і

 

і

і

і

L 2. СВЯЗЬ

МЕЖДУ

ОБЛАСТЯМИ В

ПРОГРАММЕ

 

 

 

 

 

 

 

 

 

 

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

передавать информацию

из

одной

 

области

 

в

другую. Например,

команды, записанные

 

в основной

 

области,

должны

посылать ре­

зультаты в рабочую область или

использовать

 

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

ложенные

в ней. Для

того чтобы

 

указать адрес операнда

в каком-

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

областей

находится

операнд, записать его этикетку. Номер бази­

са, закрепленный

за

областью,

в которой находится операнд,

указывать

не нужно,

так как он

будет проставлен транслятором.

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

Однако если в программе за одним номером базиса закрепле­ но несколько областей, то программисту всегда следует обращать

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

какой

из этих областей

записан

в соответствующей ячейке уровня.

Если

в какой-либо

момент

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

оператора «Константа

 

адресная».

 

 

 

 

 

 

 

 

 

 

 

КОНСТАНТА АДРЕСНАЯ

 

(КА)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

КА

C I ; С2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В качестве С1 и С2 может быть записана

этикетка,

а также

восьмеричное или

десятичное

 

целое

число.

В

операторе

записы­

ваются обе величины. Если одна из

них

не

будет

использоваться,

вместо нее пишется нуль.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Примеры записи оператора

 

КА.

 

 

 

 

 

 

 

 

 

 

 

Этикетка

 

 

Hon

 

 

 

 

 

 

 

 

Дфесо

 

 

 

 

І2\

і

і

, « 17,

1 1

 

1^' 22,

,

fit

,

, ,

^

,

,

і

и»,

 

 

1,

і

і

,

K\A\

і

і

Я,Д,Р,Х\

 

і.Я,М,Р,!/<

 

,

,

,

,

г

 

 

В,

,

,

,

K,/>,

і

і

П,0,Л,і.\

 

І ,0,

,

 

 

 

 

,

,

 

 

* і ' і

 

і

і

*,Я,

І

і

0 ,

І ,

I

,

, ,

, ,

,

,

,

,

,

 

 

х,К,М,>>,

 

 

 

і

і

/,

StS,:**

J,P,*

,',f,

 

,

,

,

t.

 

 

К,МіР,*,

 

 

K,K,

,

,

к,е;к,с^

 

r , i , f , o , 3

 

 

 

 

 

,

 

 

і

і

і

і

1 1 1 1

,

,

 

 

 

 

 

 

,

,

,

 

 

і

і

і

і

1 1 1 1

 

 

 

 

 

 

,

,

• ,

 

При трансляции программы оператор КА преобразуется в кон­ станту, содержащую две шестнадцатиразрядных величины в раз­ рядах 5-+20 и 2ІН-36, и нули в разрядах 0-f-4. Если в адресной части оператора КА указывались этикетки, соответствующие им величины являются адресами относительно начала области, к ко­ торой относятся ячейки с этими этикетками. Абсолютная величи­ на этого адреса зависит от места программы в памяти и оконча­

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

в МОЗУ,

когда к

относительному значению адреса

диспетчер

прибавляет

адрес

начала области.

 

 

 

Число, записанное в адресной

части оператора, не изменяется

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

Пример. Пусть области 0 Б Л 1 и

0 Б Л 2 отнесены в программе

к базису с номером 1, то есть были

записаны операторы

Эгикегко

 

 

 

Кап

 

, .

і *

/>.

і .

,21

0,б,Л,1,

 

 

б,Л,),

 

 

,

 

 

 

 

" , 3 , 3 ,

 

, '

1

I

I

I

і

і

і

0,В,Л,^>,

 

 

 

 

 

Н,б,Л,2

 

 

Р , І М

 

,

і

і

і

і

і

i .

i

i

і

і

>

і

. ї

ї

!

 

 

 

 

 

 

 

 

 

 

 

 

 

Афесо

 

22,

і ,26,

і

,

і

М

 

 

і

і

і

tSSi

/ і і і Л * [ *

 

 

 

 

 

 

.

.

i

.

i

 

1 , 0 , 6 ,

j

,

,

,

 

,

,

 

,

,

і

,

,

і

і

і 1 у і

і

ї ї

 

і

і

r

і

I

/ , f

 

|

І

 

1

. 1

Л A , 1 .

? \0,B,

 

,

,

,

 

j

j

 

_j

,

і

,

i

і

t

. . . j . .

 

.

^

 

 

^ i

i

 

 

. . і

. j

і

. 1

і

j

І

 

ї ї

 

 

і

і

і

і

і

Пусть в разрядах 5-Г-20 нулевой ячейки уровня находится на­ чальный адрес области 0 Б Л 1 , а требуется начать использовать ячейки* области 0 Б Л 2 . Тогда следует записать в программе такие операторы

 

ЛУУ

0; + 177777В

 

 

 

 

 

ПСУ

0; АДР

 

 

 

 

 

 

Здесь

 

 

 

 

 

 

 

 

АДР КА

Н 0 Б Л 2 ; 0

 

 

 

 

В ячейке АДР хранится

абсолютный адрес

нулевой

ячейки

области 0 Б Л 2

(ее начальный адрес). После

выполнения

операто­

ров ЛУУ и ПСУ сохранится

старое значение . нулевого базиса, а

абсолютный начальный адрес

0 Б Л 2

станет

значением

первого

базиса. После этого для записи

результата

в ячейку

Н 0 Б Л 2 + 1

можно записать

оператор

 

 

 

 

 

 

 

 

З Н 0 Б Л 2 + 1

 

 

 

 

Если программа такова,

что приходится

часто

использовать

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

к базису

с одним

и тем же номером, то в некоторых

случаях

удобнее

применить

для работы с одной из областей ранее рассмотренные операторы, а для работы с другой областью — операторы со специальным

98

базированием. К ним относятся операторы «Читать со специаль­ ным базированием», «Записать со специальным базированием», «Выполнить команду», «Формировать адреса» и «Идти с заменой базиса».

В рассмотренных ранее операторах при образовании абсолют­ ного адреса операнда для базирования используется базисный адрес, расположенный в соответствующей ячейке уровня. В опе­ раторах со специальным базированием для этой цели использу­ ется величина, находящаяся в разрядах 2ІЧ-36 ячейки, указанной по первому адресу оператора. Будем называть такое базирова­ ние специальным.

При специальном базировании не изменяется содержимое яче­ ек уровня выполняемой программы. Исключением является опера­

тор «Идти с заменой

базиса». Операторы со специальным

базиро­

ванием используются

для обращения к ячейкам, если известны

только их абсолютные

адреса, а также для ячеек, которые

отстоят

от начала области далее, чем на 2048 ячеек.

 

Если в программе

требуется адресовать несколько

величин,

расположенных в одной области, не превышающей 2048 ячеек, то начальный адрес этой области следует использовать в качестве базисного адреса операторов специального базирования. Тогда с

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

в

операторах

специального

ба­

зирования можно адресовать любую величину этой области.

 

ЧИТАТЬ СО СПЕЦИАЛЬНЫМ БАЗИРОВАНИЕМ (ЧСП)

 

 

 

ЧСП

[:И;][.И;]В1;

В2 | — 05 і

6,3,

2 |

Т = 2 5 мксек

 

Здесь и в других операторах

со

специальным

базированием

В2 представляет

адрес относительно базисного

адреса Аг (В1),

указанного в разрядах 21-г-Зб содержимого В1. Оно

может быть

числом или этикеткой. Число или значение

этикетки не должно

превышать величины 2047.

 

 

 

 

 

 

При выполнении оператора ЧСП (а также других операторов

со специальным

базированием)

первоначально

формируется

ад­

рес В2 + А2 (В1), индексируемый

по

общим

правилам. Затем

со­

держимое ячейки с этим адресом

пересылается на сумматор.

 

Оператор предназначен для чтения содержимого ячейки, рас­ положенной в другой области, а также для чтения из ячейки, для которой известен только абсолютный адрес или если эта ячейка удалена от начала области далее, чем на 2048 ячеек.

Пример. Прочитать содержимое ячейки Ч И С Л 0 из области 2 в начальным адресом А с помощью оператора, расположенного в области 1. Области 1 и 2 имеют один и тот же номер фазиса. Воз­ можны два варианта.

7*

89

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