(По традиции, разряды в регистрах нумеруются справа налево, начиная с 1.)
|
41 |
|
||||
| Порядок | Знак (+ = 0, - = 1) | Мантисса (в дополнительном коде) |
| 6 |
|
2 | 1 | ||
| Блокировка АВОСТ | Признак группы команд | Блокировка округления | Блокировка нормализации |
Признак группы команд, в зависимости от принадлежности последней выполненной команды, могла принимать следующие значения:
Все команды были 24-разрядные и располагались в словах попарно. Переходы допускались только на границы слов.
Всего было две структуры:
| 1-я структура (короткоадресная команда) | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
20 | 19 |
|
|
||||||
| ИР | 0 | S | КОп1 | адрес | ||||||
| 2-я структура (длинноадресная команда) | |||||||||
|---|---|---|---|---|---|---|---|---|---|
|
20 |
|
|
||||||
| ИР | 1 | КОп2 | адрес | ||||||
По традиции, коды операций пишутся в восьмеричной системе, включая разряды 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 | ПО | Переход по ω == 0 | Влияет |
| 27 | ПЕ | Переход по ω != 0) | |
| 30 | ПБ | Переход безусловный | Не изм. |
| 31 | ПВ | Переход с возвратом | |
| 32 | ВЫПР | Возврат из прерывания (привилегированная) | |
| 33 | СТОП | Останов (непривилегированная :-) ) | |
| 34 | ПИО | Переход по нулю индекс-регистра | |
| 35 | ПИНО | Переход по ненулю индекс-регистра | |
| 36 | Эквивалентно 34 | ||
| 37 | ЦИКЛ | Если индекс-регистр не ноль, увеличить на 1 и перейти | Не изм. |
Все команды кроме МОДА и МОД устанавливают регистр модификации адреса в 0.
Если А текущей команды равен 0, и в команде используется M17, следующие команды исполняются в магазинном режиме:
(В качестве упражнения читателю предлагается понять, что
делают команды СЧМ (М17) и ЗПМ (М17).)
48-й разряд имеет номер 1, 47-й разряд - 2 и т.д. "При СМ = 0 и единственной единице в 1-ом разряде результат одинаков и равен 48, что снижает полезность этой команды", говорится в ранних описаниях системы команд, но на самом деле во всех БЭСМ-6, начиная с самой первой, команда НЕД возвращала 0, если сумматор был равен 0. В РМР, начиная со старшего разряда, заносится "остаток" сумматора, начиная с разряда, следующего за тем, номер которого определен.
| СМ |
![]() |
|---|---|
| Слово по Аисп | |
| Результат |
| СМ |
![]() |
|---|---|
| Слово по Аисп | |
| Результат |
Согласно следующему псевдокоду:
switch (Признак группы команд) {
case сложения: ω = (СМ[41] == 1); /* СМ < 0 */ break;
case умножения: ω = (СМ[48] == 0); /* abs(СМ) < 0.5 */ break;
case логическая: ω = (СМ[48:1] != 0); /* СМ != 0 */ break;
case 0: ω = TRUE;
}
Если текущий признак группы команд логический, то СМ = РМР; иначе СМ[40:1] = РМР[40:1], СМ[41] = 0, СМ[48:42] += Aисп[7:1] - 64;
К страницам, посвященным БЭСМ-6, было 227 обращений.