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

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

  • Команды чтения в сумматор 64-разрядного слова целого и с плавающей запятой, а также логические команды с 64-разрядными операндами устанавливают признаки результата следующим образом:
    • N = значению 64 разряда результата;
    • Z = 1, если 1-64 разряды результата равны 0, иначе Z = 0;
    • устанавливается логическая группа.
  • Арифметические команды над целыми 64-разрядными операндами и 32-разрядными, у которых происходит размножение 32 разряда до 64-ого:
    • OVR = 1 при переполнении разрядной сетки;
    • прерывания по переполнению не происходит.
    • N = значению 64 разряда результата;
    • Z = 1, если 1-64 разряды результата равны 0;
    • устанавливается группа умножения.
  • Арифметические команды с плавающй запятой (одинарной и двойной точности):
    • OVR = 1 при переполнении в разрядах порядка;
    • прерывание по переполнению блокируется установкой БПП в РР.
    • С = 1, если мантисса или порядок равны 0;
    • N = значению 53 разряда результата (знак мантиссы);
    • Z = 1, если 1-53 разряды результата равны 0;
    • устанавливается группа умножения.

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

  • 00(000) в РЭ, ЭЛЬБРУС-Б (ЗЧ), МКБ-8601 (АТХ) — запись сумматора в память.

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

  • 01(001) в РЭ, ЭЛЬБРУС-Б (ЗМ), МКБ-8601 (SТХ) — запись числа магазинная.

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

  • 03(003) в РЭ, ЭЛЬБРУС-Б (СМ), МКБ-8601 (XTS) — считывание магазинное.

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

  • 08(010) в РЭ, ЭЛЬБРУС-Б (СЧ), МКБ-8601 (ХТА) - считывание числа.

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

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

  • 04(004) в РЭ; е5(345) в МКБ-8601 (А+Х) — арифметическое сложение чисел с плавающуй запятой.

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

  • 05(005) в РЭ; е6(346) в МКБ-8601 (А-Х) — арифметическое вычитание чисел с плавающей запятой.

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

  • 06(006) в РЭ; е7(347) в МКБ-8601 (Х-А) — обратное вычитание чисел с плавающей запятой.

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

  • 07(007) в РЭ; е8(350) в МКБ-8601 (АМХ) — вычитание модулей чисел с плавающей запятой.

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

  • 0с(014) в РЭ; е9(351) в МКБ-8601 (AVX) — изменение знака числа на сумматоре.

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

  • 0е(016) в РЭ, ЭЛЬБРУС-Б (АД), МКБ-8601 (А/Х) — деление с плавающей запятой.

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

  • 0f(017) в РЭ; еа(352) В МКБ-8601 (А*Х) — умножение с плавающей запятой.

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

  • 14(024) в РЭ, ЭЛЬБРУС-Б (СП), МКБ-8601 (Е+Х) — сложение порядка с кодом.

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

  • 15(025) в РЭ, ЭЛЬБРУС-Б (ВП), МКБ-8601 (Е-Х) — вычитание из порядка кода.

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

  • 1с(034) в РЭ; 3f 1с (077 034) в ЭЛЬБРУС-Б (КС), МКБ-8601(Е+N) — сложение порядка с адресом.

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

  • 1d(035) в РЭ; 3f 1d (077 035) в ЭЛЬБРУС-Б (КВ), МКБ-8601 (Е-N) — вычитание из порядка адреса.

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

  • 19(031) в РЭ; 3f 81 (077 201) в МКБ-8601 (УТА) — выдача регистра младших разрядов.

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

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

  • 09(011) в РЭ, ЭЛЬБРУС-Б (ЛУ), МКБ-8601 (ААХ) — логическое умножение.

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

  • 0а(012) в РЭ, ЭЛЬБРУС-Б (СР), МКБ-8601 (АЕХ) — сравнение.

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

  • 0в(013) в РЭ, ЭЛЬБРУС-Б (ЦС), МКБ-8601 (ARX) — циклическое сложение.

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

  • 0d(015) в РЭ, ЭЛЬБРУС-Б (ЛС), МКБ-8601 (АОХ) — логическое сложение.

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

  • 10(020) в РЭ, ЭЛЬБРУС-Б (СБ), МКБ-8601 (АРХ) — сборка по маске.

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

  • 11(021) в РЭ, ЭЛЬБРУС-Б (РБ), МКБ-8601 (AUX) — разборка по маске.

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

  • 12(022) в РЭ, ЭЛЬБРУС-Б (ВЧ), МКБ-8601 (АСХ) — выдача числа единиц.

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

  • 13(023) в РЭ, ЭЛЬБРУС-Б (ВН), МКБ-8601 (ANX) — выдача номера старшей единицы.

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

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

  • 16(026) в РЭ, ЭЛЬБРУС-Б (СК), МКБ-8601 (ASX) — сдвиг логический по коду.

В отсутствие РЭ производится над всеми 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е(036) в РЭ; 3f 16 (077 026) в ЭЛЬБРУС-Б (СД), МКБ-8601 (ASN) — сдвиг логический по адресу.

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

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

  • 20(040) в РЭ; 3f 20 (077 040) в ЭЛЬБРУС-Б (УИ), МКБ-8601 (ATI) — запись кода в модификатор.

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

  • 21(041) в РЭ; 3f 21 (077 041) в ЭЛЬБРУС-Б (УМ), МКБ-8601 (STI) — запись кода в модификатор магазинная.

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

  • 22(042) в РЭ; 3f 80 (077 200) в МКБ-8601 (IТА) — выдача модификатора.

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

  • 23(043) в РЭ; 3f 22 (077 042) в ЭЛЬБРУС-Б (ВИ), МКБ-8601 (ITS) — выдача модификатора магазинная.

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

  • 24(044) в РЭ; 3f 24 (077 044) в ЭЛЬБРУС-Б (ПИ), МКБ-8601 (MTJ) — передача из модификатора в модификатор.

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

  • 25(045) в РЭ; 3f 25 (077 045) в ЭЛЬБРУС-Б (СИ), МКБ-8601 (J+М) — сложение модификаторов.

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

  • 90(220) в РЭ, МКБ-8601 (UТС) — префиксация адресом.

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

  • 98(230) в РЭ; 3в(073) в ЭЛЬБРУС-Б (ИК), МКБ-8601 (WТС) — префиксация кодом.

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

  • А0(240) в РЭ; 3с(074) в ЭЛЬБРУС-Б (ПА), МКБ-8601 (VТМ) — установка адреса на модификатор.

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

  • А8(250) в РЭ; 3d(075) в ЭЛЬБРУС-Б (СА), МКБ-8601 (UТМ) — сложение модификатора с адресом.

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

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

  • в0(260) в рЭ; ев(353) в МКБ-8601 (UZA) — условный переход “по нулю”.

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

  • В8(270) в РЭ; ес(354) в МКБ-8601 (UIA) — условный переход “по не нулю”.

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

  • С0(300) в РЭ; 18(030) в ЭЛЬБРУС-Б (ПБ), МКБ-8601 (JМР) — безусловный переход.

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

  • С8(310) в РЭ; 19(031) в ЭЛЬБРУС-Б (ПВ), МКБ-8601 (VJM) — переход с возвратом.

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

  • Е0(340) в РЭ; 20(040) в ЭЛЬБРУС-Б (ИР), МКБ-8601 (JMEQ) — условный переход по нулю модификатора.

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

  • Е8(350) в РЭ; 21(041) в ЭЛЬБРУС-Б (ИН), МКБ-8601 (JMNE) — условный переход по не нулю модификатора.

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

  • F8(370) в РЭ; 1в(033) в ЭЛЬБРУС-Б (КЦ), МКБ-8601 (VLM) — конец цикла с увеличением значения модификатора.

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

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

  • 17(027) в РЭ; dв(333) в МКБ-8601 (XTR) — установка РР по коду.

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

  • 1f(037) в РЭ; 3f 82 (077 202) в МКБ-8601 (NTR) — установка РР по адресу.

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

  • 18(030) в РЭ; 3f 83 (077 203) в МКБ-8601 (RТЕ) — выдача РР.

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

  • 28:3f(050:077) в РЭ; 3f 00 (077 000) в ЭЛЬБРУС-Б; 80(200) в МКБ-8601 — экстракоды.

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


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

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

  • 81(201) — целое сложение сумматора с операндом (А+U).

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

  • 82(202) — вычитание непосредственного операнда (А-U).
  • 83(203) — обратное вычитание (U-А).
  • 48(110) в ЭЛЬБРУС-Б (СЧЛ), МКБ-8601 (UТА) — выдача исполнительного адреса.

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

  • 49(111) в ЭЛЬБРУС-Б (ЛУЛ), МКБ-8601 (AAU) — логическое умножение сумматора.

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

  • 4а(112) в ЭЛЬБРУС-Б (СРЛ), МКБ-8601 (AEU) — сравнение сумматора.

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

  • 4d(115) в ЭЛЬБРУС-Б (ЛСЛ), МКБ-8601 (AOU) — логическое сложение.

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

  • 86(206) — целочисленное деление (А/U).

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

  • 87(207) — целочисленное умножение (А*U).

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

  • 52(122) в ЭЛЬБРУС-Б (ВЧЛ), МКБ-8601 (ACU) — выдача числа единиц.

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

  • 53(123) в ЭЛЬБРУС-Б (ВНЛ), МКБ-8601 (ANU) — выдача номера старшей единицы.

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

  • 88(210) — выдача исполнительного адреса в РМР (UTY).

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

  • 43(103) в ЭЛЬБРУС-Б (СМЛ), МКБ-8601 (UTS) — загрузка адреса в сумматор магазиннная.

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

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

  • 94(224) — считывание из памяти в РМР (ХТУ).

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

  • 95(225) — логическое умножение РМР (УАХ).

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

  • 96(226) — сравнение операнда с РМР (УЕХ).

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

  • 97(227) — логическое сложение с РМР (УОХ).

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

  • 98(230) — запись РМР в память (УТХ).
  • 3f 84 (077 204) — логическое умножение (ААУ).

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

  • 3f 85 (077 205) — сравнение сумматора с РМР (АЕУ).

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

  • 3f 86 (077 206) — логическое сложение сумматора и РМР (АОУ).

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

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

  • 3f 90 (077 220) — обмен содержимого модификаторов (MCJ).

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

  • 3f 91 (077 221) — арифметический сдвиг модификатора (MSN).

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

  • 3f 27 (077 047) в ЭЛЬБРУС-Б (ИМ), МКБ-8601 (J-М) — вычитание модификаторов.

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

  • А0(240) — установка адреса полуслова на модификатор (VTMH).

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

  • А1(241) — уст. Адреса 16-р.фрагмента на модификатор (VTMQ).

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

  • А2(242) — установка адреса байта на модификатор (VTMB).

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

  • А3(243) — установка адреса бита на модификатор (VTMF).

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

  • А4(244) — префиксация адресом со сдвигом (UTCS).

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

  • 3f 94 (077 224) — упаковка модификаторов (МРАС).

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

  • 3f 95 (077 225) — распаковка модификаторов (MUNP).

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

  • 3f а2 (077 242) — арифметич.сложение с модификатором (А+I).

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

  • 3f а3 (077 243) — арифметич. Вычитание модификатора (А-I).
  • 3f а4 (077 244) — обратное вычитание модификатора (I-А).
  • 3f а7 (077 247) — деление целочисленное (А/I).

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

  • 3f а8 (077 250) — умножение целочисленное (А*I).

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

  • 3f а9 (077 251) — логическое умножение (AAI).

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

  • 3f аа (077 252) — сравнение (AEI).

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

  • 3f ав (077 253) — логическое сложение (AOI).

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

  • 22(042) в ЭЛЬБРУС-Б (ИБР), МКБ-8601) (JMGE) — переход,если модификатор больше или равен “0”.

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

  • 23(043) в ЭЛЬБРУС-Б (ИМЕ), МКБ-8601 (JMLT) — переход, если модификатор меньше “0”.
  • 24(044) в ЭЛЬБРУС-Б (ИМР), МКБ-8601 (JMLE) — переход, если модификатор меньше или равен “0”.
  • 25(045) в ЭЛЬБРУС-Б (ИБ), МКБ-8601 (JMGT) — переход, если модификатор больше “0”.
  • А9(251) — конец цикла с уменьшением значения модиф.(VRM).

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

  • Аа(252) — условный переход по “0” магазинный (UZAS).

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

  • Ав(253) — условный переход по “1” магазинный (U1AS).

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

  • Ас(254) — условный переход при переполнении (JOVR).

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

  • Ad(255) — условный переход при переносе (JCRY).

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

  • Ае(256) — переход, если сумматор больше 0 (JAGT).

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

  • Af(257) — переход,если сумматор больше или равен 0 (JAGE).
  • В0(260) — переход, если сумматор меньше 0 (JALT).
  • В1(261) — переход, если сумматор меньше или равен 0 (JALE).
  • В2(262) — переход, если сумматор равен 0 (JAEQ).

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

  • В3(263) — переход, если сумматор не равен 0 (JANE).
  • В4(264) — переход к подпрограмме (JMPS).

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

  • 3f 87(077 207) — возврат из подпрограммы (RETS).

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

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

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

  • 3f 96 (077 226) — сдвиг арифметический целого слова по адресу (ASNA).

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

  • 99(231) — сложение арифметическое (А+L).
  • 9а(232) — вычитание арифметическое (А-L).
  • 9в(233) — обратное вычитание (L-А).
  • 9е(236) — деление целочисленное (А/L).
  • 9f(237) — умножение целочисленное (А*L).

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

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

  • В6(266) — запись полуслова в память (АТН).

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

  • В7(267) — запись полуслова магазинная (STH).

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

  • В8(270) — чтение полуслова из памяти (НТА).

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

  • В9(271) — чтение полуслова магазинное (HTS).

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

  • Ва(272) — арифметическое сложение с полусловом (А+Н).

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

  • Вв(273) — арифметическое вычитание полуслова (А-Н).
  • Вс(274) — обратное вычитание (Н-А).
  • Bf(277) — деление целочисленное (А/Н).

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

  • С0(300) — умножение целочисленное (А*Н).
  • С1(301) — логическое умножение (ААН).

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

  • С2(302) — сравнение (АЕН).

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

  • С3(303) — логическое сложение (АОН).

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).

  • С4(304) — запись в память (ATQ).

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

  • С5(305) — запись в память магазинная (STQ).
  • С6(306) — чтение из памяти (QTA).
  • С7(307) — чтение из памяти магазинное (QTS).
  • С8(310) — сравнение (AEQ).

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

  • С9(311) — логическое умножение (AAQ).
  • Са(312) — логическое сложение (AOQ).

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

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

  • Св(313) — запись байта (АТВ)

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

  • Сс(314) — запись байта магазинная (STB)
  • cd(315) — чтение байта (ВТА)
  • се(316) — чтение байта магазинное (BTS)
  • cf(317) — сравнение с байтом (АЕВ)

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

  • D0(320) — логическое умножение на байт (ААВ)
  • d1(321) — логическое сложение с байтом (АОВ)

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

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

  • D2(322) — запись бита в память (ATF).
  • D3(323) — запись бита в память магазинная (STF).
  • D4(324) — чтение бита из памяти (FTA).
  • D5(325) — чтение бита магазинное (FTS).
  • D6(326) — сравнение (AEF).

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

  • D7(327) — логическое умножение (AAF).
  • D8(330) — логическое сложение (AOF).
  • D9(331) — установка бита в “1” по исп.адресу памяти (SETF).

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

  • Dа(332) — установка бита в “0” по исп.адресу памяти (CLRF).

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

  • 3f а1 (077 241) — размножение заданного бита А влево (EXTF).

Производится размножение заданного разряда регистра А влево до границы слова. Исполнительный адрес задает номер бита 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 (старший)

  • 3f в0 (077 260) — установка бита сумматора в “1” (NTA).
  • 3f в1 (077 261) — установка бита магазинная (NTS).
  • 3f в2 (077 262) — сравнение (AEN).

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

  • 3f в3 (077 263) — логическое умножение (AAN).
  • 3f в4 (077 264) — логическое сложение (AON).

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

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

  • Dс(334) — запись сумматора и РМР в память (ATD).
  • Dd(335) — чтение двойного слова в сумматор и РМР (DTA).

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

  • Dе(336) — сложение с дв. Точностью (А+D).
  • Df(337) — вычитание с дв. Точностью (А-D).
  • Е0(340) — обратное вычитание с дв. Точностью (D-А).
  • Е3(343) — деление с дв. Точностью (А/D).
  • Е4(344) — умножение с дв. Точностью (А*D).

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

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

  • F0(360) — чтение специальных регистров ЦП (RMOD).

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

  • F1(361) — запись в специальные регистры ЦП (WMOD).

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

  • 3f fd (077 375) — возврат из прерывания (IJP).

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

  • F2(362) — установка РР адресом (SETR).

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

  • F3(363) — гашение РР адресом (CLRR).

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

  • F4(364) — семафорное чтение (SEMR).

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

  • F7(367) — семафорная запись (SEMW).

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

  • F8(370) — захват “глобального” семафора (SMON).

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

  • F9(371) — освобождение “глобального” семафора (CMON).

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

  • F5(365) — запись сумматора с заданным тегом (ТТХ).

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

  • F6(366) — чтение с тегом (ТТА).

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

  • 3f fе (077 376) — возврат из экстракода (RET).

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

  • 3f ff (077 377) — останов (HLT).

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


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

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

  • 02(002) — считывание числа без изменения признаков результата (СН).

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

  • 04(004) — АС, 05(005) - АВ, 06(006) - ОВ, 07(007) - МВ 0с(014) - ИЗ, 0f(017) - АУ

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

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

  • 17(027) — установка режима выполнения команд по коду числа (РК).
  • 1е(036) — обратный сдвиг по коду (ОК).

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

  • 1а(032) — универсальный цикл (УЦ).

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

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

  • 22(042) - ИБР, 23(043) - ИМЕ, 24(044) - ИМР, 25(045) - ИБ.

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

  • 28(050) - УР, 29(051) - УН, 2А(052) - УБР, 2В(053) - УМЕ, 2С(054) - УМР, 2D(055) - УБ, 2Е(056) - УС, 2F(057) - УНС.

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

  • 30(060) — считывание с тегом (СТ).
  • 31(061) — синхронизационное считывание (СС).

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

  • 34(064) — запись нуля (ЗН).

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

  • 37(067) — запись с тегом (ЗТ).
  • 38(070) — установка адреса командного слова (УА).

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

  • 39(071) — косвенная адресация (КА).

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

  • 3а(072) — префиксация (ПФ).

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

  • 3е(076) — установка группового режима (УГ).
  • 40(100) — СЧЦ, 41(101) - СМЦ, 42(102) - СНЦ, 44(104) - АСЦ, 45(105) - АВЦ, 46(106) - ОВЦ, 47(107) - МВЦ, 4С(114) - ИЗЦ, 4F(117) - АУЦ.

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

  • 4в(113) — ЦСЛ, 50(120) - СБЛ, 51(121) - РБЛ.

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

  • 60(140) — ЗЧК, 61(141) - ЗМК, 62(142) - СНК, 63(143) - СМК, 64(144) - АСК, 65(145) - АВК, 66(146) - ОВК, 67(147) - МВК, 68(150) - СЧК, 69(151) - ЛУК, 6А(152) - СРК, 6В(153) - ЦСК, 6С(154) - ИЗК, 6D(155) - ЛСК, 6Е(156) - АДК, 6F(157) - АУК, 70(160) - СБК, 71(161) - РБК, 72(162) - ВЧК, 73(163) - ВНК, 74(164) - СПК, 75(165) - ВПК, 76(166) - СКК, 78(170) - СТК, 79(171) - ССК, 7С(174) - ЗНК, 7Е(176) - ОКК, 7F(177) - ЗТК.

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

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

  • 3f 11 (077 021) — выдача мантиссы с РМР (ММ).

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

  • 3f 14 (077 024) — коррекция порядка (КП).

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

  • 3f 19 (077 031) — выдача РМР (МР).

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

  • 3f 18 (077 030) — выдача регистра признаков (ВР).
  • 3f 1а (077 032) — нетождественность старшая (НС).

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

  • 3f 1е (077 036) — обратный сдвиг (ОД).

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

  • 3f 1f (077 037) — установка адресом режима выполнения команд (РА).
  • 3f 23 (077 043) — выдача индекс-регистра как целого (ВЦ).

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

  • 3f 26 (077 046) — вычитание индекс-регистров (МИ).

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

  • 3f 34 (077 064) — выделение целой части в смысле алгола (ЦА).

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

  • 3f 35 (077 065) — выделение целой части в смысле фортрана (ЦФ).

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

  • 3f 36 (077 066) — прямой сдвиг по коду на рг. РМР (МД).

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

  • 3f 38 (077 070) — косвенное чтение (КЧ).

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

  • 3f 3с (077 074) — преобразование в дополнительный код (ПД).

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

  • 3f 3е (077 076) — обратный сдвиг по коду на РМР (РД).

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

  • 3f 3f (077 077) — установка условия (УУ).
  • 3f 51 (077 121) — МММ, 3F 54 (077 124) - КПМ, 3F 56 (077 126) - СДМ, 3F 58 (077 130) - ВРМ, 3F 59 (077 131) - МРМ, 3F 5А (077 132) - НСМ, 3F 5С (077 134) - КСМ, 3F 5D (077 135) - КВМ, 3F 5Е (077 136) - ОДМ, 3F 5F (077 137) - РАМ, 3F 62 (077 142) - ВИМ, 3F 63 (077 143) - ВЦМ, 3F 74 (077 164) - ЦАМ, 3F 75 (077 165) - ЦФМ, 3F 76 (077 166) - МДМ, 3F 78 (077 170) - КЧМ, 3F 7С (077 174) - ПДМ, 3F 7Е (077 176) - РДМ, 3F 7F (077 177) - УУМ.

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


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

 
proj/besm/doc-mkb/micro-besm5.txt · Последние изменения: 2008/03/20 00:38
 
Copyright (C) 1996-2013 Serge Vakulenko
serge@vak.ru