Статья на сайте виртуаьного компьютерного музея.
Система команд машин М-220 и БЭСМ-4 расширена по сравнению с М-20. Дополнительные команды (20, 40, 60, 17, 37, 57) здесь не описываются.
М.Р.Шура-Бура, В.С.Штаркман "Вычислительная машина М-20", Москва ЦБТИ 1962.
Материалы из книги Ляшенко В.Ф. “Программирование для ЦВМ с системой команд типа М-20”:
| 45 | 44 | 43—37 | 36————————————–1 |
|---|---|---|---|
| признак | знак | порядок | мантисса |
Формула такая: Значение = 0.Мантисса * (1 - Знак*2) * 2 (Порядок - 64)
Для нормализованных чисел бит 36 всегда равен 1.
| 45 | 44 | 43—–37 | 36————————————–1 |
|---|---|---|---|
| x | 0 | 1 000 001 | 100 000 000 000 000 000 000 000 000 000 000 000 |
| 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 | стоп | Останов машины |
Примеры взяты из книги Ляшенко.
Пусть требуется решить уравнение
если известно приближенное значение искомого корня
Преобразуем уравнение к виду
Так как производная функции
в окрестности корня по абсолютной величине меньше единицы, то итерационный процесс будет сходящимся.
Решать уравнение будем по формуле:
пока не получим неравенства
Исходные данные расположены так:
| Номер ячейки | 0020 | 0021 | 0022 | 0023 | 0024 |
|---|---|---|---|---|---|
| Содержимое | x0 = 2 | 4.005 | 1/32 | ε = 0.0001 | 3/4 |
Рабочие ячейки начинаются с ячейки номер 4000.
| Номер ячейки | Команда | Вычисляемая величина |
|---|---|---|
| 0100 | 0 00 0020 0000 4000 | Засылка x0 |
| 0101 | 0 05 4000 4000 4001 | xi2 |
| 0102 | 0 05 4001 4000 4002 | xi3 |
| 0103 | 0 05 4002 4001 4002 | xi5 |
| 0104 | 0 05 0022 4002 4002 | 1/32 xi5 |
| 0105 | 0 05 4001 0024 4001 | 3/4 xi2 |
| 0106 | 0 02 4002 4001 4001 | 1/32 xi5 - 3/4 xi2 |
| 0107 | 0 01 0021 4001 4001 | xi+1 = 1/32 xi5 - 3/4 xi2 + 4.005 |
| 0110 | 0 02 4001 4000 4002 | xi+1 - xi |
| 0111 | 0 03 4002 0023 0000 | | xi+1 - xi | - | ε | |
| 0112 | 0 76 4001 0101 4000 | Пересылка xi+1 в 4000 |
| 0113 | 0 77 0000 0000 0000 | Остановка |
Команда 0112 осуществляет передачу управления на следующую итерацию, если
и засылает в 4000 новое значение xi. После окончания итераций в ячейке 4000 находится корень уравнения
Требуется вычислить значение sin x с точностью до 10-4 по ряду:
Если после использования 20 членов ряда такая точность не достигается, дальнейшие вычисления прекратить и остановить машину.
В ячейке a+1 записана единица, а в a+2 - одна десятитысячная; x находится в ячейке a+3; вычисленное значение sin x должно быть послано в ячейку a+4.
Заметим, что каждый член, начиная со второго, может быть получен из предыдущего умножением его на
Программа для вычисления sin x может быть такой:
| Адрес | Команда | Вычисляемая величина |
|---|---|---|
| k+1 | 0 00 a+3 0000 a+4 | Засылка x |
| k+2 | 0 00 a+3 0000 c+1 | Засылка x |
| k+3 | 0 00 a+1 0000 c+2 | Засылка единицы |
| k+4 | 0 05 a+3 a+3 c+3 | x2 |
| k+5 | 0 02 0000 c+3 c+3 | - x2 |
| k+6 | 0 52 0000 0000 0000 | Очистка РА |
| k+7 | 0 01 c+2 a+1 c+2 | n + 1 |
| k+10 | 0 04 c+1 c+2 c+1 | 1/(n+1) xn/n! (-1)n-1 |
| k+11 | 0 01 c+2 a+1 c+2 | n + 2 |
| k+12 | 0 04 c+1 c+2 c+1 | 1/(n+1)/(n+2) xn/n! (-1)n-1 |
| k+13 | 0 05 c+3 c+1 c+1 | Вычисление члена ряда |
| k+14 | 0 01 a+4 c+1 a+4 | Вычисление суммы ряда |
| k+15 | 0 03 c+1 a+2 0000 | Проверка точности |
| k+16 | 1 51 0022 k+7 0001 | |
| k+17 | 0 36 0000 k+21 0000 | Обход остановки, если получена нужная точность |
| k+20 | 0 77 0000 0000 0000 | Остановка |
| k+21 | . .. …. …. …. |