Table of Contents

5. Система команд

Арифметические, логические команды и команды чтения, изменяющие сумматор, изменяют признак группы (3-5 разряды регистра режимов) и признаки результата (7-10 разряды РР) в зависимости от типа операндов и результата:

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

Формирование КОП происходит при выборке команды. Там же можно анализировать 7-й разряд короткоадресного КОП в режиме эмулятора и в зависимости от его значения дополнить адресную часть “0” или “1” в 13-15 разрядах, как это принято в БЭСМ-6. 7-ой разряд КОП можно не менять, считая, что в режиме эмуляции команды с “0” и с “1” в 7-ом разряде исполняются одинаково. А тот же КОП с “1” в 7-ом разряде может использоваться как другой тип команды только в новом режиме.

Итак, система команд эмулятора является подмножеством системы команд нового режима. В ЭЛЬБРУС-Б введено ряд новых по сравнению с БЭСМ-6 команд, имеющих коды 00 - 7f шестнадцатеричные (или 000 - 177 восьмеричные) в основном и дополнительном форматах. Новые команды МКБ-8601 имеют соответственно коды 80 - ff (200 - 377) в основном и дополнительном форматах. Одинаковые команды ЭЛЬБРУС-Б и МКБ-8601 имеют одинаковые коды.


Более подробное описание команд

При описании команд здесь и ниже сначала приводится шестнадцатеричный код операции; в скобках - восьмеричный.

Команды БЭСМ-6

5.1. Команды пересылок

Если не установлен БПТЗ и бит 68 тега слова по исполнительному адресу равен “1” - прерывание по защите записи. 1-64 разряды А записываются в память по исполнительному адресу. В разряды 65-72 тега слова заносятся признаки ПК - ПИНТ, т.е. Тег результата. А,РМР,РР - не изменяются. Исполнение команды не зависит от признака РЭ.

Выполняется обычная запись (АТХ) сумматора по исполнительному адресу, после чего 15 регистр уменьшается на 1, и выполняется команда считывания (ХТА) с адресом, равным содержимому 15 регистра. РМР сохраняется. Устанавливается логическая группа. Команда выполняется независимо от РЭ.

Выполняется запись (АТХ) в память по адресу, содержащемуся в 15 регистре. Затем 15 регистр увеличивается на 1 и производится считывание (ХТА) в А слова по исп.адресу. РМР сохраняется. Устанавливается логическая группа. Выполнение команды не зависит от РЭ.

Если не установлен БПТ и бит 67 тега слова по исполнительному адресу содержит “1” - прерывание по защите числа. 1-64 разряды слова по исп.адресу считываются в А. РМР не меняется. Устанавливается логическая группа. Выполнение команды не зависит от РЭ.

5.2. Арифметические операции с плавающей запятой

Содержимое сумматора складывается с кодом операнда по исполнительному адресу. Результат - на сумматоре и в 1-52 разрядах РМР. 53 разряд рМР обнуляется, а в 54-64р. Заносится порядок результата. Операция может производиться как с нормализованными, так и с ненормализованными числами. Результат нормализуется при “0” 1 разряда РР и округляется при “0” 2 разряда РР. Устанавливается группа сложения. В РЭ 1-12 разряды сумматора копируются в 52-41 разряды РМР.

Из содержимого сумматора вычитается код операнда. Остальное аналогично команде А+Х.

Из кода операнда вычитается содержимое сумматора. Остальное аналогично команде А+Х.

Из модуля числа, находящегося на сумматоре, вычитается модуль операнда. Остальное аналогично команде А+Х.

Если число по исполнительному адресу отрицательное, то у числа на сумматоре меняется знак, если положительное - не меняется. При “0” 1 разряда РР производится нормализация результата. Результат на сумматоре. Устанавливается группа сложения. РМР не меняется.

Сумматор делится на операнд. Если операнд не нормализован, но не равен нулю, то операция должна производиться правильно. Результат на сумматоре в нормализованном виде. Устанавливается группа умножения.

Сумматор умножается на операнд. Операция может производиться как с нормализованными, так и с ненормализованными числами. Результат нормализуется при “0” 1 разряда РР и округляется при “0” 2 разряда РР. Результат остается на сумматоре и в 1-52 разрядах РМР. Устанавливается группа умножения.

К коду порядка сумматора прибавляется код порядка операнда. Затем из кода порядка результата вычитается 1024. Мантисса сохраняется. Операция может производиться также и с ненормализованными числами. Результат нормализуется при “0” 1 разряда РР. РМР не меняется. Устанавливается группа умножения.

Из кода порядка сумматора вычитается код порядка операнда. Затем к коду порядка результата прибавляется 1024. Далее все как в команде Е+Х.

К коду порядка сумматора прибавляется 11-разрядный код, взятый из исполнительного адреса. В новом режиме используются 1:11 разряды адреса. В режиме эмулятора - 1:7 разряды адреса (7-й выступает в роли знака). Перед выполнением операции в РЭ 7-ой разряд ареса пересылается в 11-ый, 7-10 разряды заполняются инвертированным кодом 7-ого разряда. Остальные разряды адреса не используются. После сложения из кода порядка результата вычитается 1024. Мантисса сохраняется. Операция может производиться также и с ненормализованными числами. Результат нормализуется при “0” 1 разряда РР. РМР не меняется. Устанавливается группа умножения.

Из кода порядка сумматора вычитается 11-разрядный код, взятый из исполнительного адреса так же, как в команде Е+N. Затем к коду порядка результата прибавляется 1024. Далее все как в команде Е+N.

При группе сложения или умножения передаются 1-52 разряды, 53-й разряд гасится. Далее выполняется команда Е+N сложения порядка с адресом. При логической группе РМР передается в А полностью. Сложения порядка с адресом не происходит. РМР и РР не изменяются.

5.3. Логические команды

В отсутствие РЭ выполняется над всеми 64 разрядами слова. В режиме эмулятора производится предварительная проверка обоих операндов: сумматора и слова по исполнительному адресу. Проверяется совпадение 60-63 разрядов с инвертированным 64 разрядом. При несовпадении и “0” 64 разряда соответствующий операнд заменяется на машинный нуль. При несовпадении и “1” 64 разряда - прерывание “незаконный операнд”. Затем производится операция над всеми 64 разрядами. У результата операции 60-63 разряды заполняются инвертированным кодом из 64 разряда, а 1-12 разряды обнуляются. Результат - на сумматоре. Устанавливается логическая группа. РМР не меняется.

Логика исполнения аналогична команде ААХ. Результат на сумматоре. Устанавливается логическая группа. В РМР пересылается значение сумматора до выполнения операции. Команду можно использовать для пересылки сумматора в РМР.

В отсутствие РЭ код на сумматоре циклически складывается с кодом по исполнительному адресу (перенос из 64 разряда складывается с 1-м разрядом). В режиме эмулятора оба операнда проверяются как в команде ААХ, затем производится циклическое сложение операндов, начиная с 12 разряда. Перенос из 59 разряда складывается с 64 разрядом, а перенос из 64 разряда - с 12 разрядом. 60-63 разряды результата заполняются инвертированным кодом 64 разряда, а 1-12 разряды обнуляются. Результат на сумматоре. Устанавливается группа умножения. РМР не меняется.

В отсутствие РЭ выполняется над всеми 64 разрядами. При наличии - аналогично команде ААХ. Результат на сумматоре. Устанавливается логическая группа. РМР не меняется.

Из А выбираются те разряды, которые соответствуют единицам кода по исполнительному адресу. При этом в новом режиме рассматриваются все 64 разряда операнда, а при РЭ - только 64,59-11. Полученный код помещается в старшие разряды А (при РЭ - с учетом “дыры” в порядке!). Остальные разряды А зануляются. РМР не меняется. Устанавливается логическая группа.

Код старшего разряда сумматора помещается в разряд, соответствующий старшей “1” маски - кода по исполнительному адресу. Код следующего разряда сумматора - соответственно следующей “1” маски и т.д. В РЭ разряды 63-60 не учитываются, а после выполнения операции заполняются инвертированным кодом 64-ого разряда. Результат - на сумматоре. РМР не меняется. Устанавливается логическая группа.

Производится подсчет числа “1” кода на сумматоре. В режиме эмулятора “1” 1-12 и 60-63 разрядов не учитываются. Полученная величина помещается в 1-6 (в режиме эмулятора в 13-18) разряды сумматора. Затем выполняется команда циклического сложения ARX с содержимым слова по исполнительному адресу. Результат на сумматоре. РМР не меняется. Устанавливается логическая группа.

Определяется номер старшего разряда сумматора, содержащего “1”. Отсчет ведется от старшего разряда сумматора, т.е.

01 соответствует "1" в старшем, 64 разряде
02       - " -       в 63 (в РЭ 59) разряде
03       - " -       в 62 (в РЭ 58) разряде
      .   .   .   .
64       - " -       в 1 разряде (в РЭ - нет)
 0   -   нет "1".
Полученный номер помещается в 1-6 разряды сумматора (в РЭ - в 13-18 разряды); и выполняется команда циклического сложения (ARX) с содержимым слова по исполнительному адресу. Результат на сумматоре. В РМР, начиная с 64-ого разряда (в РЭ - с учетом “дыры” в порядке) помещается “остаток” содержимого сумматора, начиная с разряда, следующего за тем, номер которого определен. Если сумматор равен 0, то и в РМР записывается 0. Устанавливается логическая группа.

В отсутствие РЭ производится над всеми 64 разрядами слова. В РЭ производится предварительная проверка обоих операндов аналогично команде ААХ. Затем РМР обнуляется и производится сдвиг содержимого сумматора на N разрядов. Величина N определяется 1-10 разрядами порядка числа в слове по исп. Адресу (54-63 разряды). При “1” в 11-ом разряде кода порядка числа по исп.адресу выполняется сдвиг вправо, в 1-10 разрядах порядка записывается количество сдвигов N в прямом коде. При “0” в 11-ом разряде выполняется сдвиг влево, в 1-10 разрядах записывается количество сдвигов N в дополнительном коде. При сдвиге вправо код, выдвигающийся из младших разрядов сумматора, поступает в старшие разряды РМР, начиная с 64-ого. При сдвиге влево код из старших разрядов сумматора поступает в младшие разряды РМР, начиная с 1-ого (в РЭ - начиная с 13-ого). В РЭ при сдвиге сумматора и РМР влево 59-ый разряд поступает на место 64-ого, а при сдвиге вправо - 64-ый разряд на место 59-ого, а 12-ый разряд выталкивается. У результата операции 60-63 разряды сумматора и РМР заполняются инвертированным кодом 64-ого разряда. Устанавливается логическая группа.

Сдвиг содержимого сумматора по адресу. Величина сдвига и направление задается 1-11 разрядами кода исполнительного адреса (см. Команду ASX). В РЭ 7-ой разряд аисп. Перемещается на место 11-ого, а 7-10 разряды заполняются его инвертированным значением. Далее - как в команде ASX.

5.4. Индексные команды БЭСМ-6

Содержимое 1-32 (в РЭ 12-27) разрядов сумматора передается в 1-32 ( в РЭ - в 1-15) разряды индекс-регистра. Номер индекс-регистра задается в прямом коде в 1-4 разрядах исполнительного адреса. Остальные разряды адреса несущественны. Сумматор, РМР и признак группы не меняются.

Сначала выполняется команда ATI, затем содержимое 15-ого индекс-регистра уменьшается на 1, и выполняется команда считывания ХТА с адресом, равным содержимому 15 регистра. Устанавливается логическая группа.

Содержимое 1-32 (в РЭ 1-15) разрядов индекс-регистра передается в 1-32 (в РЭ 12-27) разряды сумматора. В новом режиме 32 разряд модификатора размножается в 33-64 разряды сумматора! в РЭ старщие разряды сумматора обнуляются, а 60-63 разряды заполняются “1”. Номер индекс-регистра задается в прямом коде в 1-4 разрядах исполнительного адреса. РМР сохраняется. Устанавливается логическая группа. Признаки результата устанавливаются по 1-32 разрядам сумматора.

Выполняется запись (АТХ) в память по адресу, содержащемуся в 15 индекс-регистре. Затем 15 регистр увеличивается на 1 и выполняется команда ITA. В новом режиме 32 разряд модификатора размножается в 33-64 разряды сумматора! в РЭ старшая половина сумматора обнуляется, 60-63 разряды заполняются “1”. РМР сохраняется. Устанавливается логическая группа. Признаки результата устанавливаются по 1-32 разрядам сумматора.

Производится передача содержимого 1-32 (в РЭ 1-15) разрядов индекс-регистра, задаваемого в поле модификатора, в 1-32 (в РЭ 1-15) разряды индекс-регистра, номер которого задается в прямом коде в 1-4 разрядах адресной части команды. Сумматор, РМР и признак группы не меняются.

Значение регистра, указанного в поле модификатора, добавляется к значению регистра, указанного в адресной части команды. Результат остается в регистре, указанном в адресной части.

Исполнительный адрес команды заносится в 16 регистр и устанавливается ПИА, т.е. К коду адресной части команды, следующей за UTC, прибавляется код 1-32 (в РЭ 1-15) разрядов исполнительного адреса команды UTC. Сумматор, РМР и признак группы не меняются.

Содержимое 1-32 (в РЭ 13-27) разрядов слова по исполнительному адресу команды заносятся в 16 индекс-регистр и для следующей команды устанавливается ПИА, т.е. К коду адресной части команды, следующей за WTC, прибавляется код 1-32 (в РЭ 13-27) разрядов содержимого слова по исполнительному адресу команды WTC. Перенос из 32-ого (в РЭ - из 15-ого) разряда пропадает. Сумматор, РМР и признак группы не меняются.

В индекс-регистр, указанный в поле модификатора, передается код 1-32 разрядов исполнительного адреса команды (адрес типа V). В РЭ передаются 1-15 разряды, 16-32 разряды не не изменяются. Сумматор, РМР и признак группы не меняются.

К содержимому индекс-регистра, указанного в поле модификатора, добавляется код исполнительного адреса команды (адрес типа V). В новом режиме - 32 разряда (в РЭ - 15), перенос из 32-ого (в РЭ - из 15-ого) пропадает. Сумматор, РМР и признак группы не меняются.

5.5. Команды передачи управления БЭСМ-6

Происходит передача управления на левую команду по исполнительному адресу при условии: - группа сложения: если число на сумматоре больше или равно 0 (53 разряд знака мантиссы содержит код 0); - группа умножения: если порядок числа на сумматоре больше или равен 0 (64 разряд знака порядка равен 1); - логическая группа: если сумматор содержит нулевой код (в новом режиме все 64 разряда, в РЭ - 64,59:13 разряды равны 0). Иначе выполняется следующая команда. Сумматор и признак группы не меняются.

Происходит передача управления на левую команду слова по исполнительному адресу при условии: - группа сложения: если число на сумматоре меньше 0 (53 разряд знака мантиссы равен “1”); - группа умножения: если порядок числа на сумматоре меньше 0 (64 разряд знака порядка содержит код “0”); - логическая группа: если сумматор содержит ненулевой код (в новом режиме проверяются все 64 разряда, в РЭ - 64,59:13 разряды). Иначе выполняется следующая команда. Сумматор и признак группы не меняются.

Производится передача управления левой команде по исп. Адресу. Сумматор, РМР и признак группы не меняются.

В индекс-регистр, указанный в поле модификатора, заносится адрес слова, следующего за тем, откуда выбрана команда VJM, затем производится передача управления левой команде по адресу, указанному в команде. Сумматор, РМР и признак группы не меняются.

Если указанный в поле модификатора индекс-регистр содержит нулевой код (1-32 разряды равны 0, в РЭ 1-15 разряды равны 0), то производится передача управления левой команде по адресу, указанному в команде. Иначе выполняется следующая команда. Сумматор, РМР и признак группы не меняются. Если в поле модификатора записан код “0”, то производится передача управления по адресу, указанному в команде.

Если указанный в поле модификатора индекс-регистр содержит ненулевой код (1-32 разряды не равны 0, в РЭ 1-15 разряды не равны 0), то производится передача управления по адресу, указанному в команде. Иначе выполняется следующая команда. Сумматор,РМР и признак группы не меняются. Если в поле модификатора записан код “0”, то выполняется следующая команда.

Если указанный в поле модификатора индекс-регистр содержит ненулевой код, то производится передача управления по адресу, указанному в команде, а к содержимому индекс-регистра прибавляется 1. Перенос из 32-ого (в РЭ - из 15-ого) разряда пропадает. Если индекс-регистр содержит нулевой код (1-32 ,в РЭ 1-15 разряды равны 0), то выполняется следующая команда. Сумматор, РМР и признак группы не меняются.

5.6. Команды с регистром режимов

Производится запись 1-6 разрядов порядка числа по исп.адресу в 1-6 разряды РР. Содержимое остальных разрядов числа несущественно. Код “1” означает установку соответствующего режима, “0” - отмену этого режима. 54 разряд кода по исп.адресу (1 разряд порядка) заносится в 1 разряд РР, 55 - во 2-й и т.д. Если одновременно указана установка двух или трех признаков групп, приоритет имеет группа сложения, если соответствующий ей бит равен 1, иначе - группа умножения. Если все признаки групп установлены в “0”, то: - команды условного перехода UZA будут передавать управление на следующую команду, а U1A - на левую команду по исп.адресу. - команда выдачи регистра мл.разрядов УТА будет выполняться так же, как при установленных признаках “группа сложения” или “группа умножения”. Сумматор и РМР не меняются.

Выполняется также, как команда XTR, но вместо кода по исполнительному адресу используются 1-6 разряды исполнительного адреса. Команда работает только с 1-6 разрядами РР.

1-6 разряды регистра признаков РР поступают в 1-6 разряды порядка сумматора (54-59 разряды) и логически уможаются на код 1-6 разрядов исполнительного адреса. Результат остается в 54-59 разрядах сумматора. Остальные разряды сумматора обнуляются. РМР и признак группы не меняются. Команда работает только с 1-6 разрядами РР.

Производится запись содержимого рабочих регистров в область упрятывания регистров в памяти или в ОЗУ модификаторов, стандартным для экстракода образом устанавливается РР, исполнительный адрес экстракода передается в 14 регистр и производится передача управления операционной системе по математическому адресу, определяемому кодом экстракода. Подробнее см. П.4.8.


Команды, работающие только в новом режиме

5.7. Команды с непосредственным операндом

Сумматор рассматривается как целое 64-разрядное число со знаком. Отрицательные числа представляются в дополнительном коде. В качестве операнда используется исполнительный адрес команды с размножением 32 разряда в 33-64 разряды. Выполняется команда арифметического сложения. Результат на сумматоре. РМР не меняется. Устанавливаются группа умножения и признаки результата. Прерывания по переполнению не происходит.

Исполнительный адрес команды с размножением знакового разряда в 33-64 пересылается в сумматор. Устанавливается логическая группа.

Аналог команды ААХ, но в качестве операнда используется исполнительный адрес команды с размножением 32 разряда в 33-64. Результат на сумматоре. РМР не меняется. Устанавливается логическая группа.

Аналог команды АЕХ с непосредственным операндом, но значение сумматора в РМР не пересылается. Устанавливается логическая группа.

Аналог команды АОХ. РМР не меняется. Устанавливается логическая группа.

Частное от деления остается на сумматоре, остаток - в РМР. Устанавливается группа умножения.

Результат на сумматоре, РМР не меняется. Устанавливается группа умножения.

Подсчитывается число единиц кода на сумматоре. Полученная величина арифметически(!) складывается с кодом исполнительного адреса команды. 32 разряд адреса перед сложением размножается. Результат на сумматоре. РМР не меняется. Устанавливается логическая группа.

Определяется номер старшего разряда А, содержащего “1”. 64 разряду соответствует 1, 63 - 2, … , 1 - 101в. Если сумматор был нулевой, результат полагается равным нулю. Полученный номер арифметически(!) складывается с кодом исполнительного адреса команды. Результат на сумматоре. В РМР, начиная с 64 разряда, помещается остаток сумматора, начиная с разряда, следующего за тем, номер которого определен. Устанавливается логическая группа.

Исполнительный адрес команды (1-32 разряды) с размножением 32 разряда в 33-64 засылаетя в РМР. Сумматор и РР не изменяются.

Сумматор пересылается по адресу, содержащемуся в 15 индекс-регистре. После чего исполнительный адрес команды с размножением 32-ого разряда в 33-64р. Пересылается в сумматор, а 15 индекс-регистр увеличивается на “1”. Устанавливается логическая группа.

5.8. Команды с РМР

Сумматор и РР не изменяются.

Содержимое РМР логически умножается на операнд по исполнительному адресу. Результат - на сумматоре, РМР не меняется. Устанавливается логическая группа.

Результат - на сумматоре, РМР не меняется. Устанавливается логическая группа.

Результат - на сумматоре, РМР не меняется. Устанавливается логическая группа.

Сумматор логически умножается на РМР. Результат остается на сумматоре, РМР не меняется. Устанавливается логическая группа.

Результат на сумматоре, РМР не меняется. Устанавливается логическая группа.

Результат на сумматоре, РМР не меняется. Устанавливается логическая группа.

5.9. Индексные команды

Регистр, указанный в поле модификатора, и регистр, указанный в адресной части команды, обмениваются своими значениями. Сумматор, РМР, признак группы - не меняются.

Содержимое регистра, указанного в поле модификатора, сдвигается на количество разрядов, заданное в 1-11 разрядах усполнительного адреса параметр сдвига задается также, как в команде ASX. При сдвиге вправо в освобождающиеся старшие разряды регистра размножается код знака регистра. При сдвиге влево младшие разряды регистра заполняются нулевым кодом. 32-ой разряд остается на месте. Сумматор, РМР, признак группы - не меняются.

Из содержимого регистра, указанного в адресной части команды, вычитается содержимое регистра, указанного в поле модификатора. Результат остается в регистре, указанном в адресной части команды. Сумматор, РМР, признак группы - не меняются.

В индекс-регистр, указанный в поле модификатора, передается исполнительный адрес команды, арифметически сдвинутый влево на 1 разряд: 31 разряд исполнительного адреса пропадает, 32 разряд (знак) сохраняется. Сумматор, РМР и признак группы не меняются.

Аналогично команде VTMH, но со сдвигом влево на 2 разряда.

Аналогично команде VTMH, но со сдвигом влево на 3 разряда.

Аналогично команде VTMH, но со сдвигом влево на 6 разрядов.

Аналогична команде UTC, но перед записью в регистр С исполнительный адрес арифметически сдвигается влево на 16. Используется для доступа к частям слова, полный адрес которых может быть больше 20 разрядов. Устанавливается ПИА. Сумматор, РМР и признак группы не меняются.

Содержимое четырех последовательно расположенных модификаторов, младший из которых задается исполнительным адресом, переписываются в сумматор и РМР, по 2 в каждый регистр; в левой половине регистра - младший по номеру модификатор. Устанавливается логическая группа.

Содержимое сумматора и РМР переписывается в четыре последовательно расположенных модификатора, младший из которых задается исполнительным адресом. Сумматор, РМР и РР не меняются.

Сложение сумматора с содержимым модификатора, номер которого задается исполнительным адресом. В этой команде и в следующих знаковый разряд модификатора перед выполнением операции размножается в 33-64 разряды. Устанавливаются группа умножения и признаки результата. Прерывания по переполнению не происходит.

Сумматор делится на модификатор. Частное - на сумматоре, остаток - в РМР.

Результат - в сумматоре.

Здесь и в следующих логических командах устанавливается логическая группа.

РМР не меняется.

5.10. Команды передачи управления

Производится передача управления по адресу команды, если указанный в поле модификатора индекс-регистр положительный (32 разряд знака равен 0).

Если указанный в поле модификатора индекс-регистр содержит ненулевой код, то производится передача управления по адресу, указанному в команде, а из содержимого индекс-регистра вычитается “1”. Если индекс-регистр содержит нулевой код, то выполняется следующая команда. Сумматор, РМР и признак группы не меняются.

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

Аналогично команде UZAS.

Если признак переполнения OVR содержит “0” - выполняется следующая команда. В противном случае происходит переход по исполнительному адресу.

Если признак переноса С содержит “0” - выполняется следующая команда. В противном случае происходит переход по исполнительному адресу.

Сумматор рассматривается как целое 63-разрядное число, 64-й разряд - знаковый, отрицательные числа представляются в дополнительном коде. Производистя передача управления по исполнительному адресу, если знак сумматора положительный (32 разряд = 0). Иначе выполняется следующая команда. Сумматор, РМР и признак группы не меняются.

Производится передача управления по исполнительному адресу, если 1-64 разряды сумматора равны “0”. Иначе выполняется следующая команда. Сумматор, РМР и признак группы не меняется.

Значение программного счетчика, увеличенного на 1 (РС+1), записывается в стек адресов возврата из подпрограмм. Значение указателя стека в РАВ увеличивается на 1 и производится передача управления по исполнительному адресу. При записи адреса возврата в память РР не меняется! т.е. Стек адресов возврата должен быть размещен в памяти, доступной из программы. Возможны страничные и другие прерывания.

Производится передача управления по адресу, записанному в стек адресов возврата из подпрограмм последним. Значение указателя стека в РАВ уменьшается на 1. Во время чтения адреса возврата РР не меняется.

5.11. Целая 64-разрядная арифметика

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

Производится арифметический сдвиг сумматора на N разрядов, задаваемых в 1-11 разрядах исполнительного адреса. 11 разряд задает направление сдвига (как в команде ASX). При сдвигах перемещаются только 1-63 разряды, сдвиг вправо происходит с размножением знакового разряда, при сдвиге влево освобождающиеся позиции заполняются “0”. Устанавливается группа умножения. РМР не меняется.

5.12. Операции над полусловами

Полуслова адресуются 21-разрядным исполнительным адресом, начиная с 0. В полном слове с адресом N=0,1,… Размещаются (слева направо) два 32-разрядных полуслова, адресуемых как 2N и 2N+1. Запись производится из 1-32 разрядов сумматора в полуслово по исполнителтьному адресу, остальные разряды слова не меняются. При извлечении полусловного операнда из памяти операнд преобразуется к формату 64-разрядного целого размножением 32 разряда в 33-64. Таким образом, арифметика полуслов отличается от арифметики 64-разрядных целых чисел только способом выборки операнда. Устанавливаются признаки переноса С при переносе из 32-ого разряда и переполнения OVR, если результат превышает 32 разряда. Прерывания по переполнению не происходит.

Содержимое 1-32 разрядов сумматора записывается в память по исп.адресу. Признак группы не меняется.

Содержимое 1-32 разрядов сумматора записывается в память по исп.адресу. Далее делается магазинное считывание целого слова в сумматор. Устанавливается логическая группа.

Полусловный операнд по исп.адресу считывается в 1-32 разряды сумматора, после чего 32 разряд размножается в 33-64. Устанавливается группа умножения.

Содержимое сумматора записывается в магазин. Далее делается то же, что в команде НТА. Устанавливается группа умножения.

Здесь и в следующих арифметических командах устанавливается группа умножения.

Сумматор делится на операнд. Частное - на сумматоре, остаток - в РМР.

Здесь и в следующих логических командах устанавливается логическая группа.

РМР не меняется.

5.13. Операции над 16-разрядными фрагментами

16-разрядные фрагменты слова адресуются 22-разрядным исполнительным адресом, начиная с 0. В полном слове с адресом N=0,1,… Размещаются слева направо 4 16-разрядных фрагмента, адресуемых как 4N, 4N+1, 4N+2, 4N+3. Запись производится из 1-16 разрядов сумматора в 16-разрядный фрагмент по исполнительному адресу, остальные разряды слова не меняются. Чтение - в 1-16 разряды сумматора, остальные разряды рг. А обнуляются. Логические операции поизводятся с операндом, у которого 1-16 разряды соответствуют выбранному фрагменту, остальные разряды равны “0”, и 64-разрядным сумматором. Результат - в 1-64 разрядах сумматора. Устанавливается логическая группа (за исключением команды ATQ).

Признак группы не меняется.

РМР не меняется.

5.14. Операции над байтами

Байты адресуются 23-разрядным исполнительным адресом, начиная с 0. В полном слове с адресом N=0,1,… Размещаются слева направо 8 8-разрядных байтов, адресуемых как 8N, 8N+1, … 8N+7. Запись поизводится из 1-8 разрядов сумматора в байт по исполнительному адресу, остальные разряды слова не меняются. Чтение - в 1-8 разряды сумматора, остальные разряды рг. А обнуляются. Логические операции поизводятся над 64-разрядным сумматором и операндом, у которого 1-8 разряды соответствуют выбранному байту, остальные разряды обнуляются. Результат - в 1-64 разрядах сумматора. Устанавливается логическая группа (за исключением команды АТВ).

признак группы не меняется.

рМР не меняется.

5.15. Операции над битами

Биты адресуются 26-разрядными исполнительными адресами, начиная с 0. В полном слове с адресом N=0,1,… Размещаются (слева направо) 64 бита, адресуемых как 64N, 64N+1, … 64N+63. При чтении (записи) битового операнда используется 1-й разряд сумматора. Остальные разряды сумматора при чтении обнуляются, а при записи несущественны. Логические операции выполняются с операндом, у которого младший разряд соответствует выбранному биту, остальные разряды равны “0”, и 64-разрядным сумматором. Результат - в 1-64 разрядах сумматора. Команды 206(ATF), 366(SETF), 376(CLRF) не меняют признак группы. Остальные команды устанавливают логическую группу.

РМР не меняется.

Содержимое сумматора не меняется.

Содержимое сумматора не меняется.

Производится размножение заданного разряда регистра А влево до границы слова. Исполнительный адрес задает номер бита N (0,1,…63), считая со старших разрядов. Используется 6 разрядов исполнительного адреса. В ниже перечисленных командах операция производится над содержимым сумматора и операндом, у которого все разряды равны “0”, кроме одного. Номер разряда, установленного в “1”, задается в 1-6 разрядах исполнительного адреса. Нумерация разрядов в исполнительном адресе с 0 до 63, начиная со старших разрядов, если 11 разряд аисп.= 0; или начиная с младших разрядов, если 11 разряд аисп.= 1:

аисп.: 000 бит 64 (старший), 001 - бит 63, …, 03f - бит 1 (младший)
аисп.: 400 бит 1 (младший), 401 - бит 2, …, 43f - бит 64 (старший)

РМР не меняется.

5.16. Арифметика с двойной точностью

Операции над числами с двойной точностью производятся над 128 разрядами. Старшие разряды мантиссы и порядок числа - в сумматоре, младшие разряды мантиссы - в РМР, в разрядах порядка РМР - копия порядка сумматора. При обращениях в память старшие разряды мантиссы и порядок находятся по исполнительному адресу, младшие разряды мантиссы - по адресу : а исп. + 1. Признаки групп устанавливаются так же, как в аналогичных операциях с плавающей запятой с одинарной точностью. При а исп. = 0 и n модификатора = 15 разрешается магазинное обращение к памяти по общему правилу. После исполнения команды указатель магазина (15 регистр) изменяется на 2, поскольку произведена выборка (или запись) 2 слов.

Устанавливается логическая группа.

5.17. Привилегированные команды

Привилегированные команды могут использоваться только в режиме диспетчера (РД = 1). При ошибочном использовании их в программе математика команда будет выплняться как экстракод (произойдет передача управления операционной системе).

Производится чтение в сумматор (64 разряда) регистров ЦП: модификаторов, регистров приписки, регистров признаков (БОБР, БИЗМ, БМСП), содержимого памяти учета приоритетов страниц, регистров С, РР, СЧАС, ИАОП, РАПУ, РНП, ГРП, таймеров и т.п. Разряды исполнительного адреса задают полный номер регистра, в том числе и при обращениях к регистрам из ОЗУ модификаторов, где в полном адресе должен быть номер группы регистров. Для чтения или записи РР и РРР своей группы регистров команды RMOD и WMOD использовать нельзя, т.к. Нет чтения динамической части РР и РРР или нет записи в исполнительную часть РР и РРР. Для изменения РР своей группы можно использовать команды SETR и CLRR. Полный список регистров и памяти ЦП и их адреса приведены в п.6.7. РМР и признаки групп не меняются.

Производится запись сумматора в регистры ЦП (см. Команду RMOD). Разряды исполнительного адреса задают номер регистра. Сумматор, РМР и признак группы сохраняются.

Производится восстановление рабочих регистров прерванного процесса и передача ему управления. Если 6-11 разряды исполнительного адреса команды равны “0”, номер восстанавливаемой группы регистров берется в 9-13 разрядах РРР, иначе - в 6-10 разрядах исполнительного адреса.

Производится установка в “1” тех разрядов РР текущей группы, которые соответствуют “1” исполнительного адреса команды, логически сдвинутого влево на 10 разрядов (1-22 разряды исполнительного адреса соответствуют 11-32 разрядам РР). Разряды РР, соответствующие “0” адреса, не меняются. Признаки ППК, ППУ и ПИА изменяются по общему правилу. Сумматор, РМР, признак группы не меняются.

Производится установка в “0” тех разрядов РР текущей группы, которые соответствуют “0” исполнительного адреса команды, логически сдвинутого влево на 10 разрядов. Разряды РР, соответствующие “1” адреса, не меняются. Признаки ППК,ППУ,ПИА изменяются по общему правилу. Сумматор, РМР, признак группы не меняются.

Производится чтение семафорного слова памяти по исполнительному адресу. Если семафор “открыт” (56 разряд семафорного слова = 0), производится “захват” семафора: 56 разряд семафорного слова устанавливается в “1”, в 57-64 разряды записывается номер текущего процесса. Признак С РР устанавливается в “1”. Если номер текущего процесса совпадает с 57-64 разрядами семафорного слова, признак С также устанавливается в “1” (семафор захвачен этим же процессом!). Если семафор занят “чужим процессом (56 разряд = “1”, а 57-64 разряды не равны номеру процесса), признак С устанавливается в “0” (неудачная попытка). В команде блокировки БПТЗ и БПТЧ не устанавливаются, считая, что они есть в РР, если в соответствующих семафорнных ячейках установлены запрет записи или чтения. Возможны внутренние прерывания (страничные и теговские). Магазинное обращение к памяти при 15 индекс-регистре и 0-ом исполнительном адресе не допускается. Сумматор, РМР и признаки групп не меняются.

Если номер текущего процесса совпадает с 64-57 разрядами слова по исполнительному адресу, то по исполнительному адресу записывается “0”. Возможны внутренние прерывания (страничные и теговские). Магазинное обращение к памяти не допускается. Сумматор, РМР и РР не меняются.

На время исполнения команды в РР устанавливаются: БЗО, БЗЗ, БПНП, БПТЗ, РОА, РД, ПОП. Читается “глобальный” семафор памяти по адресу fff8 0840 н. Если 56-й разряд семафорного слова равен “0”, производится захват семафора: 56-й разряд устанавливается в “1”, а в 57-64 разряды записывется номер текущего процесса. Если семафор занят, 57-64 разряды его сравниваются с содержимым РНП. Если семафор занят другим процессом, команда ждет освобождения семафора, затем захватывет его. После захвата семафора восстанавливается старое значение РР и исполняется команда SETR с исполнительным адресом. Устанавливается БВП. Магазинное обращение к памяти не допускается. Сумматор и РМР не меняются.

На время исполнения команды в РР устанавливаются: БЗО, БЗЗ, БПНП, БПТЗ, РОА, РД, ПОП. Читается “глобальный” семафор по адресу fff8 0840 н. Если номер текущего процесса совпадает с 64-57 разрядами семафорного слова, по этому адресу записывается “0”. Производится чтение внешних прерываний в ГРП и их сброс и “взведение” заново таймера БВП. Затем восстанавливается старое значение РР и исполняется команда CLRR с исполнительным адресом. Магазинное обращение к памяти не допускается. Сумматор и РМР не меняются.

Производится запись сумматора по исполнительному адресу с тегом, записанным в 1-8 разрядах РМР. Сумматор, РМР, признак группы и тег результата в РРР сохраняются.

1-64 разряды слова по исполнительному адресу считываются в регистр А, разряды тега - в 1-8 разряды РМР. Устанавливается логическая группа.

Производится восстановление регистров и передача управления на следующую после экстракода команду.

Если 12 младших разрядов исполительного адреса равны “0” - пустая команда, иначе - останов.


Дополнительные команды из системы команд ЭЛЬБРУС-Б

5.18. Команды основного формата ЭЛЬБРУС-Б

Аналогична команде ХТА, но признаки незультата не изменяются.

аналогичны соответствующим командам БЭСМ-6: А+Х, А-Х, Х-А, АМХ, AVX, А*Х, но если оба операнда целые, то результат - целое.

В ЭЛЬБРУС-Б введен новый тип операндов - целое число. Целое - это ненормализованное 64-разрядное число с порядком -1024, т.е. 64-54 разряды равны 0, 53 разряд равен 52-ому.

Аналогична операции ASX, но направление сдвига противоположное: параметр сдвига представляется в дополнительном коде для сдвига вправо, в прямом коде - для сдвига влево.

В поле модификатора задается номер индекс-регистра цикла (ИЦ). В команде участвуют еще 2 регистра: - индекс-регистр границы ИГ: ИГ = ИЦ + 1; - индекс-регистр шага ИШ: ИШ = ИЦ + 2. В первой части операции определяется величина (ИГ)-(ИЦ), вырабатывающая условие ГБЦ (граница больше цикла) или условие ГРЦ (граница равна циклу). С учетом знакового разряда индекс-регистра шага (ЗИШ) переход по адресной части команды происходит при выполнении логического условия: ЗИШ * ( ГБЦ + ГРЦ ) + ЗИШ * ( ГБЦ ) = 1

При невыполнении условия выполняется следующая команда. Если условие перехода выполняется, то во второй части команды происходит сложение (ИЦ)+(ИШ) с записью результата в ИЦ для очередного цикла, а потом - собственно переход. Если при сложении происходит переполнение разрядной сетки индекс-регистров, то возникает прерывание. Признаки результата не меняются.

Команды условного перехода по содержимому индекс-регистра. Передача управления производится, если содержимое индекс-регистра: - больше или равно 0; - меньше 0; - меньше или равно 0; - больше нуля. Признаки результата не меняются.

Команды передачи управления по признакам результата операции, выполненной ранее. Передача управления производится, если результат: - равен 0; - не равен 0; - больше или равен 0; - меньше 0; - меньше или равен 0; - больше 0; - есть особый случай (переполнение); - нет особого случая. Сумматор, РМР и признаки результата не меняются.

Аналогична команде ХТА, но затем происходит запись кода с “1” в 1-ом разряде и с “0” в 2-64 разрядах в память по исполнительному адресу. Устанавливаются признаки результата.

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

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

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

Аналогична команде UTC, но перед образованием аисп. Разряды адресной части смещаются влево на 12 разрядов.

Литеральные команды. Аналогичны командам СЧ(ХТА), СМ(XTS), СН, АС, АВ, ОВ, МВ, ИЗ, АУ соответственно, но операндом является сам исполнительный адрес с размножением знака до 53 разряда.

Также литеральные команды. Аналогичны командам ЦС(ARX), СБ(АРХ), РБ(AUX), но операндом является сам аисп., а значение знакового разряда размножается до 64-ого разряда.

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

5.19. Команды дополнительного формата ЭЛЬБРУС-Б

Аналогична команде УТА для ГС, ГУ. РМР не меняется.

К коду порядка числа на сумматоре прибавляется код 1-11 разрядов аисп. Как целое положительное число. Мантисса сумматора и РМР не меняются. Результат операции нормализуется, если она не блокирована. Возможно переполнение порядков с последующим прерыванием, если оно не блокировано. Устанавливаются признаки результата.

Аналогична команде УТА для ГЛ.

Происходит сравнение (сложение по мод.2) 1-11 разрядов аисп. И 54-64 разрядов сумматора. Результат сравнения заносится в 54-64 разряды сумматора, 1-53 разряды не немяются. Результат не нормализуется. Устанавливаются признаки результата.

Аналогична команде ASN, но направление сдвига противоположное.

Аналогична команде ITA, но значение знака индекс-регистра размножается до 53 разряда сумматора, 54-64 разряды обнуляются. РМР не меняется. Устанавливаются признаки результата.

Из содержимого регистра, заданного в 1-4 разрядах адресной части команды, вычитается содержимое регистра, заданного в поле модификатора, результат в регистре, заданном в поле модификатора.

Если порядок числа с плавающей запятой на сумматоре превышает 2064в, то происходит прерывание по переполнению сумматора. В противном случае происходит сложение кода на сумматоре с операндом, у которого порядок = 2064в, а мантисса = 0. Выдвинутые из сумматора в РМР при выравнивании порядков разряды являются дробной частью числа. В рг. А остается выделенная целая часть числа в виде целого (т.е. Нулевой порядок). Если в результате операции значение 53 разряда рг. А не равно значению 52 разряда, происходит прерывание по переполнению сумматора. Устанавливаются признаки результата.

Для положительных чисел алгоритм аналогичен команде ЦА. Для отрицательных, если в результате выравнивания порядков в РМР выдвинулись значащие разряды, к мантиссе результата к младшему разряду прибавляется 1 (например, из отрицательного числа -7.5 получается -7, т.е. Максимальное целое число, не превышающее по модулю исходного числа). Устанавливаются признаки результата.

Производится сложение 1-11 разрядов аисп. С 64-59 разрядами РМР, причем 1разряд аисп. Складывается с 59 раздядом и т.д. Полученный код является параметром сдвига для числа в рг. А, 11-ый разряд задает направление сдвига, как в команде ASN. Код, выдвигаемый из рг. А, поступает в РМР. Устанавливаются признаки результата.

Производится занесение в индекс-регистр по аисп. Младшей половины сумматора, и по этому адресу производится считывание операнда. РМР не меняется. Устанавливаются признаки результата.

Если 53 разряд рг. А равен 1, то код мантиссы числа на сумматоре преобразуется в дополнительный, а значение 53 разряда рг. А сохраняется без изменения. Выполняются нормализация и округление результата, если они не блокированы. Если 53 разряд рг. А равен 0, сумматор не меняется. Устанавливаются признаки результата.

Аналогична команде МД, но направление и параметр сдвига задаются как в команде ОД.

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


5.20 Сводная таблица команд МКБ-8601

( Далее... )