(По традиции, разряды в регистрах нумеруются справа налево, начиная с 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, было 391 обращений.