СИСТЕМА КОМАНД НЦ-31
В документации на ПРЦ система команд НЦ-31
описана в виде таблиц, каждая из которых представляет собой нечто среднее между
головоломкой и шифровкой. Плюс ошибки и опечатки. Плюс еще то обстоятельство,
что первоначально эта система задумывалась, видимо, под шестнадцатеричный код,
а везде в документации на НЦ-31 и в распечатке РПТ используется восьмеричный
код. По этим причинам описать данную систему «коротко и ясно», как это обычно
делается в случаях с «нормальными» процессорами, невозможно. По крайне мере мне
эта задача оказалась не по плечу. Поэтому я не нашел ничего лучше, как дать
ниже просто готовые коды наиболее употребительных команд. Если же нужной
команды нет в нижеприведенном списке, то имея перед глазами, с одной стороны,
готовый код аналогичной команды, с другой – соответствующую ему таблицу, можно
при желании «расшифровать» эту таблицу и составить недостающую команду.
174764 Стоп
175764 Ждать (то же, что Стоп, но процессор переходит
в режим ожидания прерывания.)
1. Пересылка константы в регистр.
160200 ХХХХХХ
> Р0 161600
ХХХХХХ > Р3
ХХХХХХ
160600 ХХХХХХ
> Р1 162200 ХХХХХХ > Р4
ХХХХХХ
161200 ХХХХХХ
> Р2 162600 ХХХХХХ > Р5
ХХХХХХ
2. Из регистра в регистр
70020 Р0>Р1 70001 Р1>Р0 70002 Р2>Р0
70040 Р0>Р2 70041 Р1>Р2
70022 Р2>Р1
70060 Р0>Р3 70061 Р1>Р3 70062 Р2>Р3
70100 Р0>Р4 70101 Р1>Р4 70102 Р2>Р4
70120 Р0>Р5 70121 Р1>Р5 70122 Р2>Р5
70140 Р0>Р6 70141 Р1>Р6 70142 Р2>Р6
70160 Р0>Р7 70161 Р1>Р7 70162 Р2>Р7
70200 Р0>Р10 70201 Р1>Р10 70202 Р2>Р10
70220 Р0>Р11 70221 Р1>Р11 70222 Р2>Р11
70240 Р0>Р12 70241 Р1>Р12 70242 Р2>Р12
70260 Р0>Р13 70261 Р1>Р13 70262 Р2>Р13
70300 Р0>Р14 70301 Р1>Р14 70302 Р2>Р14
70320 Р0>Р15 70321 Р1>Р15 70322 Р2>Р15
70340 Р0>Р16 70341 Р1>Р16 70342 Р2>Р16
70360 Р0>Р17 70361 Р1>Р17 70362 Р2>Р17
·
Остальные
команды аналогично. Последняя (младшая) цифра - номер регистра-источника от 0
до 7. Вторая и третья - номер
регистра-приемника (0-17), представленный как это показано в примерах.
170773
Р0>РМ; 170763 Р0>РР; 170720 Р0>РБД0; 170722 Р0>РУС
160773
РМ>Р0; 160763 РР>Р0; 170721 Р0>РБД1; 160720
РБД0>Р0
3. Персылка из регистра по
адресу=ХХХХХХ+РБД
150640 Р1 > Адрес; Адрес = ХХХХХХ + РБД1
ХХХХХХ
150240 РО > Адрес; Адрес = ХХХХХХ + РБД1
ХХХХХХ
3.1 Пересылка из рег. по адресу=РБД0+ХХ
(смещение)
100ХХ Р0> 300ХХ
Р0>РБД1+ХХ
104ХХ Р1>
110ХХ Р2>
АДР=РБД0+ХХ (ХХ - правый байт команды)
114ХХ Р3> 314ХХ
120ХХ Р4>
124ХХ Р5>
3.2 Пересылка по адресу, находящемуся в
рег.
160222
Константу, находящуюся по адр. в Р02, перслать в Р0
150201
Содержимое Р0 перслать по адр=РБД0+Р1
141201
Содержимое адр=РБД0+Р1 переслать в Р2
140201
Содержимое адр=РБД0+Р1 переслать в Р0
3.3
Пересылка по адр=РБД+(Рj+1)
150221
Содержимое Р0 переслать по адр=РБД1+(Р1+1)
151221
Содержимое Р2 переслать по адр=РБД1+(Р1+1)
3.4 пересылка рег > адр=РБД+смещение
000ХХХ РБДО+ХХХ > Р0 ХХХ - правый байт
0004ХХ
РБД0+ХХ > Р1
020ХХХ РБД1+ХХХ
> Р0
010ХХХ Р0
> РБД0+ХХ
3.5 Пересылка БППЛ (БППП)
141040 -
пересылка правого байта из адреса РБД0+ХХХХХ в левый байт Р0
0ХХХХХ
141040 - то
же, но адрес источника = РБД1+ХХХХХ
1ХХХХХ
142040 - то
же, но приемник - правый байт Р0
ХХХХХХ
3.6 Пересылка из РОНа в регистры ВУ НЦ-31
или МС2109
Если РБД1 = 070400, то могут быть использованы
следующие команды обращения к ВУ:
ВУ
КЭ: Р1> Р2> Р3> Р4> Р5>
30061
Р0>170461 30461 31061 31461 32061 32461
30062
Р0>170462 30462 31062 31462 32062 32462
30060 Р0>170460 30460 31060 31463 32060 32460
ВУ КП:
30100 Р0>170500 30500 31100 31500 32100 32500
30101
Р0>170501 30501 31101 31501 32101 32501
30103
Р0>170503 30503 31103 31503 32103 32503
ВУ КИП:
30120 Р0>170520
30121 Р0>170521
30122 Р0>170522
30123 Р0>170523
30124 Р0>170524
ВУ ПО:
30040 Р0>170440 30440 31040 31440 32040 32440
30041 Р0>170441 30441 31041 31441 32041 32441
30042 Р0>170442 30442 31042 31442 32042 32442
30043 Р0>170443 30443 31043 31443 32043 32443
30044 Р0>170444 30444 31044 31444 32044 32444
30045 Р0>170445 30445 31045 31445 32045 32445
3.6.1 то же, но в обратном направлении
020046 170446>P0
021446
170446>P3
4. АРИФМЕТИЧЕСКО-ЛОГИЧЕСКИЕ ОПЕРАЦИИ
1732ХХ слож. с переносом.
1772ХХ ТЕСТ
1752ХХ инв.
1702ХХ дек.(-1) ХХ-номер рег. 00-17
1742ХХ инк.(+1)
1712ХХ обн.
161401 СЛЖ
- сложение 177400
177400
112464 сравнение Р4,Р3
11240Х срав.Р0,РХ Х=0-7
11242Х срав.Р1,РХ Х=0-7
11244Х срав.Р2,РХ Х=0-7
11246Х срав.Р3,РХ Х=0-7
162400 срав.Р0,ХХХХХХ
ХХХХХХ
162405 срав.Р5,ХХХХХХ
ХХХХХХ
17122Х цикл. сдв. вправо РХ, Х=0-7
17522Х цикл. сдв. влево РХ, Х=0-7
116543 КОН - конъюнкция (и) Р3 и Р6, результат в
Р6
115446 ДИЗ - дизьюнкция (или) Р6 и Р2, результат в Р2
161443 содержимое Р3 увел. на 1, затем
используется в кач. адреса, содержимое
которого складывается с Р0; результат - в Р0
161441 то же, но вместо Р3 - Р1
161442 то же, но вместо Р3 - Р2
*остальные команды аналогично; младший
разряд - номер рег. 0-7
5. ПЕРЕХОДЫ
161520 безусловный переход по адресу ХХХХХХ
ХХХХХХ
5.1 БП по смещению
61400 БП на
этот-же адрес
61777 БП на
предыдущий адрес
61401 БП на
следующий адрес и т.д. Смещение=правый байт.
5.2 Переход, на адр. АААААА ес. результат
опер. НЕ=0
AAAAAA
AAAAAA
XXXXXX
AAAAAA
XXXXXX XXXXXX
62377 62376 62375 и
т.п.
5.2.1 то же, но если результат опер. =0
62401 62402 62403
AAAAAA XXXXXX XXXXXX
AAAAAA XXXXXX
AAAAAA
5.3 Переход с возвратом (ПБВ)
161120 Адрес
следующей команды в стек и переход на адр. ХХХХХХ
ХХХХХХ
161560 БП
по адресу в стеке
5.4 БП с возвратом по адресу, содержащемуся в
яч. с адр.ХХХ (ПОС) 61ХХХ ХХХ-правый
байт. В яч.
ХХХ - адрес перехода. Взврат
по команде 161560.