Система команд БЭСМ-6

Ресурсы центрального процессора, доступные пользователю

(По традиции, разряды в регистрах нумеруются справа налево, начиная с 1.)

Структура команд:

Все команды были 24-разрядные и располагались в словах попарно. Переходы допускались только на границы слов.

Всего было две структуры:

1-я структура (короткоадресная команда)
2421
20 19
1813
121
ИР 0 S КОп1 адрес
Исполнительный адрес (Аисп) = ([ИР] + адрес + S * 070000 + МОД) mod 0100000

2-я структура (длинноадресная команда)
2421
20
1916
151
ИР 1 КОп2 адрес
Аисп = ([ИР] + адрес + МОД) mod 0100000

Описания кодов операций (идет строительство или подвешен груз)

По традиции, коды операций пишутся в восьмеричной системе, включая разряды 20 - 13 или 20 - 16 и принимая S = 0, т.е. диапазоны кодов операций первой структуры - 000 - 077, а второй - 20 - 37.

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

Более точные описания, будем надеяться, появятся здесь позднее.

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

КОпМнемоникаОписаниеГруппа
000ЗПЗапись СМ по АиспНе изм.
001ЗПМЗП, затем магазинное считываниеЛогическая
002РЕГОбращение к спец.регистрам (привилегированная команда)Лог/Не изм.
003СЧММагазинная запись, затем СЧЛогическая
004СЛСложение СМ и слова по АиспСложения
005ВЧВычитание слова по Аисп из СМСложения
006ВЧОБВычитание обратноеСложения
007ВЧАБВычитание абсолютных величинСложения
010СЧСчитывание слова по Аисп на СМЛогическая
011ИЛогическое И СМ и слова по АиспЛогическая
012НТЖИсключающее ИЛИ (нетождественность)Логическая
013СЛЦЦиклическое сложение СМ и слова по Аисп как целыхУмножения
014ЗНАКИзменение знака СМ если слово по Аисп < 0Сложения
015ИЛИЛогическое ИЛИЛогическая
016ДЕЛДелениеУмножения
017УМНУмножениеУмножения
020СБРСборкаЛогическая
021РЗБРазборкаЛогическая
022ЧЕДЧисло единиц в коде на СМЛогическая
023НЕДНомер старшей единицы в коде на СМЛогическая
024СЛПСложение порядков чисел на СМ и по АиспУмножения
025ВЧПВычитание порядковУмножения
026СДСдвигЛогическая
027РЖУстановка регистра режимовЧто поставят
030СЧРЖСчитывание регистра режимов на СМВлияет
031СЧМРПередача РМР на СМВлияет
032УВВУправление вводом-выводом (привилегированная)Не изм.
033---
034СЛПАСложение порядка числа на СМ с адресомУмножения
035ВЧПАВычитание адреса из порядка числа на СМУмножения
036СДАСдвиг по адресуЛогическая
037РЖАУстановка регистра режимов по адресуЧто поставят
040УИУстановка индекс-регистра по СМНе изм.
041УИМУИ, затем магазинное считываниеЛогическая
042СЧИСчитывание индекс-регистра на СМЛогическая
043СЧИММагазинная запись, затем СЧИЛогическая
044УИИУстановка индекс-регистра по индекс-региструНе изм.
045СЛИСложение индекс регистровНе изм.
046Не используется, но эквивалентно 044 и 045 соответственно
047
050
.
.
.
077
ЭnnЭкстракоды, для обращений к операционной системе и вычисления математических функций
20
21
22МОДАМодификация адреса ("МОДА 0" == НОП)Не изм.
23МОДМодификация адреса кодом по Аисп
24УИАУстановка индекс-регистра по адресу
25СЛИАСложение индекс-регистра с адресом
26ПОПереход по нулюВлияет
27ПЕПереход по единице (не нулю)
30ПБПереход безусловныйНе изм.
31ПВПереход с возвратом
32ВЫПРВозврат из прерывания (привилегированная)
33СТОПОстанов (непривилегированная :-) )
34ПИОПереход по нулю индекс-регистра
35ПИНОПереход по ненулю индекс-регистра
36Эквивалентно 34
37ЦИКЛЕсли индекс-регистр не ноль, увеличить на 1 и перейтиНе изм.

Все команды кроме МОДА и МОД устанавливают регистр модификации адреса в 0.

Если А текущей команды равен 0, и в команде используется M17, следующие команды исполняются в магазинном режиме:

а именно, ИР++ выполняется после ЗП, и ИР-- перед всеми остальными командами. Или скажем так: сумматор - это верхушка магазина, магазин растет в сторону увеличения адресов, и M17 указывает на первую свободную ячейку магазина в памяти.

(В качестве упражнения читателю предлагается понять, что делают команды СЧМ (М17) и ЗПМ (М17).)


Нахождение номера старшего разряда СМ, содержащего единицу

48-й разряд имеет номер 1, 47-й разряд - 2 и т.д. "При СМ = 0 и единственной единице в 1-ом разряде результат одинаков и равен 48, что снижает полезность этой команды", говорится в ранних описаниях системы команд, но на самом деле во всех БЭСМ-6, начиная с самой первой, команда НЕД возвращала 0, если сумматор был равен 0. В РМР, начиная со старшего разряда, заносится "остаток" сумматора, начиная с разряда, следующего за тем, номер которого определен.


Иллюстрация команды СБР

СМ 0xB742 СБР 0x0F53 = 0x7A00
Слово по Аисп
Результат


Иллюстрация команды РЗБ

СМ 0xB742 РЗБ 0x0F53 = 0x0B13
Слово по Аисп
Результат


Работа условных переходов

Согласно следующему псевдокоду:

switch (Омега) {
	case сложения: Zero = (СМ[41] == 0); /* СМ >= 0 */ break;
	case умножения: Zero = (СМ[48] == 1); /* abs(СМ) >= 0.5 */ break;
	case логическая: Zero = (СМ[48:1] == 0); /* СМ == 0 */ break;
	case 0: Zero = FALSE;
}

Работа команды СЧМР

Если текущая Омега логическая, то СМ = РМР; иначе СМ[40:1] = РМР[40:1], СМ[41] = 0, СМ[48:42] += Aисп[7:1] - 64;


© Leonid A. Broukhis, 1997

К страницам, посвященным БЭСМ-6, было 4955 обращений.