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

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

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

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

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

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

 

 

 

 

 

 

Т а б л и ц а

11

 

Режимы использования дополнительных внешних устройств

 

 

Номер

Мнемони­

Разряды

Обязательна

 

 

 

 

 

18+21

Момент выхода

на ветвь

 

режима

ческие коды

ли

ветвь

 

 

 

экстракола—67

 

 

 

 

 

 

 

Первый

УЗВ, УЗЫ

ООП

да

а) перед

обращением — при

 

 

 

 

 

несовпадении

состояний

 

 

 

 

указателен,

 

 

 

 

 

 

 

б)

после

окончания

рабо­

 

 

 

 

ты — всегда

 

 

 

Второй

УЗВЖ,

1011

нет

как

в первом

режиме

 

Третий

У З Ы Ж

0101

да

после

скончания

работы

ВУЗ, ЫУЗ

 

 

 

 

при

несовпадении

состоя­

Четвертый

 

1101

нет

ний

указателей

 

 

 

ВУЗЖ,

как

в третьем

режиме

 

Пятый

Ы У З Ж

0111

да

при

несовпадении

состоя­

ВЗУ, ЫЗУ

 

 

 

 

ния

указателей

перед

обра­

 

 

 

 

щением

и после окончания

 

 

 

 

работы

 

 

 

 

Шестой

ВЗУЖ,

1111

нет

как

в пятом режиме

 

 

 

Ы З У Ж

 

 

 

 

 

 

 

 

Устройства ввода-вывода основного комплекта машины также могут быть использованы в любом из шести описанных выше режи­ мов. При этом используются мнемонические коды операторов, как и для дополнительных ВнУ, а условные наименования устройств и признаки операции, как и в основных операторах ввода-вывода. Операторы управления магнитной лентой при их использовании в этих режимах состоят из двух строк. Первая строка имеет струк­ туру, описанную в п. 5.4. и отличается только мнемоническими ко­ дами операторов (табл. 12). Вторая строка содержит в кодовой части ПСК, а в адресной части указатели аналогично третьей стро­ ки операторов ввода и вывода в описанных режимах.

При использовании УПч в этих режимах оператор пропуска заданного количества строк имеет, в зависимости от режима, один

180

Дополнительные

Режимы

работы

Первый

Второй

Третий

Четвертый

Пятый

Шестой

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

Мнемонические коды операторов

п р о п у с т и т ь зону

вернуться на зону

подвести нача ­

ло МЛ

УЗПР

УЗВР

УЗПН

У З П Р Ж

У З В Р Ж

У З П Н Ж

ПРУЗ

ВРУЗ

ПНУЗ

П Р У З Ж

В Р У З Ж

П Н У З Ж

ПРЗУ

ВРЗУ

ПНЗУ

П Р З У Ж

В Р З У Ж

П Н З У Ж

снять МЛ

УЗСН

УЗСНЖ

СНУЗ

СН У З Ж СНЗУ

СН З У Ж

из мнемонических кодов УЗЫ, УЗЫЖ, ЫУЗ, ЫУЗЖ, ЫЗУ или Ы З У Ж и вторую строку с кодом ПСК, как и операторы управления магнитной лентой.

' Г л а в а 6. ОСНОВНЫЕ ПОЛОЖЕНИЯ СИСТЕМЫ ПРОГРАММИРОВАНИЯ

6.1. СХЕМА ПОДГОТОВКИ ПРОГРАММЫ К ВЫПОЛНЕНИЮ

Подготовка программы к выполнению на машине «Минск-32» производится с использованием ряда системных программ, которые относятся к системе программирования машины. Кратко опишем схему подготовки программы в условиях системы программирова­ ния.

Как уже говорилось в гл. 4, программа решения задачи рас­ сматривается как совокупность отдельных более простых программ, реализующих составные части выбранного алгоритма решения задачи. Каждая из таких программ записывается на каком-нибудь из входных языков (предполагается, что соответствующий транс­ лятор, существует) и транслируется. Транслятор переводит про­ грамму с входного языка на внутренний язык системы программи­ рования— язык загрузки. В программе могут содержаться обра­ щения к некоторым другим программам, необходимым для ее работы и уже имеющимся в библиотеке программ на языке загруз­ ки. До выполнения программы необходимо объединить программу с ее внутренними программами, т. е. собрать все необходимые про­ граммы. Сборка производится программой «Сборщик». Результа­ том сборки также является программа на языке загрузки.

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

Если выяснилось, что программа написана неправильно, то не­ обходимую ее корректировку можно выполнить с помощью про­ граммы «Корректор».

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

182

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

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

6.2. НЕКОТОРЫЕ СВЕДЕНИЯ О ПРОГРАММЕ НА ЯЗЫКЕ ЗАГРУЗКИ

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

ной памяти, а также

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

в ней. Программа

на

языке загрузки состоит из

заголовка, собст­

венно тела программы и словаря

обозначений

программы.

З а г о л о в о к

п р о г р а м м ы

содержит наименование програм­

мы, по которому она отличается от других программ, а также неко­

торые характеристики этой

программы.

Сюда входит таблица

областей, из которых состоит программа,

с указанием

наименова­

ния и типа каждой области,

информация

о начальных

значениях

базисов, сведения б величине индексного

поля.

 

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

Информация "заголовка позволяет распределить выделенную для

программы

память между

отдельными

видами

областей,

по

воз­

можности

совместить ячейки

индексов

и рабочие области

различ­

ных программ, выделить

одну

и

ту же память общим областям

программ, имеющим одинаковые

наименования.

 

 

 

Тел.о п р о г р а м м ы

содержит собственно

программу

и

неко­

торую сопровождающую информацию вспомогательного характера. Собственно программа удовлетворяет некоторым стандартным требованиям, которые отражают требования к программам при записи их на языке символического кодирования (см. п. 4.3). Это, например, наличие хотя бы одной основной области, наличие трех ячеек для запоминания информации внешней программы, наличие

ячеек для приема параметров, наращивание

и восстановление зна­

чения базиса индексов, выход из программы

и т. д.

 

Вспомогательная информация представляет собой так называе­

мые директивы загрузки. Директивы загрузки

используются при

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

истинных

адресов

в зависимости от места выполнения программы, для замены

описа-

183

ний

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

и т.

п.

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

каждой ячейке программы, соответствующей операторам

КА, 0 П Р ,

ОПРС, 0 П Р З ,

РЗВ, НАЧ, константам обмена и т. п. В

напечатан­

ном документе

после трансляции

каждая директива загрузки поме­

чена слева двумя символами «*».

 

 

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

загрузки.

 

 

 

С л о в а р ь о б о з н а ч е н и й

сохраняет обозначения,

использо­

ванные в программе на входном

языке. Словарь обозначений ис­

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

«.3. ТРАНСЛЯЦИЯ ПРОГРАММ

Система программирования предполагает, что до трансляции транслируемая программа на входном языке уже записана с перфо­ лент или перфокарт на магнитную ленту. Для этой цели в библио­ теке программ имеются соответствующие программы. С их помощью на магнитной ленте может быть создана библиотека программ на входных языках — библиотека исходных текстов. Из этой библио­ теки трансляторы выбирают тексты для трансляции. Отдельные тексты могут корректироваться программой «Корректор». В резуль­ тате работы транслятора также получается программа, записывае­ мая на магнитную ленту.

В заказе на трансляцию программист задает: наименование программы на входном языке (ключевое слово ИМИТ — имя исход­ ного текста); наименование библиотечной магнитной ленты, на которой находится эта программа (ИМЛИТ — имя ленты с исход­ ным текстом); наименование программы, полученной в результате трансляции (ИМРП — имя результирующей программы); наимено­ вание библиотечной магнитной ленты, на которую она записывается

(ИМЛРП —имя

ленты с результирующей программой).

В заказе на трансляцию может указываться также дополнитель­

ная информация

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

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

конкретного

транслятора. Так,

при трансляции

программ с языка

символиче­

ского кодирования программист может заказать вывод печатного документа в необходимом количестве экземпляров (ЫРСПЧ), а также вывод таблицы соответствия этикеток СИМП и относитель­

ных, числовых

адресов

(ЫТЭПЧ). Заказ

на

трансляцию

СИМП

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

на таком

же бланке, как

и сама

СИМП. Ниже для

примера записан заказ на трансляцию программы из п. 5.7.

СИМП с

наименоЁанием ВОТ предполагается записанной

на ленте ЛСИМП, а в

результате трансляции

на ленту

Л Р П Я З

184

будет записана

 

программа

на языке

 

 

загрузки

 

с

 

наименованием

0 Т Н В П . Требуется

вывод на УПч трех экземпляров программы, а

вывод таблицы этикеток не заказан.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Строка Этикетка

 

коп

 

 

 

 

 

 

 

 

 

 

 

 

Лфесо

 

и

 

 

30№0г

 

S і

 

12, ,

,

,16

і

і ,21

22,

,

,»і

 

,

 

,

,

fW|

і

і

,

ьЮ|

і

і

,

,

 

0

,t,0

и,мхи,т

,

В,0,Т,

,

і

і

і

! .

 

 

і

,

і

і

і

і

і

і

і

і

і

і

і

'

,

 

О

,2,0

# , л ? 7

Л,С

 

 

 

 

 

і

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

О

,3,0

И,Н,Р

,п,

9,т

 

,к,а,п

і

,

і

Іі

і

 

,

,

і

і

і

і

,

і

і

іі і

і

 

0

,4,0

н , М , Л , Р , Л

 

 

 

1

1

1 , 1

 

,

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

I I I

 

 

 

 

 

 

 

 

I 1 1

11

1

 

1 I L 1 1 , 1 1 1 1 1 1 1 1 1

 

0

,5,0

ы,р,с,п,ч

3,

,

, ,

 

J

 

1

 

 

 

 

 

 

 

1- 1

 

\

,

,

 

1

 

 

 

1

1

1

.1 ,

 

1

,

1

1

1

I

1

I 1

1

1

 

0

,6,0

• 4

'

'

1

1

, 1

1

1

1

1

1

 

1

1

1

1 , 1

, 1

1

1

1

1 1

1

1

1 1

 

В процессе перевода

программ

трансляторы

производят их ана­

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

Транслятор символического кодирования, например, полностью печатает строку СИМП, в которой обнаружена ошибка, помечает эту строку символом «*», указывает шифр ошибки и ее краткую характеристику. Транслятор сообщит, в частности, о неправильном количестве адресов в операторе, о неправильно записанной этикет­ ке, о повторении этикетки, о ссылке на несуществующую этикетку и т. д. Примеры печати ошибок транслятором СИМП здесь не при­ водятся.

6.4. СБОРКА ПРОГРАММ

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

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

185

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

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

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

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

Основные области собираемой программы и ее внутренних про­

грамм размещаются последовательно друг

за другом

в

основном

поле.

 

 

 

 

 

 

 

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

рабочем

поле зависит от того, как

внутренние программы

обращаются

друг

к другу. Если программы

независимы, т. е. ни одна

из

них не

яв­

ляется внутренней для другой, то рабочие

области

их

располага­

ются на одном и том же

участке рабочего поля. Поэтому

рабочие

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

в отдельные

рабочие

области. В начале рабочего поля помещаются

рабочие

области

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

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

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

186

них программ так же, как это было при определении места для рабочих областей.

Для выполнения сборки подготавливается заказ. Заказ на сбор­ ку содержит наименование собираемой программы (головной) до сборки (ключевое слово ИМП) и после сборки (ИМСП). В заказе указывается наименование магнитной ленты, на которой обязатель­ но должна быть головная программа (ИМЛП), и магнитной ленты, на которую необходимо поместить собранную программу (ИМЛСП). Если внутренние программы расположены на несколь­ ких магнитных лентах, то в заказе можно указать их наименования и очередность использования их при поиске. Таких лент может быть не более трех (ИМЛД1, ИМЛД2, ИМЛДЗ) . В заказе задается так­ же разрешение на неполную сборку (НЕПЛ) .

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

При сборке уже отлаженных программ

 

можно в

собранной

программе исключить словарь

обозначений

( И С Л 0 Б ) .

 

 

 

 

При сборке можно заменить имя некоторой внутренней про­

граммы (ЗАМИМ). Сборщик

при

этом присоединяет

не ту

про­

грамму, описание которой имелось во внешней

к ней, а ту, имя

ко­

торой указано в заказе. Это полезно в случае корректировки

внут­

ренней программы или замены

ее другой программой.

 

 

 

 

Сборщик печатает протокол сборки. Этот

протокол

содержит

заказ на сборку; список программ магнитной

ленты,

на

которую

была помещена собираемая программа; длины рабочего,

основно­

го и индексного

полей; наименования и длины общих

областей в

собранной программе.

 

 

 

 

 

 

 

 

 

 

Для каждой программы печатаются начальные адреса основ­

ного, рабочего и индексного полей

(относительно

начала

каждого

из этих полей), наименования магнитной ленты, с которой

вызвана

программа, наименования общих

областей

и

списки

внутренних

программ.

 

 

 

 

 

 

 

 

 

 

 

Для собранной программы сообщаются длины основного, рабо­

чего и индексного полей. Суммируя

их, можно

получить

объем

памяти занимаемой программы.

 

 

 

 

 

 

 

 

 

 

На рис. 48 приведен протокол сборки программы ВЫЗПЧ. В за­

казе на сборку

ЛСРП — наименование магнитной

ленты,

на

кото­

рой размещена головная программа. Собранную программу необ­ ходимо разместить с тем же наименованием ВЫЗПЧ на магнитную

ленту

с наименованием С 0 Б Р . Внутренние программы

располо­

жены

на той же ленте ЛСРП или на ленте системы. Далее

напеча­

тан список массивов, уже находящихся на магнитной ленте с наи­ менованием С 0 Б Р . Это массивы РАМ АЛ, РАСПК. Внутренней программой для ВЫЗПЧ является ЫЯЗПЧ, а для ЫЯЗПЧ, в свою очередь, 0ТВМЛ, 0 Ф 0 Р М , ВМЛ и Ы П Ч . Й Ф 0 Р М также является

18>

£С Б О Р Щ И К

ЗАКАЗ НА СБОРКУ

12.10. 1970 205?

ИМП

вьппч

ИМЛП

Л С Р П

ИМЛСП СОБР

СПИСОК МАССИВОВ НА МЛ СОБР

РАМАЛ

РАСПК СБОРКА ПРОГРАММЫ ВЫЗПЧ

ПРОГРАММА

ОСНОВНОЕ

РАБОЧЕЕ

ИНДЕКСНОЕ

 

П О Л Е

ПОЛЕ

ПОЛЕ

ВЫЗПЧ

ооооооо

000000В

000000В

ЫЯЗПЧ

000036В

000000В

000000В

ВМЛ

000753В

000505В

000020В

ОТВМЛ

001251В

000505В

000020В

ЫПЧ

001544В

000505В

000020В

ОФОРМ

002156

000567В

000040В

ДЛИНА

ОСНОВНОГО

ПОЛЯ:

002630В

Д Л И Н А

РАБОЧЕГО

П О Л Я :

000636В

Д Л И Н А

ИНДЕКСНОГО

ПОЛЯ:

000060В

ПРОГРАММА ВЫЗПЧ ПОМЕЩЕНА НА МЛ СОБР Рис. 48. Протокол сборки программы ВЫЗПЧ .

ИМЯ МЛ ОБЩИЕ

ВНУТРЕННИЕ СЕГМЕНТ

ОБЛАСТИ

ПРОГРАММЫ

ЛСРП

ыязпч

ЛСРП

 

 

ОТВМЛ

 

ОФОРМ

 

ВМЛ

***лс

ЫПЧ

 

***лс

 

***лс

ОФОРМ

***лс

 

внутренней программой для ЫПЧ. При сборке она будет включена один раз.

Программы ВЫЗПЧ и ЫЯЗПЧ вызваны с магнитной ленты ЛСРП, а остальные программы с ленты системы (**•* ЛС) . Об­ щих областей в программе нет.

Суммируя длины всех полей, программист может подсчитать общий объем памяти — 003546 ячеек в восьмеричной системе. Отсю­ да следует, что для выполнения программы ВЫЗПЧ требуется четыре листа памяти.

Впротоколе напечатана дата и время сборки.

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

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

Л С £> в

Ряс. 49. Размещение полей при распределении памяти программы. Направление увеличения адресов от А к В.

Для выполнения программы программист может задать участок памяти большего, чем это требуется, размера. Тогда после загруз­ ки программы окажутся свободными некоторые ячейки памяти. Эти ячейки находятся между индексным полем и полем областей (от С до D на рис. 49). Свободными ячейки могут остаться также и неза­ висимо от желания программиста, так как участок для программы имеет длину^ кратную 512, а сумма длин областей программы прак­ тически никогда не совпадает с ним.

Положение свободных ячеек зафиксировано в начальной ячейке участка памяти, выделенного для программы (точка А на рис. 49), которая носит название указателя заполнения памяти. В ней хра­ нятся наибольший адрес индексного поля (разряды 54-20) и наи­ меньший адрес поля областей (разряды 21-т-Зб), а разряды О-М —

нулевые. В обозначениях рис. 49 указатель

содержит

адреса ячеек

С и D.

 

 

 

 

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

памяти и использовать весь участок CD или его

часть по своему

усмотрению. Занимая какие-либо ячейки участка

в динамике вы­

полнения или освобождая

их в дальнейшем, программа должна

соответствующим образом

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

указатель

заполнения

памяти.

 

 

 

 

189

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