====== Электронная вычислительная машина М-20 ====== * Главный конструктор: академик С.А.Лебедев * Год окончания разработки: 1958 * Годы выпуска: 1958-1964 * Число выпущенных машин: 20 * Элементная база: электронные лампы (1600 штук) * Средняя производительность: 20 тыс. операций в секунду * Потребляемая мощность: 50 кВт {{m20.jpg}} [[http://www.computer-museum.ru/histussr/26-1.htm | Статья на сайте виртуаьного компьютерного музея]]. Система команд машин М-220 и БЭСМ-4 расширена по сравнению с М-20. Дополнительные команды (20, 40, 60, 17, 37, 57) здесь не описываются. {{m20-ime.pdf | М.Р.Шура-Бура, В.С.Штаркман "Вычислительная машина М-20"}}, Москва ЦБТИ 1962. Материалы из книги Ляшенко В.Ф. "Программирование для ЦВМ с системой команд типа М-20": * {{m20-poster.pdf | Вкладыш}} с кратким описанием системы команд М-20, М-220 и БЭСМ-4 (2.7 Мб). * {{m20-chapter5.pdf | Глава 5: Некоторые приёмы программирования}} (2.0 Мб). * {{m20-is2.pdf | Описание и коды ИС-2}} (2.9 Мб). ---- ====== Представление чисел ====== ^ 45 ^ 44 ^ 43---37 ^ 36--------------------------------------1 ^ | признак | знак | порядок | мантисса | * Знак равен 0 для положительных и 1 для отрицательных чисел. * Порядок смещён на 64. * Мантисса хранится в прямом коде как для положительных, так и для отрицательных чисел. * Ноль представлен нулями во всех битах. * Признак не имеет арифметического значения. Формула такая: Значение = 0.Мантисса * (1 - Знак*2) * 2 (Порядок - 64) Для нормализованных чисел бит 36 всегда равен 1. == Пример: 1.0 == ^ 45 ^ 44 ^ 43-----37 ^ 36--------------------------------------1 ^ | x | 0 | 1 000 001 | 100 000 000 000 000 000 000 000 000 000 000 000 | == Пример: -1.0 == ^ 45 ^ 44 ^ 43-----37 ^ 36--------------------------------------1 ^ | x | 1 | 1 000 001 | 100 000 000 000 000 000 000 000 000 000 000 000 | ====== Представление команд ====== ^ 45 ^ 44 ^ 43 ^ 42---37 ^ 36------------25 ^ 24------------13 ^ 12------------1 ^ | Признак А1 | Признак А2 | Признак А3 | Код операции | Адрес 1 | Адрес 2 | Адрес 3 | ====== Регистры ====== ^ Сокращение ^ Название ^ Разрядность ^ Описание ^ | РА | Регистр адреса | 12 бит | Прибавляется к адресу Аi, если в команде установлен соответствующий бит-признак. | | Ω | Управляющий сигнал | 1 бит | Устанавливается большинством команд. Используется в командах условного перехода. | | РМР | Регистр младших разрядов | 36 бит | Хранит младшую часть мантиссы результата умножения. Считывается командой 47. | ====== Коды операций ====== У команд М-20 не было мнемонических обозначений, программирование велось непосредственно в числовых обозначениях. Указанная в таблицах мнемоника придумана автором (по аналогии с БЭСМ-6). === Арифметические операции === ^ КОП ^ Мнемоника ^ Описание ^ | 01 | сл | Сложение с округлением и нормализацией | | 21 | слбо | Сложение без округления с нормализацией | | 41 | слбн | Сложение с округлением без нормализации | | 61 | слбно | Сложение без округления и без нормализации | | 02 | вч | Вычитание с округлением и нормализацией | | 22 | вчбо | Вычитание без округления с нормализацией | | 42 | вчбн | Вычитание с округлением без нормализации | | 62 | вчбно | Вычитание без округления и без нормализации | | 03 | вчм | Вычитание модулей с округлением и нормализацией | | 23 | вчмбо | Вычитание модулей без округления с нормализацией | | 43 | вчмбн | Вычитание модулей с округлением без нормализации | | 63 | вчмбно | Вычитание модулей без округления и без нормализации | | 04 | дел | Деление с округлением | | 24 | делбо | Деление без округления | | 44 | кор | Извлечение корня с округлением | | 64 | корбо | Извлечение корня без округления | | 05 | умн | Умножение с округлением и нормализацией | | 25 | умнбо | Умножение без округления с нормализацией | | 45 | умнбн | Умножение с округлением без нормализации | | 65 | умнбно | Умножение без округления и без нормализации | | 06 | слпа | Сложение порядка с адресом | | 26 | слп | Сложение порядков чисел | | 46 | вчпа | Вычитание адреса из порядка | | 66 | вчп | Вычитание порядков чисел | | 47 | счмр | Выдача младших разрядов произведения | === Логические операции === ^ КОП ^ Мнемоника ^ Описание ^ | 00 | зп | Пересылка | | 20 | счп | Чтение пультовых тумблеров | | 13 | слк | Сложение команд | | 33 | вчк | Вычитание команд | | 53 | слко | Сложение кодов операций | | 73 | вчко | Вычитание кодов операций | | 14 | сдма | Сдвиг мантиссы по адресу | | 34 | сдм | Сдвиг мантиссы по порядку числа | | 54 | сда | Сдвиг по адресу | | 74 | сд | Сдвиг по порядку числа | | 15 | нтж | Поразрядное сравнение (исключаищее или) | | 35 | нтжс | Поразрядное сравнение и останов машины по несовпадению | | 55 | и | Логическое умножение (и) | | 75 | или | Логическое сложение (или) | | 07 | слц | Циклическое сложение (отдельно порядок и мантисса) | | 27 | вчц | Циклическое вычитание (отдельно порядок и мантисса) | | 67 | сдц | Циклический сдвиг (на 24 по 48-разрядной сетке) | === Операции управления === ^ КОП ^ Мнемоника ^ Описание ^ | 10 | вп | Ввод с перфокарт | | 30 | впбк | Ввод с перфокарт без проверки контрольной суммы | | 50 | ма | Подготовка обращения к внешнему устройству | | 70 | мб | Выполнение обращения к внешнему устройству | | 11 | цме | Сравнение и установка регистра адреса, переход по < и Ω=1 | | 31 | цбре | Сравнение и установка регистра адреса, переход по >= и Ω=1 | | 51 | цмо | Сравнение и установка регистра адреса, переход по < и Ω=0 | | 71 | цбро | Сравнение и установка регистра адреса, переход по >= и Ω=0 | | 12 | цм | Сравнение и установка регистра адреса, переход по < | | 32 | цбр | Сравнение и установка регистра адреса, переход по >= | | 52 | раа | Установка регистра адреса адресом | | 72 | ра | Установка регистра адреса | | 16 | пв | Передача управления с возвратом | | 36 | пе | Передача управления по условию Ω=1 | | 56 | пб | Передача управления | | 76 | по | Передача управления по условию Ω=0 | | 77 | стоп | Останов машины | ====== Примеры программ ====== Примеры взяты из книги Ляшенко. === Пример 1 === Пусть требуется решить уравнение