
книги / Справочник проектировщика систем автоматизации управления производством
..pdf1)(^ i)-(A :2) = j o t
2)ИЗН; 3), 5)
3)(Хг) X (Xj) => См
4)БП; 6), Хмк
5)(A'2)X (X 2) Z=>XMK
6)С10П
Команда 1) — предварительная, после нее происходит разветвление. Команда 2) — исполнительная. Если Х г > Х2, то управление передается команде 3), в про тивном случае — команде 5).
Составление циклических программ
Циклическими называются вычислительные процессы, в которых отдельные участки вычислении повторяются многократно. Такие задачи решаются на ЭВМ при помощи циклических программ. Различаются следующие три типа циклов:
1) арифметические циклы — циклы с задан ным числом повторений;
2) итерационные циклы — циклы, число по вторений которых заранее неизвестно, а опреде
ляется |
самой ЭВМ в зависимости от той точно |
ъ |
||||
сти, с |
которой нужно вычислить искомые вели |
I |
||||
чины; |
|
|
|
|
|
|
3) арифметические циклы с переадресацией |
! § |
|||||
и восстановлением. |
|
|
||||
|
|
|
||||
Циклические |
программы |
должны |
быть са- |
t& |
||
мовосстаиавливающимися, т. е. если выполне |
S I |
|||||
ние циклической |
программы прекратить на не |
О es |
||||
которой команде, то всегда можно выполнять |
asc: |
|||||
эту программу с самого начала без нового ее |
|
|||||
ввода в ЭВМ с |
перфокарт или перфоленты. |
|
||||
• Структура |
циклических программ с цикла |
|
||||
ми первых двух видов представлена на'рис. |
|
|||||
VIII.3. |
|
|
|
|
|
Pl|c- VIII.3. Структура циклической |
Программы циклов с заданным числом по- |
||||||
втореннй. При решении экономических, учетно |
программы |
|||||
статистических и других задач число повторе |
|
|||||
ний, как правило, известно |
заранее. |
Например, при составлении разработочных |
||||
таблиц известно количество исходных документов, |
которью подвергаются статисти |
ческой обработке по формулам. Для управления повторениями циклов в цикли ческих программах используются счетчики циклов.
N
Составим программу вычисления суммы 5 = ^ "(2t + 1)345’* i=0
Программа 3
1) Oz=>Sï
g . J подготовка цикла (восстановление)
3)(2) X (0 =$ См л
4) |
(См)-|-(1) |
и |
> вычислительная (рабочая) часть цикла |
5) |
(и) х (и) =$ и |
) |
6) |
(1)/(!!)=> И |
Л |
|
7) |
(w) + (5 ) = > 5 |
> |
вычислительная (рабочая) часть цикла |
8 ) |
(1) + < 0 = Я |
J |
|
9) (£ )-(Л 0 = > С л >| |
|
||
10) |
ИЗН; И), 3) |
> |
проверка условия окончания цикла |
11) |
стоп |
J |
|
Рабочая часть программы 3, выполняемая N раз, состоит из команд 3)—8), со ставлена для вычисления следующего /-го члена суммы и прибавления его к уже на копленной сумме первых (/ — 1) членов. Команды 1) и 2) — это команды восстанов ления. Команда 1) устанавливает начальное содержимое ячейки 5 равным 0. По ко манде 2) происходит установка начального значения i = 0. Команда 8) служит для получения следующего значения Zиз предыдущего. Для проверки окончания цикла в программу 3 введены команды 9) и 10). По этим командам производится сравнение текущего значения Zс N. Если Z< N, то выполняется переход к команде 3, а если i ^ N — к — команде И) окончания цикла вычисления. Ячейка / — счетчик числа циклов.
Программы итерационных циклов. Составить программу вычисления значения
квадратного корня х = }/Га с точностью е > 0 |
(например, в = |
ÎO-5). При положитель- |
|||
ном а значение |
величины х будем находить |
по известной |
итерационной формуле: |
||
X i + i = |
~ j ( x i + a / X i)> |
|
|
|
|
начальное |
значение х0 = |
I. |
|
|
|
Для составления программы исходную формулу удобно представить в виде: |
|||||
J б|Ч х= у |
( . a / X i - X i ) |
; |
|
|
I A'i+i = *i + ô;+i.
Итерационный процесс прекращаем, когда выполнится условие
|ô«+il=s£e.
|
|
|
|
|
|
Программа 4 |
|
1) (l)rr> # |
} |
подготовка |
цикла (восстановление) |
||||
2) ( a ) / ( R ) = $ C M |
л |
|
|
||||
3) |
(См)—(R)Z^ C M |
> вычислительная часть цикла |
|||||
4) |
(См) х |
(0,5) z=> ôi+1 |
) |
|
|
||
5) |
(ô/^O j — i (e) Jz=> |
1 |
|
|
|||
6) |
ИЗН* |
7) |
9) |
|
J |
пРовеРка Условия |
окончания цикла |
7) |
(б/+3)+ |
(/?) |
См } |
вычислительная часть |
цикла |
8)БП; 2), R
9)стоп
Команда 1) засылает в рабочую ячейку R начальное приближение х0 = 1. Команды 2), 3), 4) вычисляют значение ô ^ . Команды 5), 6) проверяют условие окончания цикла. Если е не превышает абсолютной величины ô/fl, следует переход к команде 7), кото рая вычисляет очередное приближение к искомой величине х , после чего следует команда 8) безусловного перехода к команде 2) на повторение цикла с засылкой оче редного значения х-\- 1 в рабочую ячейку R. В противном случае следует переход
к команде останова 9) и в ячейке R получается искомое значение х = У~а*
Программы циклов с переадресацией и восстанов лением. Если в циклическом вычислительном процессе используются переменные с индексами, то соответст вующие циклические программы будут иметь команды с переменными адресами. Структура циклической про граммы с переадресацией и восстановлением показа на на рис. VIII.4.
Перечислим основные части циклической програм мы с переадресацией и восстановлением.
1. Начальная часть программы (восстановление) выполняет те же функции, что и в арифметических и итерационных циклах. Кроме того, она восстанавли вает первоначальный вид переменных команд цикла. Для этого программист в отдельных ячейках заготов ляет дубликаты переменных команд первоначального вида, которые в начале программы засылаются в со ответствующие ячейки оперативной памяти. Именно эта часть программы делает ее самовосстанавливающейся поскольку она восстанавливает первоначальный вид как переменных команд программы, так и необходимых рабочих ячеек.
2.Вычислительная (рабочая) часть цикла, отдель ные команды которой являются переменными, обеспе чивает вычисление соответствующих величин.
3.Команды моднфикационной части цикла выпол няют переадресацию переменных команд вычислитель ной части цикла с помощью команд переадресации, для
чего используются константы переадресации. |
Рис. VIII.4. Структура |
цик |
||
4. Проверка окончания цикла осуществляется ли |
лической программы с |
пе |
||
бо с помощью |
счетчика, |
либо с помощью эталонных |
реадресацией и восстановле |
|
нием |
|
|||
команд. |
циклы с |
переадресацией и восстановле |
|
|
Используя |
|
|
||
нием, запишем |
программу решения следующей задачи: в ячейках с а + О п о а + л |
находятся числа. Выбрать из них максимальные по модулю и записать в ячейку ам.
|
|
|
|
|
|
|
Программа 5 |
|
1) |
1 2 ) = * 4) |
|
засылка (восстановленне) начального вида переменных команд |
|||||
2) |
13) |
6) } |
||||||
3) |
(а + |
0) z=5>R0 |
|
|
|
|
||
4) |
|(/?0) | - | < в |
+ •11>* |
I |
С м |
рабочая часть цикла |
|||
5) |
ИЗН; 7), |
6) |
|
|
|
|||
|
|
|
|
|
||||
6) |
(я + |
1)* = * /?0 |
|
|
|
|
||
7) |
СФ; |
4). 15) = * 4 |
} |
переадресация |
переменных команд |
|||
8) |
ВФ; |
6), |
16)=* 6 |
|||||
0) |
| (См) | _ |
114) | => |
См | |
проверка |
окончания цикла (счетчик цикла) |
|||
10) |
ИН; |
4), |
11) |
|
|
|
|
|
11) |
стоп |
|
|
|
|
|
|
|
12) |
|№ а ) |- К а + 1 ) |= * С л | |
начальный вид переменных команд |
||||||
13) |
(а + 1 )= > /? 0 |
|
|
|
|
|||
14) |
(а-f-n + l) |
|
} |
константа управления циклом |
15)0, 1, (П
16)1 0 J константы переадресации
Пр и м е ч а н и е . * — обозначение модифицируемых адресов команд.

При написании программы рекомендуется разбивать ее на блоки, которые объе диняются собирающей программой в единую, программу. Блоки предназначены для выполнения вычислительных и логических операции, подобно тому, как показано выше для блок-схемы алгоритма (см. гл. VII, п. 1).
Преимущества записи программы в виде блоков:
1)каждый блок программируется отдельно;
2)блочная структура программы облегчает ее отладку, увеличивает гибкость программы;
3)появляется возможность при небольших изменениях задания ограничиться переделкой одного или нескольких блоков, не затрагивая остальных частей прог раммы.
Кодировка программы, записанной в содержательных обозначениях
Перед вводом в ЭВМ производится кодирование программы — замена содержа тельной записи каждой команды ее машинным кодом. Программа в содержательных обозначениях и программа в кодированном виде записываются на одном бланке, как показано в табл. VI11Л применительно к ЭВМ «Минск-32».
При кодировании программы требуется распределить память ЭВМ для хранения программы, исходных данных, промежуточных и конечных результатов вычислений. С этой целью удобно использовать специальный бланк с нанесенными на нем номерами ячеек оперативной памяти. Часть такого бланка, заполненная применительно к про грамме, представленной в табл. VIII. 1, показана в табл. VIII.2.
|
|
|
|
|
|
|
Т а б л и ц а |
VIII.1 |
|
|
|
Программа для ЭВМ «Минск-32». |
|
|
|
||||
Шифр задачи С-3. |
|
Всего листов |
1. |
|
Лист Ni 1 |
||||
Номер |
Код операции |
Индекс — |
Адреса |
|
Пояснения |
|
|||
|
|
|
|
|
|
||||
ячейки |
знак |
к оп |
адрес |
А 1 |
а 2 |
|
|
||
|
|
|
|
|
|||||
1200 |
— |
10 |
00 |
1301 |
1400 |
1)Ч 1)= > Я |
|
||
I |
|
45 |
00 |
1400 |
1300 |
2) |
( a ) / { R ) z = $ См |
|
|
2 |
|
27 |
00 |
1400 |
0000 |
3) |
(См) — ( R ) г^См |
||
3 |
|
36 |
00 |
1302 |
1401 |
4) |
(См) X (0,5)=>ô.+1 |
||
4 |
|
55 |
00 |
1303 |
1401 |
5) |
1(ôi+i) 1— 1<е)1 =5>См |
||
5 |
— |
32 |
00' |
1206 |
1210 |
6) |
ИЗН; 7), 9) |
|
|
6 |
|
15 |
00 |
1400 |
1401 |
7) |
(ô/ + l) + |
См |
|
7 |
— |
30 |
00 |
1201 |
1400 |
||||
3) БП; 2). R |
|
||||||||
10 |
— |
00 |
00 |
0000 |
оооо |
9) |
СТОП |
|
|
|
|
|
|
|
|
|
Т а б л и ц а |
VIII.2 |
|
|
|
Распределение памяти ЭВМ «Минск-32» для задачи С-3 |
|
||||||
|
|
|
Распределение памяти |
|
|
|
|
||
1200 |
1201 |
1202 |
1203 |
1204 |
1205 |
1206 |
1207 |
12Ï0 |
|
|
|
|
Программа |
|
|
|
|
||
1300 |
1301 |
1302 |
1303., |
1304 |
1305 |
1306 |
|
|
|
а |
1 |
0,5 |
е = 1Ü-» |
|
|
|
|
|
|
1400 |
Mill- |
1102 |
1403 |
1404 |
1405 |
|
|
|
|
R |
6i+i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ АССЕМБЛЕР
Большой объем списка машинных команд для программ, представляющих прак тический интерес при использовании ручного программирования непосредственно в машинных кодах, при котором записываются восьмеричные коды команд и адреса ячеек памяти, служит источником большого числа ошибок при программировании.
Для устранения этих недостатков был разработан язык программирования, в ко тором код операции и адреса операторов записываются в буквенном виде на основе мнемонических правил.
Очевидно, что программа, записанная подобным языком, не может непосредст венно выполняться ЭВМ из-за необходимости предварительной операции ее перевода на машинный язык (двоичный код). Такую операцию можно механизировать, исполь зуя ту же ЭВМ.
Программа, осуществляющая перевод программ, записанных на символическом языке (в мнемонических обозначениях, в рабочую программу (в машинных кодах) называется АССЕМБЛЕР [68]. Система команд ЭВМ, представленных с помощью мнемонических символов, образует язык АССЕМБЛЕР. Одной команде, записанной на языке АССЕМБЛЕР, соответствует одна команда на машинном языке. Кроме за мены мнемокоманды его двоичным эквивалентом АССЕМБЛЕР присваивает абсо лютные адреса в памяти командам и данным программы. Это в значительной степени упрощает операции программирования, устраняет многочисленные источники оши бок и обеспечивает автоматическое распределение ячеек памяти для программы и данных.
Программы на языке АССЕМБЛЕР ЕС ЭВМ состоят из четырех типов предло жений.
1.Машинные команды с указанием мнемокода операций. Каждое предложение этого типа порождает в рабочей программе одну команду.
2.Предложения управления трансляцией. Эти предложения имеют в поле кода операции специальный мнемонический код и в объектной программе никаких команд не порождает. Их используют для определения точки памяти, начиная с которой помещаются команды для выделения пространства под рабочие области и области ввода-вывода, для занесения в рабочую программу необходимых констант и т. д.
3.Макрокоманды. Предложения этого типа представляют собой псевдокоманды, которые вызывают в рабочую программу ряд действительных команд. Макрокоманды используются в основном для организации ввода-вывода.
4.Комментарии (отмечаются звездочкой в колонке 1 бланка программы). Пред ложения этого типа не обрабатываются, но печатаются в листинге (распечатке) про граммы.
Машинные команды
На рис. VIII.5 представлены форматы команд ЕС ЭВМ. Система машинных команд состоит из 143 команд.
Все команды формата RR (Регистр — Регистр) (за исключением команд SPM (установить маску программы) и 5УС (обращение к супервизору) имеют вид
Имя OP R lt Т?2,
Ые ОР — мнемокод операции; Rlf R2 — адреса регистров операндов (от 0 до 15 вклю чительно). «Имя» — это метка команды, которая не включается в ее формат. Метка может отсутствовать.
Команда SPM записывается так: Имя SPM Ri
команда S V C —* Имя SVC /,
где / — абсолютное выражение со значением от 0 до 155 включительно.
Все команды формата R X (Регистр — Индексируемая память) имеют вид:
Имя OP R\i D2 (X2t ^ 2)»
где Ri — адрес регистра, содержащего первый операнд; D2 (Х 2, В2) определяют вто рой операнд (X индексный регистр, В — базовый регистр, D — смещение).
Первое полуслово
|
Вайт 1 | Вайт 2 |
Второе полуслово |
Третье полуслово |
|
||||||||
|
|
|
|
|
|
|
|
|||||
\ |
Регистр |
1 |
Регистр операнда |
|
|
|
|
|||||
| |
операнда |
|
2 |
[ |
|
|
|
|
|
|
||
|
|
OP |
Pi |
R2 |
|
|
|
|
|
|
Формат RR |
|
|
0 |
78 |
1112 |
15 |
|
|
|
|
|
( Регистр-Регистр) |
||
|
|
|
|
|
|
|
||||||
I |
Регистр |
1 |
|
|
I |
|
Адрес |
|
|
|
|
|
|
операнда |
|
|
I |
операнда 2 |
|
|
|
Формат RX |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OP |
Ri |
x 2 |
В2 |
Пг |
|
|
|
(Регистр - Индексируемая |
||
|
|
78 |
1112 15 16 |
7920 |
J7 |
|
|
память) |
||||
|
|
|
|
|
||||||||
|
|
Регистр |
Регистр |
Адрес |
|
|
|
|
||||
|
|
операнда операнда |
операнда |
|
|
|
|
|||||
|
|
|
7 |
J |
! |
|
2 |
|
|
|
|
|
|
OP |
Pt |
Рз |
Вг |
Ъ2 |
|
|
|
Формат R5 |
|||
|
31 |
|
|
( Регистр - Память) |
||||||||
I0 |
7 8 |
1112 1516 |
1920 |
|
|
|||||||
|
|
|
||||||||||
|
Непосредственный |
|
Адрес. |
|
|
|
|
|||||
|
|
|
|
|
|
---------*---------\ |
|
|
Формат S I |
|||
|
|
OP |
h |
|
|
èf |
Di |
|
|
|
СНепосредственный операнд- |
|
|
|
|
|
|
|
|
Память) |
|||||
0 |
7 8 |
|
|
15 te т а |
л |
|
|
|||||
|
|
|
|
|
||||||||
I |
Длина |
1 |
|
Адрес |
|
|
Адрес |
|
||||
|
|
операндаоперанда |
|
операнда |
|
|
операнда |
|
||||
|
|
|
1 |
2 |
|
|
1 |
|
|
2 |
|
|
|
OP |
Lf |
L2 |
BJ |
h |
|
в 2 |
в 2 |
Формат SS |
|||
|
|
78 |
1112 1516 |
1920 |
31 |
|
U7 |
(Память - Память) |
||||
|
|
|
|
|||||||||
|
|
|
|
|
|
|
Рис. VIII.5. Форматы команд ЕС ЭВМ: |
|||||
О Р |
— код операции; |
R u |
R 2 R 3 — адреса регистров, содержащих операнды; X — адрес ре |
|||||||||
гистра индекса; L и |
L г — спецификаторы длины операндов; |
/, — непосредственный операнд; |
||||||||||
В и |
& г |
— адреса регистров базы; D lt |
D 2 — абсолютные выражения, определяющие смещение |
|||||||||
|
Формирование исполнительного адреса Е основной памяти: |
|||||||||||
|
E = D + (B) + (X). |
|
|
|
|
|
||||||
Здесь |
(X), (В) — содержимое соответствующих регистров. |
|||||||||||
|
Команды условных переходов: ВХН (переход по индексу больше), BXLE (переход |
|||||||||||
по индексу меньше или равно), LM (загрузка групповая) и STM (запись в память груп |
||||||||||||
повая) |
имеют вид: |
|
|
|
|
|
|
|
||||
|
Имя OP Rlt R3, Dn (В2) |
|
|
|
|
|||||||
или |
|
|
|
|
|
|
|
|
|
|
|
|
|
Имя OP /?lf |
R3, So. |
|
|
|
|
В командах сдвига R3 не используется, поэтому они записываются следующим образом:
Имя ОР /?!, D, (£о);
Имя ОР /?lt S*.
Команды формата RS имеют вид:
Имя ОР Rit R3t Do {В2)
Команды формата SI пишутся так:
Имя OP D1 (В{), / 2; Имя OP Si, / 2,
где /2 — непосредственный операнд.
Команды формата SS, в которых указываются длины двух операндов, имеют вид:
Имя OP |
D1 (Lit Вг), |
D2(LO, В о ) ; |
||
Имя |
OP |
|
Вх), |
Во(В2); |
Имя |
OP |
Sx {Lx), |
Do (В2, B2j; |
|
Имя |
OP |
Sx {Li), |
So (В2), |
где Blt Во — длины операндов.
Термы и выражения. Для идентификации команд и областей данных используются символические имена, состоящие из 1—8 символов, записываемые по обычным пра вилам алгоритмических языков (например, АЛГОЛ-60, ФОРТРАН).
Имя определено, если оно встречается в поле метки предложения. Рассматриваются термы, в качестве которых могут быть имя, литерял или само-
определенный терм. Литерал — это константа, непосредственно перед которой стоит знак = , например: = X 'F I'\ = С 9 Х =В '01Г .
Самоопределенный терм — это такой терм, величина которого заключена в нем самом. Длина самоопределенных термов нс более трех байтов. Примеры:
19 |
0 |
4096 — десятичные самоопределенные термы; |
À"8' |
X4E57DF' — шестнадцатеричные самоопределенные термы (каждые две |
шестнадцатеричные цифры составляют один байт); £'00101110'— двоичный самоопределенный терм; С'9"6' — символьный самоопределенный терм.
Самоопределенные термы используются для указания адресов, номеров регистров и т. д.
Выражение— это комбинация термов, связанных знаками арифметических опе раций. Например, 7* (KS — РЕ).
Константы. В рабочую программу константы вводятся с помощью’ предложения управления трансляцией DC, имеющего формат
Имя DC операнды Примеры констант:
С1EXAMPLE NO. 2';
DC 2CL5'ABCDEF' — определены две константы каждая длиной по 6 байтов, т. е. в памяти будет записано ABCDEFABCDEF\
DC 3XL2'А7' — определены три константы длиной по 2 байта каждая, в памяти будет записано 00Л700Л700А7.
Имеются еще константы типов В, P, Z, H, F, Е, D — зависящие от формы пред ставления чисел.
^Особую группу составляют адресные константы, которые могут быть одного из типов А, V, К, S.
Например, предложение DCA (* + 4 , * +20) определяет константы 0000 0404 и 0000 0424 при условии, что они располагаются, начиная с 0000 0400 и 0000 0404.
Определение данных. Предложение Имя DS операнды
определяет имя области для ввода-вывода, рабочей области и т. п., не заботясь о пер воначальном их содержимом.
Например:
ABC DS F — резервирование 4 байтов;
A CG DS 7Н — резервирование 14 байтов;
ARD DS CL250 — резервирование 250 байтов;
BRT DS С'86&&60' — резервирование 5 байтов.
Предложения управления трансляцией
1. Эквивалентность Имя EQU "выражение'
20S
Вычисляется выражение и полученное значение присваивается имени, заданному в поле метки, например: ADON EQU А В С + FRG.
Следующие четыре предложения управляют форматом печатного документа (ли стинга) АССЕМБЛЕРА.
2. Заголовок
Имя TITLE 'заголовок'
Содержимое поля операнда (до 100 символов) печатается в заголовке каждой страницы листинга.
3.Новая страница
.Имя EJECT пробел
— следующая строка печатается, начиная с новой страницы.
4.Пропуск строк
Пробел SPACE пробел или десятичное целое (количество пробелов) 5. Режим печати
Пробел PRINT от одного до трех операндов. Операнды выбираются из следующего списка:
ON (печатать листинг программы); OFF (листинг не печатается); GEN (печатаются все команды, порождаемые макрокомандами); NOGEN (печатаются сами макрокоманд ды, а порождаемые ими команды не печатаются); DATA (печать всех констант); NOD АТА (печать только первой константы).
Существует девять предложении управления программой: 1) перфорация на карту данных из поля операндов Пробел PUNCH 'данные';
2)воспроизведение очередной входной карты без изменения в рабочей программе Пробел REPRO пробел;
3)проверка порядка следования входных карт
Пробел ISEQ пробел или L, R; (L — номер левой колонки поля карты, R — правой); 4) управление форматом входных карт
Пробел ICTL 1, 71, 16
(1 — колонка, с которой начинается предложение исходной программы; 71 — колон ка конца предложения; 16 — колонка продолжения);
5)копирование данных из системной библиотеки в исходную программу, имя которых указано в поле операнда
Пробел СОРУ имя;
6)информация АССЕМБЛЕРУ о том, что больше нет команд, подлежащих тран слированию
Пробел END пробел или перемещаемое выражение;
7)задание нового значения счетчику адреса
Пробел ORG пробел или перемещаемое выражение;
8) размещение массива литералов, начиная с первой доступной границы двойного ■слова
Имя LTORG пробел;
9) «условное нет операции» Пробел CNOP bt w,
где b, w = 0,4; 0,8; 2,4; 2,8; 4,8; 6,8.
Пример: пусть содержимое счетчика адреса равно 8194, тогда предложение CNOP 4,8 вызовет запоминание числа 0700 в поле 8194—5, а содержимое счетчика адреса станет равным 8196.
Секционирование. Для минимизации времени трансляции больших и сложных программ последние делятся на секции, причем каждая секция транслируется от дельно. Загрузку в память отдельных секций программы и объединение их для выт полнеиия осуществляет редактор связей (LINKAGE EDITOR).
Для целей секционирования программ используются следующие предложения: 1) - Имя START пробел или самоопределенный терм
—операнд определяет начальную точку программы или секции программы; если операнд опущен, АССЕМБЛЕР считает, что программа или программная секция начинается с адреса 0;
2) Имя CSECT пробел
—определяет программную секцию; если в поле метки ничего нет, секция назы вается непоименованной;
Имя DSECT пробел
— определяет фиктивную секцию; 3) USINGX регистр
— обращение к предложению фиктивной секции; X — имя DSECT.
4)Пробел СОМ пробел
—определение непоименованной общей секции.
5) Пробел E N TR Y |
, vn; |
пробел E X T R N |
, vni |
где V[ — перемещаемое имя.
Эти предложения обеспечивают возможность обращения из одних сегментов про граммы в другие.
|
Т а б л и ц а VII 1.3 |
Пример программы на языке АССЕМБЛЕРа |
|
Ком’анды на языке АССЕМБЛЕРа |
Пояснения |
|
1 C T L |
1, |
71, |
16 |
|
|
S T A R T |
19330 |
|||
50 |
B A L R |
12.0 |
|
||
|
U S I N G * , |
12 |
|
||
5 1 |
D C |
X'B209' |
|
||
|
D C |
S |
( N M A |
X ) |
|
|
В С |
S, S2 |
|
|
|
|
D C |
X'BFOO' |
Ввод
Определяет регистр базы (№ 12) Управление трансляцией
Ввод к
5 2 |
P A C K |
K N , |
N M A X |
Упаковка |
N |
|||
|
P A |
C K |
R , J |
|
Упаковка |
J |
||
|
A P |
|
R , |
O N E |
|
*4-> |
|
|
|
M |
V C |
B, O N E |
В |
= 1 |
|
||
|
M V C N , O N N |
N = 1 |
|
|||||
5 3 |
D C |
|
X* В DO 10000' |
Ввод константы |
||||
5 4 |
Z A P |
M P Y , |
В |
Сложение с очисткой |
||||
|
M P |
M P Y , |
R |
В |
X R |
цифр |
||
|
M V N |
M P Y |
4-6 (1). А1РУ+ 9 |
Пересылка |
||||
|
AI V C |
В, МРУ -f 2 |
| Пересылка сим |
|||||
|
AI VC L I N E , |
E D T |
||||||
|
E D |
|
L I N E , |
N |
Редактирование |
|||
|
A P |
|
N , |
O N N |
N |
4~ 1 |
|
|
|
C P |
|
N , |
K N |
|
N |
: K N — сравнение |
|
|
B C |
|
2. S I |
|
Условный |
переход к 51 |
||
|
D C |
|
X ' B B W ' |
|
Ввод констант |
|||
|
D C |
|
S |
( L I N E ) |
||||
|
B C |
|
8, |
54 |
|
Условный |
переход 54 |
|
|
B C |
|
15, 53 |
|
Безусловный переход к 53 |
|||
E D T |
D C |
A" 4020202022402020214B X |
|
|
|
|||
|
|
202020202020' |
|
|
|
|||
O N N |
D C P L 2 ' \ ' |
|
|
|
|
|||
O N E |
D C |
P L b ' 1000000' |
|
|
|
|||
N M A X |
D S |
C L * |
|
|
Управление трансляцией для отведения |
|||
I |
D S |
CL6 |
|
|||||
|
D S |
CL3 |
|
|
памяти под рабочие области н кон |
|||
L I N E |
D S |
CL16 |
|
|
станты |
|
||
N |
D S |
P L 2 |
|
|
|
|
|
|
B |
D S |
P L b |
|
|
|
|
|
|
K N |
D S |
P L 2 |
|
|
|
|
|
|
R |
D S |
P L b |
|
|
|
|
|
|
M P Y |
D S |
C L 10 |
|
|
|
|
E N D S O Конец
Пример программирования на языке |
АССЕМБЛЕРа. |
|
Вычислить значение функ |
||
ции В для заданных значений /, |
N; В = |
(1 + I)N, где /, |
N — целые числа; началь |
||
ные значения |
/0 = 1, N0 = 1. |
В для |
N = 1,2, |
N —1. |
|
Считать и |
печатать значение |