Статья на сайте виртуаьного компьютерного музея.
Система команд машин М-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 | . .. …. …. …. |