
книги из ГПНТБ / Кушнерев Н.Т. Программирование для ЭВМ Минск-32
.pdfГ л а в а 3. ОСНОВНЫЕ ОПЕРАТОРЫ
3.1. ВЫПОЛНЕНИЕ КОМАНДЫ
Прежде чем описывать назначение, правила записи и выполне ние отдельных операторов-команд машины, рассмотрим в общих
чертах процесс выполнения типовой команды машины. |
|
|
|||||
Процесс .выполнения |
типовой команды |
состоит |
из |
обработки |
|||
команды |
и реализации |
операции, указанной |
в ней. |
Обработка |
|||
команды |
в машине состоит из чтения кода команды |
из |
ячейки |
||||
МОЗУ, индексирования |
адресов,"базирования |
адресов |
и |
чтения |
|||
операндов. Адрес очередной выполняемой |
команды |
(К) |
находится |
в С-чАК. Перед выборкой команды содержимое сумматора пересы лается'в регистр Р2, а сумматор очищается. Составные части про читанной команды распределяются между регистрами следующим образом. Первый и второй относительные адреса команды ai и аг записываются соответственно в разряды 104-20 и разряды 264-36 сумматора и находятся там до конца обработки команды. Номер индекса і и номера базисов бі и бг записываются соответственно в регистр номера индекса и регистры номеров базисов. Код операции записывается в регистр дешифратора операций и сохраняется там до конца выполнения команды. Если адрес команды К выходит за
диапазон |
допустимых адресов, т. е. меньше АЗН или больше |
А З В + 777, |
то устанавливается в единицу указатель ЗЩ. |
После чтения команды анализируются разряды номера индек са. Ненулевое значение і вызывает прибавление содержимого ячей ки индекса (ячейки с адресом Аі = АБИ + і) к содержимому сумма тора. Этот процесс носит название индексирования. С помощью индексирования можно изменить (иногда говорят «модифициро вать») адреса, указанные в команде. Это используется, например, при последовательном переборе ячеек МОЗУ. В соответствии с на значением ячейка МОЗУ, используемая для хранения индексов, должна содержать две независимые друг отдруга константы Ді(Аї) и Аг(А/) для изменения первого и второго адресов коман ды в разрядах 54-20 и 214-36 соответственно (рис. 33). Будем на зывать их константами индексирования. При индексировании бло кируются переносы единиц из разрядов 21 и 5, если они возникают.
. Если адрес A i выходит за диапазон допустимых адресвв, то устанавливается в единицу указатель ЗЩ.
60
Значение некоторых разрядов отдельных команд точно зафик сировано, что указывается в описании этих команд. В таких слу чаях константа индексирования должна быть выбрана программи стом так, чтобы после индексирования значения таких разрядов совпадали с зафиксированными. Индексирование не производится, если 1 = 0.
* s |
|
|
|
го г.' |
зв |
//(/лейне |
Кш/птш |
андеяссро^ам/г |
|
|
|
"розрядіГТ' |
первого |
адреса - |
й,(ДІ)< |
второго адресе |
-аг( |
Рис. 33. Структура ячейки индекса.
После индексирования или сразу после чтения кода команды, если индексирование не производилось, происходит базирование адресов команды. Базирование заключается в прибавлении к на ходящимся в сумматоре адресам базисных адресов. Положение базисного адреса в МОЗУ определяется номером базиса бі или б2 , заданного в коде команды. Соответствие значений бі (62) и базис ных адресов, расположенных в ячейках уровня, на котором выпол няется программа, приведено на рис. 34. Если номера базисов обо их адресов команды совпадают или соответствуют базисным ад ресам, расположенным в одной ячейке уровня, то оба адреса бази руются одновременно. В других случаях адреса базируются после довательно. Появляющиеся при базировании переносы из двадцать первого и пятого разрядов блокируются.
0 |
*5 |
202! |
38, |
|
нулевые |
АБ1 |
• |
АВО |
|
разряды |
||||
|
|
|
||
нулевые |
АвЗ |
|
лег |
|
разряды |
|
|||
|
|
|
||
|
WSJ-* |
|
S,(f3)-2 |
Рис. 34. Соответствие разрядов ячеек уровня и номеров базисов.
После базирования обоих адресов содержимое СчАК увеличи вается на единицу.
Адреса, полученные после индексирования и базирования, явля ются истинными (абсолютными) адресами операндов. Таким обра
зом, А и — абсолютный адрес операнда |
определяется как |
|
А к = |
a K +A K (Ai) - r - (6 K ), |
|
где к=1,2 — номер адреса |
операнда в |
команде, |
(бк) — значение базисного адреса.
Далее, в зависимости от вида команды, производится чтение одного или двух операндов из ячеек, адреса которых были получе ны при обработке команды. Выбранные операнды распределяются в регистрах арифметического устройства, где над ними произво дится выполнение операции. При выборке операндов их адреса проверяются на выход из допустимого диапазона адресов, и в этом случае устанавливается в единицу указатель ЗЩ.
Выполнение операции либо производится за один или несколь ко тактов арифметического устройства, либо совмещается с так тами чтения операндов или записи результата. При выполнении операции устанавливаются в нуль или единицу специальные инди каторы «Нуль» (НУЛЬ) и «Минус» (МН), которые могут быть использованы последующими командами.
Индикатор НУЛЬ устанавливается в единицу, если результа том операции является код, содержащий нули в разрядах с перво го по тридцать шестой включительно при произвольном значении нулевого разряда. В других случаях этот индикатор устанавлива ется в нуль.
Состояние индикатора МН совпадает со значением нулевого разряда результата операции.
Индикаторы НУЛЬ и МН устанавливаются в единицу одновре менно, если выполнены оба условия.
После выполнения результат записывается или не записывает ся в МОЗУ, но всегда остается на сумматоре и может быть исполь зован следующей командой программы. Если адрес ячейки, куда
должна |
производиться запись, выходит |
за допустимый |
диапазон, |
|
то устанавливается в единицу указатель |
ЗЩ, а запись |
в ячейку с |
||
этим адресом |
не производится. |
|
|
|
При |
выполнении команды какое-либо из внешних |
устройств |
||
может |
подать |
запрос на приостановку. Приостановка производит |
ся после чтения команды, индексирования, базирования, выборки операнда, любого такта операции или записи результата путем блокировки дальнейших действий по выполнению команды. По окончании приостановки продолжается выполнение приостанов ленной команды.
Время выполнения команды складывается из времени чтения команды (5 мксек), индексирования (5 мксек), базирования (5 или 10 мксек), чтения операнда или записи результата (5 мксек для каждого обращения к МОЗУ) и времени выполнения операции. Последнее зависит от вида операции и структуры операндов. Напри мер, для большинства операций с одним нулевым операндом отсут ствует такт операции. Время выполнения арифметических опера ций с плавающей запятой зависит от количества сдвигов мантиссы
при выравнивании,порядков или |
при нормализации |
результата. |
В связиіс этим в дальнейшем при |
описании команд |
указывается |
минимальное и максимальное время, но без учета времени индек сирования и при условии, что базирование адресов производится последовательно.
62
3.2. КЛАССИФИКАЦИЯ ОПЕРАТОРОВ
Основные операторы, используемые для записи команд при со ставлении программ, можно разделить на группы, соответствую щие командам машины, реализующим действия:
над логическими константами; над двоичными числами с фиксированной запятой;
над двоичными числами с плавающей запятой; над десятичными числами; передач управления; над индексами; над символами;
над содержимым ячеек уровня; вспомогательные.
Большинство операторов над логическими константами и чис лами с фиксированной и плавающей запятой имеет четыре разно видности. Если обозначить произвольную логическую или арифме
тическую |
операцию |
символом |
|
« * |
», |
то |
сущность разновидности |
|||
состоит в следующем: |
|
|
|
|
|
|
|
|||
Номер |
|
Запись оператор» |
|
|
Машинный код |
Выполнение оператора |
||||
разновидности |
|
на ЯСК |
|
|
команды |
|||||
|
|
|
|
|||||||
0 |
«3 |
[:И;] |
B l ; |
В2 |
і |
*° |
1 тс |
« |
|
(В2)*(В1)—• В2 |
|
|
|
|
|
1 |
^ | t 0 i a i 6 2 a j |
|
|||
1 |
. |
[:И;] |
B l ; |
В2 |
{ *5 } і б і а і б 2 а * |
|
(В2).(В1) |
|||
|
|
|
|
|
|
|
||||
2 |
. В |
[:И;1 |
B l ; |
В2 |
( |
*6 } г б 1 а ' б 2а« |
|
( С м ) . ( В І ) — В 2 |
||
|
|
|
|
|
|
|||||
3 |
*Р |
[:И;] |
В1 |
|
{ |
* J }/б,а,00 |
|
(См)*(В1) |
Здесь и в дальнейшем фигурные скобки { }, содержащие не сколько обозначений, записанных в столбик, означают, что исполь зуется одно из них. Квадратные скобки [ ], как и раньше, означа ют, что информация, содержащаяся в них, не является обязатель ной.
Третья разновидность арифметических и логических операто ров не использует второго адреса, поэтому при записи на ЯСК он отсутствует, а в машинном коде команды на месте бг и &2 стоят нули. При выполнении такой команды второй адрес не базируется.
При описании каждого оператора будет приводиться его сим волическая запись, машинный эквивалент, процесс и время выпол нения оператора, а для некоторых операторов — их назначение и место записи в программе, где оно неочевидно.
63
3.3.ОПЕРАТОРЫ ДЕЙСТВИЙ НАД ЛОГИЧЕСКИМИ КОНСТАНТАМИ
Кэтой группе относятся операторы пересылки, поразрядные операторы («Поразрядно сложить», «Логически сложить», «Логи чески умножить»), а также операторы «Циклически сложить», «Суммировать количество единичных разрядов», «Логически сдви нуть», «Нормализовать».
ПЕ Р Е С Л А ТЬ СЛОВО (П)
П |
[:И;] В1; В2 |
—10 і бійі бга2 |
Т = 25 мксек |
Содержимое В1 пересылается в ячейку В2.
ПЕРЕСЛАТЬ МАССИВ С Л О В . ( £ Р У П )
Оператор записывается двумя строками.
ГРУП |
[:И'; ] В'2 |
—171' 00 б'2 |
а'а |
Т«=30+10п |
мксек, |
где п — |
||
количество |
пересылаемых |
|||||||
П |
[:И;] В1; В2 |
—10 і біаіб2 аз |
|
|||||
|
слов |
|
|
|||||
|
|
|
|
|
|
|
||
В'2 соответствует второму адресу |
|
машинной команды, |
что не |
обходимо учитывать при его индексировании, то есть ячейка ин
декса И' содержать |
только Дг(Лі). |
|
|
|
При |
выполнении |
оператора содержимое ячеек МОЗУ, |
начиная |
|
с ячейки |
В1, пересылается в другое место МОЗУ, начиная |
с ячей |
||
ки В2. Количество |
пересылаемых слов," уменьшенное на единицу, |
|||
должно быть указано в разрядах 24-f-36 ячейки |
В'2. Может быть |
|||
переслано не более |
8191 слова. Результатом операции считается |
|||
последнее пересылаемое слово. |
|
|
||
Оператор может |
использоваться не только для пересылки мас |
|||
сива слов, но также для заполнения массива |
ячеек одинаковой |
информацией, например, нулевым кодом. Пусть нулевой код хра нится в ячейке с этикеткой НУЛЬ. Тогда, чтобы заслать нуль в 109 ячеек, начиная с адреса А, необходимо записать следующие опера торы
ПНУЛЬ; А
ГРУП +107
А;А-Н
ПЕРЕСЛАТЬ С ОБРАТНЫМ ЗНАКОМ ( П 0 3 Н )
П 0 3 Н |
[:И;] В1; В2 —11 і бів] бяаа |
Т«=25 мксек |
Содержимое В1 пересылается в ячейку В2, причем значение ну левого разряда изменяется на противоположное.
64
ПЕРЕСЛАТЬ |
МОДУЛЬ ( П М 0 Д ) |
|
П М 0 Д |
[:И;] В1; В2 —12 і біВі бга2 |
Т = 2 5 мксек |
Содержимое В1 с нулем |
в |
нулевом |
разряде пересылается в |
|
ячейку В2. |
|
|
|
|
ПЕРЕСЛАТЬ |
ЗНАК (ПЗН) |
|
|
|
ПЗН |
[:И;] B l ; В2 |
-14 і |
біаі бгЭг |
Т = 3 0 мксек |
Результатом является слово в ячейке В2, содержащее нулевой разряд из В1 и остальные разряды из В2. Нулевой разряд ячейки В2 и разряды 1-=-36 ячейки В1 на выполнение операции не влияют.
ОБМЕНЯТЬ СЛОВА (0)
0 |
[:И;] B l ; В2 |
-г—15» біЯі бгЭг |
Т = 3 5 мксек |
Содержимое В2 пересылается в ячейку В1 и наоборот. На сум маторе в качестве результата сохраняется слово, пересылаемое в ячейку В2. По этому слову устанавливается состояние индикато ров НУЛЬ и МН.
ОБМЕНЯТЬ МАССИВ СЛОВ ( 0 Р У П )
Оператор записывается в двух |
строках |
|
|
|
|||||
ГРУП |
[:И'; ] |
В'2 |
—17/' |
00 б'2 а2 ' |
Т = 3 0 + 20п |
мксек, |
где п— |
||
количество |
обмениваемых |
||||||||
0 |
[:И;] |
B l ; В2 |
—151 біаі |
6І&І |
|||||
пар слов |
|
|
|||||||
|
|
|
|
|
|
|
|
||
В'2 соответствует |
второму адресу |
машинной команды, что не |
|||||||
обходимо учитывать |
при его индексировании, т. е. ячейка |
индекса |
|||||||
И' должна содержать только Аг (Ai). |
|
|
|
|
При выполнении оператора массив слов МОЗУ, начиная с ячей ки В2, пересылается на место массива, расположенного начиная с ячейки В1, который в свою очередь пересылается на место пер вого массива. Количество слов обмениваемых массивов, уменьшен ное на единицу, указывается в разрядах 24-4-36 ячейки В'2. Макси
мальное количество |
слов при этом равно 8191. Результатом опера |
|
ции является слово, записываемое в ячейку |
В2 + п—1. |
|
ЧИТАТЬ И З ЯЧЕЙКИ |
(Ч) |
|
[:И;] В2 |
—36 і б[Яі бгЭг |
Т = 20 мксек |
В2 соответствует второму адресу машинной команды, что необ ходимо учитывать при его индексировании, т. е. ячейка индекса должна содержать только A 2 (At) . Первый адрес в машинном эк-
І, Заказ 5093. |
65 |
вив'аленте оператора проставляется транслятором и является ад ресом перехода к следующему оператору.
При выполнении оператора содержимое В2 вызывается на сум матор.
ЗАПИСАТЬ В ЯЧЕЙКУ (3)
З [:И;1 В2 —ЗО і біаі б 2 а 2 Т = 2 0 мксек
В2 соответствует второму адресу машинной команды, что необ ходимо учитывать при его индексировании, т. е. ячейка индекса должна содержать только Лг(Аг'). Первый адрес в машинном экви валенте оператора проставляется транслятором и является адре
сом перехода |
к следующему оператору. |
|
|
При выполнении оператора результат |
предыдущей операции |
||
пересылается |
в ячейку В2. |
|
|
ПЕРЕСЛАТЬ ПОРЯДОК ( П П |
0 Р ) |
|
|
П П 0 Р |
[:И;] В1; В2 |
— 16г біаі б 2 а 2 |
Т—30 мксек |
Результатом операции является слово, содержащее разряды О-т-29 содержимого В2 и разряды 30+-36 содержимого В1, которое записывается в ячейку В2. Разряды О-т-29 содержимого В1 и раз ряды ЗО-т-36 содержимого В2 на выполнение оператора не влияют.
П О Р А З Р Я Д Н О С Л О Ж И Т Ь (ПС)
Имеются четыре разновидности оператора:
ПСЗ |
:И;] |
В1; В2 |
+04 |
і 6t a, |
б 2 |
а 2 |
Т = 30 |
мксек |
|
ПС |
[:И;] |
В1; В2 |
+051 |
б,аі |
б 2 а 2 |
Т = 25 |
мксек |
||
ПСВ |
:И;] |
B l ; В2 |
+06 |
і |
біа, |
б 2 а 2 |
Т = 2 5 |
мксек |
|
ПСР |
:И;] |
В і |
+07 |
і |
біа, |
00 |
|
Т = 1 5 |
мксек |
Каждый разряд играет самостоятельную роль, т. е. оператор фактически выполняется над тридцатью семью парами двоичных разрядов по следующему правилу:
0 ф Э = О ;
0 ф 1 = 1;
1 + 0 - 1 ;
1 ф 1 - 0 .
где ф —знак операции поразрядного сложения.
Оператор может использоваться для сравнения логических кон стант на «равно-неравно» или для формирования их из частей.
66
ЛОГИЧЕСКИ С Л О Ж И Т Ь (ЛС)
Имеются четыре разновидности операторов
Л С З |
[:И;] |
В1; В2 |
+ 7 4 |
£ 6t ai |
б2 а2 |
Т = 30 |
мксек |
|
ЛС |
[:И;] |
В1; В2 |
+75 і |
біаі |
б2 а2 |
Т = 25 |
мксек |
|
лев |
[:И;] |
В1; В2 |
+76 |
і |
біаі |
б2 а2 |
Т = 25 |
мксек |
Л С Р |
[.И;] |
В1 |
+ 7 7 |
і |
6,3, |
00 |
Т = 1 5 |
мксек |
|
|
|
|
|
|
|
|
Каждый разряд играет самостоятельную роль, т. е. оператор фактически выполняется над тридцатью семью парами двоичных разрядов по следующему правилу:
0 V 0 = 0 ;
0 V 1 = 1; I V 0 = 1 ; 1 V 1 = 1,
где V — знак операции логического сложения.
Оператор может быть использован для формирования логиче ских констант из отдельных частей.
ЛОГИЧЕСКИ У М Н О Ж И Т Ь (ЛУ)
Имеются четыре разновидности операторов:
Л У З |
[: И;] В1; В2 |
+70 |
і |
біаj |
б2 |
а2 |
' |
Т = 3 0 |
мксек |
ЛУ |
[: :И;1 В1; В2 |
+71 |
і |
біЗі |
б2 а2 |
|
Т = 2 5 |
мксек |
|
ЛУВ |
[: И;] В1; В2 |
+72 |
і |
б\&і б2 |
а2 |
|
Т = 2 5 |
мксек |
|
Л У Р |
[ :И;] В1 |
+73 і б,а, 00 |
|
|
Т = 15 мксек |
Каждый разряд играет самостоятельную роль, т. е. оператор фактически выполняется над тридцатью семью парами двоичных, разрядов по следующему правилу:
0 Л 0 - 0 ; О Л 1 = 0 ; 1 Л 0 = 0 ; 1 Л 1 = 1.
где Л — знак операции логического умножения.
Оператор используется для выделения части логической кон станты. При этом одним из операндов является так называемый логический выделитель, содержащий единицы в разрядах, соот ветствующих выделяемым разрядам, и нули в остальных разря дах. Например, для выделения разрядов 30-^36 логический выде литель может быть определен как КЧ, имеющая в адресной части 177В.
5* |
67 |
Л О Г И Ч Е С КИ СДВИНУТЬ (ЛСД)
Имеются четыре разновидности оператора:
Л С Д З |
И;] |
B l ; |
В2 |
+ 60 і |
біаі |
б 2 а 2 |
Т = 3 0 + 9 5 |
мксек |
Л С Д |
И;] |
B l ; |
В2 |
+61 і |
біаі |
б2 а2 |
Т = 25+90 мксек |
|
Л С Д В |
И;] |
ВЦ |
В2 |
+62 і 6t ai |
б 2 а 2 |
Т = 25+90 |
мксек |
|
Л С Д Р |
И;] |
В1 |
|
+ 63 і |
біаі |
00 |
Т = 15+50 |
мксек |
В сдвиге участвуют все тридцать семь разрядов содержимого В2 или сумматора. Величина и направление сдвига определяются разрядами 30+-36 содержимого ячейки В1, которые в совокупно сти называются константой сдвига. Остальные разряды ячейки В1 не используются. Если тридцатый разряд константы сдвига содер жит 0, то слово сдвигается влево на количество разрядов, указан ное в разрядах 31-=-36 константы сдвига. Если же этот разряд со держит 1, то сдвиг производится вправо. Освобождающиеся при їдвиге разряды заполняются нулями, а разряды, выходящие за разрядную сетку, теряются. Оператор используется для сдвига ча стей кода из одного места ячейки в другое.
Константу сдвига можно определить, например, с помощью оператора КЧ. Так, константу сдвига влево на четыре разряда можно задать как КЧ, в адресной части которой указывается 4. Константу сдвига можно задать также в виде литерала в опера торе ЛСД, как показано на примерах:
|
Hon |
|
|
, |
,25, |
, |
, |
|
,30, |
|
Лфесо |
|
|
и |
|
|
замечания |
|
|
|
|
|
, |
|
і , |
||||
l?s |
, |
, |
,21 |
S2, |
і |
і |
і |
і |
,35, |
, |
, |
, |
,40, |
|
|
|
|
, |
,50, |
|
|||||||||
л , |
c u |
t , |
, |
* , 4 |
І б , |
і \ е І |
г |
, |
, * , 4 , a . ) |
у |
\-,0-хд,Нуег, |
|
|
|
|
,Т\я, |
|
|
, |
, |
, |
, |
, |
, |
, |
||||
л ^ |
и г , |
і |
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
l |
i |
t . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
I |
, |
1 1 |
, |
I |
1 1 1 |
, |
1 |
1 |
' і I |
1 |
1 |
, |
1 |
1 1 |
1 1 І 1 , |
1 1 |
1 |
1 |
1 1 |
||||||
С Л О Ж И Т Ь ЦИКЛИЧЕСКИ |
|
(СЦКЛ) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
сцкл |
|
[:И;] |
|
ВЦ |
|
В2 |
—74 і |
|
|
б 2 а 2 |
|
|
|
Т = 30+35 |
мксек |
|
|
|||||||||||
Производится сложение |
|
операндов |
|
и |
при |
появлении |
|
переноса |
|||||||||||||||||||||
из нулевого разряда прибавляется единица |
к |
тридцать |
|
шестому |
|||||||||||||||||||||||||
разряду суммы. Результат |
записывается |
в |
ячейку |
с адресом |
В2. |
||||||||||||||||||||||||
Оператор |
может |
быть |
|
использован |
для |
получения |
контрольных |
||||||||||||||||||||||
сумм |
массивов. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
С Л О Ж И Т Ь Ц И К Л И Ч Е С К И МДССИВ СЛОВ ( оіщд ) |
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
Оператор записывается в двух строках |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
ГРУП |
|
[:И';] |
|
В'2 |
—Пі' |
|
00 |
6'2 a'j |
|
|
Т = 2 5 + 5 |
п |
мксек, |
где |
|
п— |
||||||||||||
|
|
|
|
|
|
количество |
циклически |
|
скла-. |
||||||||||||||||||||
|
С Ц К Л |
|
1:И;] |
ВЦ |
|
В2 |
—74 і |
біаі |
б2 а» |
|
|
|
|||||||||||||||||
|
|
|
|
|
дываемых |
|
слов |
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68
В'2 соответствует второму адресу машинной команды, что необ
ходимо |
учитывать при его |
индексировании, т. е. индексная ячейка |
должна |
содержать только |
A 2 (Aj) . |
При |
выполнении оператора к содержимому В2 циклически при |
бавляются слова массива, расположенного в последовательных
ячейках МОЗУ, начиная с В1. Полученный результат |
(контрольная |
|
сумма массива) остается |
в ячейке с адресом В2. Количество слов |
|
в массиве, уменьшенное |
на единицу, указывается |
в разрядах |
244-36 ячейки В'2. Максимальное количество слов в массиве 8191.
СУММИРОВАТЬ КОЛИЧЕСТВО ЕДИНИЧНЫХ РАЗРЯДОВ (СЕ)
СЕ |
[:И;] B l ; В2 |
-76 і біаі бга2 |
Т=25-^90 мксек |
Подсчйтывается~ количество единичных разрядов в ячейке В1 и полученное двоичное число записывается в младшие разряды ячей ки В2. Остальные разряды В2 заполняются нулями.
НОРМАЛИЗОВАТЬ ( Н 0 Р М )
Н 0 Р М |
[:И;] B l ; В2 -75 і біаі бга2 |
Т = 30н-90 мксек |
Разряды с первого по тридцать шестой содержимого В1 сдвига |
||
ются вЛево до тех пор, пока в первом разряде |
не появится единица. |
Количество выполняемых сдвигов записывается в младшие разря ды В2, при этом в тридцатый разряд этой же ячейки записывается единица, если количество сдвигов оказалось неравным нулю. В про тивном случае все разряды ячейки В2 будут содержать нули. Сдви нутое число остается на сумматоре и записывается в ячейку В2-Ы. Если нормализуется константа, содержащая нули во всех разря
дах, то результатом операции являются нулевые |
слова в См, В2 и |
В 2 + 1 . Только в этом случае и устанавливается |
в единицу инди |
катор НУЛЬ. Оператор может быть использован для перехода от
чисел с фиксированной запятой к |
числам с |
плавающей |
запятой, |
||||
так |
как количество |
сдвигов |
представляет собой порядок числа, а |
||||
из |
сдвинутого числа |
можно |
легко |
получить |
мантиссу |
исходного |
|
числа с плавающей запятой. Для этого необходимо записать |
груп |
||||||
пу операторов |
|
|
|
|
|
|
|
|
|
Н 0 Р М |
Ч И С Л 0 ; С |
|
|
|
|
|
|
ЛУР |
—777777777400В |
|
|
|
|
|
|
ЛСВ |
С; С |
|
|
|
|
|
Здесь в ячейке Ч И С Л 0 находится число с фиксированной |
запя |
|||||
той. Результат (число с плавающей |
запятой) |
будет записан в ячей |
ку С. Следует иметь в виду, что этой программой используется и ячейка С + 1 .
69