Микросхемы интегральные Л1839ВМ1. Техническое описание: различия между версиями
Panther (обсуждение | вклад) (Новая страница: «== 1.12. Система микрокоманд == В микропроцессорной системе "Электроника 32" имеется несколько форматов микрокоманд. Форматы МА, МВ, МС это содержательные микрокоманды операционного блока (ОБ), остальные форматы микрокоманд не воспринимаются ОБ и служат д...») |
Panther (обсуждение | вклад) |
||
| (не показано 26 промежуточных версий этого же участника) | |||
| Строка 1: | Строка 1: | ||
{{ДИ}} | |||
== 1.12. Система микрокоманд == | == 1.12. Система микрокоманд == | ||
В микропроцессорной системе "Электроника 32" имеется несколько форматов микрокоманд. | В микропроцессорной системе "Электроника 32" имеется несколько форматов микрокоманд. | ||
=== Микрокоманды МА, МВ, МС === | |||
Форматы МА, МВ, МС это содержательные микрокоманды операционного блока (ОБ), остальные форматы микрокоманд не воспринимаются ОБ и служат для управления выборкой микрокоманд из ПЗУ-микрокода, а также для управления ПЛМ-дешифратора команд (ПЛМ ДШК). | Форматы МА, МВ, МС это содержательные микрокоманды операционного блока (ОБ), остальные форматы микрокоманд не воспринимаются ОБ и служат для управления выборкой микрокоманд из ПЗУ-микрокода, а также для управления ПЛМ-дешифратора команд (ПЛМ ДШК). | ||
| Строка 12: | Строка 16: | ||
Расшифруем значение полей содержательных микрокоманд. | Расшифруем значение полей содержательных микрокоманд. | ||
==== ФМК ==== | |||
Поле "ФМК" - формат микрокоманды | Поле "ФМК" - формат микрокоманды | ||
| Строка 28: | Строка 34: | ||
+-----+------+----------------------------------------------+-------------+ | +-----+------+----------------------------------------------+-------------+ | ||
</pre> | </pre> | ||
==== ФД ==== | |||
Поле "ФД" - формат данных | Поле "ФД" - формат данных | ||
| Строка 48: | Строка 56: | ||
+-----+------+-------------------------------------------------------+ | +-----+------+-------------------------------------------------------+ | ||
</pre> | </pre> | ||
==== КОП2 ==== | |||
Поле "КОП2" - коды операций двухадресных и трехадресных микрокоманд | Поле "КОП2" - коды операций двухадресных и трехадресных микрокоманд | ||
| Строка 84: | Строка 94: | ||
Y - операнд в поле У (МК 24-20), | Y - операнд в поле У (МК 24-20), | ||
Z - операнд в поле Z (МК 11-7 ). | Z - операнд в поле Z (МК 11-7 ). | ||
==== КОП1 ==== | |||
Поле "КОП1" - коды операций одноадресных микрокоманд | Поле "КОП1" - коды операций одноадресных микрокоманд | ||
| Строка 129: | Строка 141: | ||
</pre> | </pre> | ||
Здесь Х - операнд по адресу в поле Х (МК 19-15), | Здесь Х - операнд по адресу в поле Х (МК 19-15), М - модификатор, или константа, по адресу в поле АМ (МК 23-20), (т.е. в одноадресной микроинструкции константа читается по полю "Y"). | ||
М - модификатор, или константа, по адресу в поле АМ (МК 23-20), | |||
==== ПС ==== | |||
Поле "ПС" - прием состояния | |||
<pre> | |||
+-------+----+------------------------------------------+ | |||
| ПС | | | |||
+------------+ Прием состояния | | |||
| разряды МК | | | |||
+----+--+----+ | | |||
| 14 | 13 | | | |||
+----+-------+------------------------------------------+ | |||
| O | O | Запись признаков N, Z, V, C (ЗС) | | |||
+----+-------+------------------------------------------+ | |||
| 1 | O | Запись N, Z, V ; Сохранение C (МС) | | |||
+----+-------+------------------------------------------+ | |||
| O | 1 | Запись N, Z ,обнуление V, C (НV) | | |||
+----+-------+------------------------------------------+ | |||
| 1 | 1 | Нет записи состояния (НЗС)| | |||
+----+-------+------------------------------------------+ | |||
</pre> | |||
==== ВА ==== | |||
Поле "ВА" - запись в регистр виртуального адреса (РВА) | |||
* ВА (МК 12) = 0 - адрес в фазе чтения | |||
* ВА (МК 12) = I - адрес в фазе записи. | |||
Если поле ВА (МК 12):=0 в одноадресных микроинструкциях циклических сдвигов, то сдвиг осуществляется минуя разряд "С" в регистре состояния процессора (РСП) (см. рис. 43). | |||
<center> | |||
[[Файл:1839VM1 TO Pic43.png|400px]] | |||
</center> | |||
Однако, при любых микрооперациях сдвигов, арифметических либо циклических, выдвигаемый разряд заносится в "С" РСП. Кроме того, необходимо учесть, что при арифметическом сдвиге влево, если поле ВА:=0 , то данная микрооперация трансформируется в циклический левый сдвиг. | |||
==== НО ==== | |||
Поле "НО" - направление обмена | |||
<pre> | |||
+-------+----+------------------------------------------+ | |||
| НО | | | |||
+------------+ Тип обмена | | |||
| Разряды МК | | | |||
+----+--+----+ | | |||
| 11 | 10 | | | |||
+----+-------+------------------------------------------+ | |||
| 0 | 0 | Обмен с основной памятью (ПМ) | | |||
+----+-------+------------------------------------------+ | |||
| 0 | 1 | Обмен с памятью с перехватом в БРА (ПП) | | |||
+----+-------+------------------------------------------+ | |||
| 1 | 0 | Обмен с системными регистрами (СР) | | |||
+----+-------+------------------------------------------+ | |||
| 1 | 1 | Обмен с системной памятью (СП) | | |||
+----+-------+------------------------------------------+ | |||
</pre> | |||
==== ФО ==== | |||
Поле "ФО" - формата обмена | |||
<pre> | |||
+-------+----+------------------------------------------+ | |||
| ФО | | | |||
+------------+ Тип формата обмена | | |||
| Разряды МК | | | |||
+----+-------+ | | |||
| 9 | 8 | | | |||
+----+-------+------------------------------------------+ | |||
| 0 | 0 | Длинное слово обмена (ДСО) | | |||
+----+-------+------------------------------------------+ | |||
| 0 | 1 | Слово обмена (СЛО) | | |||
+----+-------+------------------------------------------+ | |||
| 1 | 1 | Байт обмена (БО) | | |||
+----+-------+------------------------------------------+ | |||
| 1 | 0 | Четверное слово обмена (ЧСО) | | |||
+----+-------+------------------------------------------+ | |||
</pre> | |||
I) Если в микрокоманде поле "ФО" (МК ⟨9,8⟩) : = ⟨1,0⟩ , то за одну такую микрокоманду можно осуществить сложение/вычитание с переносом (БИТ "С" РСП), используя выходной признак CARRY⟨===⟩ МК⟨9,8⟩:=⟨1,0⟩ (см. синтаксические таблицы микроассемблера). Сложение/вычитание с переносом блокируется, если в данной микрокоманде инициирован обмен. | |||
2) Если в микрокоманде поле "ФО" (МК ⟨9,8⟩ ):= ⟨1,0⟩ , то при использовании микроопераций сдвигов влево (АЛ, ЦЛ) в специальном флажке запоминается признак "V" - переполнение. Логика установления данного флажка такова: если любой из выдвигаемых (на место знакового) разрядов не совпадает со знаковым разрядом, то V:=1, иначе V:=0. | |||
По флагу записи состояния соответствующим образом (в соответствии с данным флажком) устанавливается бит "V" в РСП. | |||
Накопленный признак "V" (флаг переполнения) сбрасывается по концу команды (КК). В противном случае (если поле "ФО" (МК ⟨9,8⟩ ) :≠ ⟨1,0⟩ ) блокируется установка "V" при сдвигах. | |||
==== КОБ ==== | |||
Рассмотрим теперь поле кода обмена ("КОБ") в формате микрокоманды. Для осуществления двойных обменов (обмены 64-разрядными данными) необходимо использовать формат обмена ("ФО") ЧСО (МК ⟨9,8⟩ : = ⟨I,0⟩ ). | |||
Поле "КОБ" - кода обмена | |||
<pre> | |||
+-------+----+------------------------------------------+ | |||
| КОБ | | | |||
+------------+ Тип обмена | | |||
| Разряды МК | | | |||
+----+--+----+ | | |||
| 7 | 6 | 5 | | | |||
+----+---+---+------------------------------------------+ | |||
| 0 | 0 | 0 | Нет обмена (НОБ) | | |||
+----+---+---+------------------------------------------+ | |||
| 0 | 0 | 1 | Чтение данных (ЧД) | | |||
+----+---+---+------------------------------------------+ | |||
| 0 | 1 | 0 | Запись данных (ЗД) | | |||
+----+---+---+------------------------------------------+ | |||
| 0 | 1 | 1 | Чтение-модификация-запись (ЧЗ) | | |||
+----+---+---+------------------------------------------+ | |||
| 1 | 0 | 0 | Запись в регистр-аккумулятор R(17) (WDAK)| | |||
+----+---+---+------------------------------------------+ | |||
| 1 | 0 | 1 | Чтение команды (ЧК) | | |||
+----+---+---+------------------------------------------+ | |||
| 1 | 1 | 0 | Резерв | | |||
+----+---+---+------------------------------------------+ | |||
| 1 | 1 | 1 | Запись смещения в БРД (ЗпЧТ) | | |||
+----+---+---+------------------------------------------+ | |||
</pre> | |||
Процедура чтение-модификация-запись (ЧМЗ) для работы с 64-разрядными данными имеет свои особенности, а именно: | |||
ЧМЗ трансформируется в чтение 64-разрядных данных, а адрес записи аппаратно помещается в регистр-аккумулятор процессора R(17) и для завершения процедуры ЧМЗ необходимо проинициировать запись по адресу, находящемуся : R(17), т.е. тип обмена ЧМЗ 64-разрядными данными фактически не является неделимой операцией. | |||
==== Прочие поля ==== | |||
Разряд (МК0) служит для останова выборки микрокоманд из ПЗУ микрокода (S-бит). Если в микрокоманде МК0:=1, то после выборки этой микрокоманды выборка микрокоманд из ПЗУ приостанавливается до следующей записи в регистр адреса ПЗУ, т.е. если установлен S-бит и заполнены хотя бы две ячейки буфера команд (готовность буфера команд), то блок синхронизации дешифратора команд (БС ПЛМ ДШК) запускает новый цикл ПЛМ. | |||
Разряд (МК 4) - признак приема данных - ПД; используется при чтении с буферного регистра данных (БРД). ПД:=1 в случае использования в переменных полях ПХ, ПУ микрокоманды номера регистра - 1F (БРД). (ПД:=1 - признак продвижения БРД). | |||
Разряды (МК 1-3) управляют выдачей переменных полей микрокоманды. Если признак равен 1, то соответствующее поле микрокоманды выдается не из буфера ПЗУ, а из соответствующего регистра переменного поля, который загружается при дешифрации команды. | |||
Признаки: | |||
* ПХ:=1 — заменить переменное поле Х; | |||
* ПУ:=1 — то же — У; | |||
* ПZ:=1 — то же — Z; | |||
* ПО:=1 — то же — обмена от ПЛМ. | |||
=== Микрокоманды безусловного ветвления === | |||
Рассмотрим формат микрокоманды безусловного ветвления и ветвления по коду прерывания (см. рис. 44 ) | |||
<center> | |||
[[Файл:1839VM1 TO Pic44.png|600px]] | |||
</center> | |||
Расшифруем значение полей данного формата. | |||
Поле "ФМК" - формат микрокоманды | |||
<pre> | |||
+-----------------------------------+-----------------------------+-------------+ | |||
| Разряды МК | Наименование формата | Обобщенное | | |||
+--------+----------+---------+-----+ микрокоманды | обозначение | | |||
| Поле "ФМК" | Нули | "Пр"| | | | |||
+----+----+----+----+----+----+-----+ | | | |||
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | | | | |||
+----+----+----+----+----+----+-----+-----------------------------+-------------+ | |||
| 1 | 1 | 1 | 0 | 0 | 0 | 0 | Безусловное ветвление | БП | | |||
| | | | | | | | | | | |||
+----+----+----+----+----+----+-----+-----------------------------+-------------+ | |||
| 1 | 1 | 1 | 0 | 0 | 0 | 1 | Ветвление по коду | УПР_КП | | |||
| | | | | | | | прерывания | | | |||
+----+----+----+----+----+----+-----+-----------------------------+-------------+ | |||
</pre> | |||
Микрокоманды данного формата в ДБ не передаются (Сигнал ЗпМК - не вырабатывается). Назначение этих микрокоманд - безусловный переход по микроадресу, указанному в разрядах 15-2 микрокоманды. Если разряд модификации микроадреса MADR - установлен (МК 16:=1), то адрес микроперехода формируется следующим образом: | |||
разряды 5-0 адреса заменяются разрядами 5-0 из регистра ОБ с адресом 18, а разряды 13-6 - непосредственно из тела микрокоманды. Далее регистр адреса ПЗУ микрокода (РА) загружается адресом перехода. | |||
Далее, если разряд RETURN установлен (МК 17:=0) , то одновременно с загрузкой регистра адреса ПЗУ микрокода в регистре возврата запоминается адрес микрокоманды, следующей за микрокомандой безусловного перехода. Это предусматривает использование механизма микроподпрограмм с единичным уровнем вложенности. Возврат из микропрограммы осуществляется микроинструкцией типа RTS , которая будет описана ниже. Если же МК 17:=1, то в регистр возврата записи не происходит. | |||
Тот факт, что разряд МК 25:=1 указывает на то, что в качестве индикатора младшей части микроадреса используется четырохразрядный код из регистра - кода прерываний (РКП). Четвертый и пятый разряды адреса микрокоманды - нули. Разряды 13-6 - из тела микрокоманды, т.е. в этом случае осуществляется переход по регистру кода прерываний (УПР_КП). | |||
=== Микрокоманды условного ветвления === | |||
Рассмотрим формат микрокоманды перехода по условиям (см. рис. 45). Поле "ФМК": МК ⟨31, 30, 29⟩ : = ⟨1, 1, 0⟩ | |||
<center> | |||
[[Файл:1839VM1 TO Pic45.png|600px]] | |||
</center> | |||
При выборке микрокоманды перехода по условию в ОБ не выполняются никаких содержательных операций. Происходит только анализ признаков N, Z, V, C, вырабатываемых в ОБ, и анализ некоторых флагов состояния и выработка сигнала ветвления (<span style="text-decoration: overline;">BR</span>). Сигнал <span style="text-decoration: overline;">BR</span> вырабатывается схемой образования условия ветвления и затем поступает на блок управления приемом и обработкой микрокоманд (БПМК), где и формируется сигнал СВМС, который настраивает мультиплексор регистра адреса пуска ПЗУ - микрокода на определенное направление. После выдачи микрокоманды условного перехода она тормозится до появления сигнала готовности ОБ. Если при появлении сигнала готовности ОБ сигнал <span style="text-decoration: overline;">BR</span> переходит в низкий уровень, то следующая микрокоманда выбирается по адресу, указанному в поле микрокоманды (МК 15-2) и далее из адресов, следующих за этим адресом по порядку. Если сигнал <span style="text-decoration: overline;">BR</span> при появлении сигнала готовности ОБ остается на высоком уровне, то следующая микрокоманда выбирается по адресу, следующему за микрокомандой ветвления. | |||
Приведем расшифровку разрядов в данном формате микрокоманды: | |||
* "УВ" (МК 28):=1/0 - условие ветвления по признакам и флагам; | |||
* "N" (МК 27):=1 - ветвление по признаку отрицательного результата; | |||
* "Z" (МК 26):=1 - ветвление по признаку нулевого результата; | |||
* "V" (МК 25):=1 - ветвление по признаку переполнения; | |||
* "C" (МК 24):=1 - ветвление по признаку переноса. | |||
Т.е. коды условий (N,Z,V,C) задаются в поле признаков (МК 27-24) установкой в 1 соответствующего разряда. Если единицами заданы сразу несколько признаков, то они объединяются по схеме "ИЛИ" при анализе, если разряд УВ:=1 (если разряд УВ:=0, то результирующее условие ветвления формируется по конъюнкции). | |||
* "FP" (МК 23):=1 - ветвление по универсальному флагу перехода в микропрограмме (Установка/сбhос флага перехода реализуется микропрограммно при помощи микрокоманды "SRF", которая будет описана ниже); | |||
* "FPD" (МК 22):=1 - ветвление по флагу разрешения прерывания в "длинных" командах (First Part Done ); | |||
* "PRB" (МК 21):=1 - ветвление по флагу PRB для команды PROBEX (флаг PRB взводится аппаратурой диспетчера памяти процессора, если запрещена процедура преобразования адреса); | |||
* "RST" (МК 20):=1 - ветвление по флагу рестарта; | |||
* "RD" (МК 19):=1 - ветвление по признаку "регистр-приемник" (Признак "RD" взводится ПЛМ_ДШК при дешифрации команды и используется также для модификации адреса микропрограммы содержательной обработки); | |||
* "RETURN" (МК 17):=1 - нет записи в регистр возврата;<br/>(МК 17):=0 - запись в регистр возврата (Подробнее см. описание формата микрокоманды безусловного ветвления); | |||
* "ЖС" (МК 16):=1 - признак "ждать состояния" кодов условий N,Z,V,C. | |||
Т.е. поле "ЖС" (МК 16) задает режим анализа. Если ЖС:=0, то анализируются те признаки, которые хранятся в РСП в момент приема микрокоманды ветвления. Если ЖС:=1, то анализируются признаки, выработанные в предыдущей микрокоманде, независимо от того, записываются они в РСП или нет (признаки берутся из схемы формирования состояния). В микрокомандах условного ветвления нет возможности модификации младшей части микроадреса в отличии от микроинструкций безусловного перехода и некоторых других, которые будут описаны ниже. | |||
=== Прочие микрокоманды === | |||
Рассмотрим остальные форматы микрокоманд (см. рис. 46 ). | |||
<center> | |||
[[Файл:1839VM1 TO Pic46.png|500px]] | |||
</center> | |||
==== ЗСЧ, ПСЧ ==== | |||
Для организации управления циклами в микропрограмме служат микрокоманды форматов ЗСЧ (загрузка микропрограммного счечика) и ПСЧ (ветвление по счетчику). Микропрограммный счетчик находится в блоке управления ПЗУ микрокода. Этот счетчик загружается микрокомандой формата ЗСЧ (см. рис. 46). После выборки микрокоманды этого формата в счетчик загружается константа, содержащаяся в разрядах 9-2 микрокоманды. Если разряд модификации константы установлен, т.е. МСС (МК 16):=1 , то разряды 5-0 константы заменяются разрядами 5-0 регистра R(18) ОБ. Разряды 7-6 константы берутся непосредственно из микрокоманды. | |||
При выборке микрокоманды ветвления по счетчику (ПСЧ) анализируется состояние счетчика. После анализа состояния счетчика его содержимое декрементируется н_ единицу. Если содержимое счетчика не равно нулю при анализе, то происходит ветвление по адресу, указанному в разрядах 15-2 микрокоманды. При этом, если разряд модификации адреса микроперехода установлен, т.е. MADR (МК 16):=1, то разряды 5-0 микроадреса перехода заменяются разрядами 5-0 регистра R(I8) ОБ. Разряды микроадреса 13-6 берутся непосредственно из микрокоманды. Если содержимое счетчика равно нулю при анализе, то выбирается следующая микрокоманда. | |||
==== NOP ==== | |||
При выборке микрокоманды NOP (см. рис. 46 ) не производится никаких содержательных операций (пустой заполнитель в микропрограмме). | |||
==== ACC ==== | |||
Микрокоманды формата АСС (см. рис. 46 ) - микрокоманды, выполняющие аппаратным ускорителем команд расширенной арифметики и плавающей точки (формат АСС будет раскрыт в другом источнике - отчет по НИР "Электроника 32 С"). После выборки микрокоманд этого формата в блоке управления приемом и обработкой микрокоманд вырабатывается сигнал торможения приема микрокоманды (блокируется сигнал WMCE). Это торможение сбрасывается внешним сигналом готовности ускорителя (АССЕ). | |||
==== RTS ==== | |||
После выборки микрокоманды формата RTS (см. рис. 46 ) - возврат из микроподпрограммы, в регистр адреса ПЗУ - микрокода загружается содержимое регистра возврата (РВ), т.е. адрес микрокоманды, следующей за последней выполняемой микрокомандой безусловного/условного ветвления. | |||
==== ЧКА ==== | |||
После выборки микрокоманды формата ЧКА (см.рис. 46 ) по адресу, указанному в разрядах I5-2 микрокоманды читается 32-разрядная адресная константа и помещается в регистре констант ПЗУ (RC), который доступен микропрограммно по адресу, указанному по полю чтения константы (поле "Y" в одноадресном формате). Если разряд модификации адреса константы установлен, т.е. MADR (МК 16):=1, то адрес константы формируется следующим образом: | |||
* разряды 5-0 адреса заменяются разрядами 5-0 регистра 18 ОБ; | |||
* разряды 13-6 берутся непосредственно из микрокоманды. | |||
==== ЧЛК ==== | |||
После выборки микрокоманды формата ЧЛК (см. рис. 46) в регистр констант ⟨RC⟩(в разряды 23-0) загружается содержимое микрокоманды из разрядов 25-2. Разряды 31-24 ⟨RC⟩ загружаются нулями, если признак СБ:=0 (МК 1), и единицами, если СБ:=1. | |||
Регистр констант доступен микропрограммно по адресу, указанному по полю чтения константы. Для чтения литеральных и адресных констант используется адрес ⟨6⟩ в блоке констант (БК). | |||
==== SRF ==== | |||
Микрокоманды формата SRF (см. рис. 46) используются для установки/сброса некоторых функциональных флагов: | |||
<pre> | |||
+--------------------+-----------+----------------------------------------+ | |||
| Наименование флага | Состояние | Назначение | | |||
| (вых. признак) | | | | |||
+--------------------+-----------+----------------------------------------+ | |||
| | | Устанавливает торможение по | | |||
| WTMM | МК 25:=1 | приему микрокоманды (блоки- | | |||
| | | рует WMCE) до конца работы | | |||
| | | диспетчера памяти | | |||
+--------------------+-----------+----------------------------------------+ | |||
| SFП1 | МК 21:=1 | Установка универсального | | |||
| | | флага перехода | | |||
+--------------------+-----------+----------------------------------------+ | |||
| RFП1 | МК 20:=1 | Сброс универсального флага | | |||
| | | перехода | | |||
+--------------------+-----------+----------------------------------------+ | |||
| ИНК | МК 1:=1 | Инкремент номера регистра | | |||
+--------------------+-----------+----------------------------------------+ | |||
| ДЕК | МК 5:=1 | Декремент номера регистра | | |||
+--------------------+-----------+----------------------------------------+ | |||
| | | Сброс конвейера приема ко- | | |||
| ОСТ | МК 4:=1 | манд, буфера команд, оста- | | |||
| | | нов ДШК | | |||
+--------------------+-----------+----------------------------------------+ | |||
| | | Устанавливает торможение по | | |||
| | | приему микрокоманды (блоки- | | |||
| ЖДЗРА | МК 2:=1 | рует WMCE) до конца вы - | | |||
| | | полнения микрокоманды за - | | |||
| | | грузки регистра адреса | | |||
| | | (R(18)ОБ). | | |||
+--------------------+-----------+----------------------------------------+ | |||
</pre> | |||
При использовании микроинструкций ветвления и некоторых других допускающих модификацию младшей части микроадреса (УП, ЧКА, БП, ПСЧ), а также микроинструкций, допускающих модификацию младшей части константы, загружаемой в микропрограммный счетчик, необходимо загрузить регистр-модификатор адреса ОБ, который имеет адрес записи (1·100X)₂, т.е. 18₁₆ или 19₁₆. Флажок торможения ЖДЗРА сбрасывается по факту записи в R(19)ОБ, т.е. по окончании выполнения данной микроинструкции ОБ. | |||
Поясним алгоритм установки/адреса такого типа торможения по приему микрокоманды следующей временной диаграммой (см. рис. 47). | |||
<center> | |||
[[Файл:1839VM1 TO Pic47.png|500px]] | |||
</center> | |||
Кроме того регистр-модификатор R(18)ОБ может быть использован в качестве обычного аккумулятора; нулевой разряд R(18)ОБ можно прочитать по адресу 0F₁₆ в блоке констант, но на месте | |||
второго разряда: | |||
<center> | |||
[[Файл:1839VM1 TO Pic47_1.png|500px]] | |||
</center> | |||
==== FLAG ==== | |||
В отличие от формата SRF, формат микрокоманд FLAG (см. рис. 46) служит для установки некоторых функциональных флагов, привязанных к циклу операционного блока (ОБ): | |||
<pre> | |||
+--------------------+-----------+----------------------------------------+ | |||
| Наименование флага | Состояние | Назначение | | |||
| (вых.признаки) | | | | |||
+--------------------+-----------+----------------------------------------+ | |||
| INTMS | МК 23:=1 | Подсветка микропрограммы | | |||
| | | обработки прерываний | | |||
+--------------------+-----------+----------------------------------------+ | |||
| RCPU | МК 22:=1 | Микропрограммный сброс | | |||
| | | процессора | | |||
+--------------------+-----------+----------------------------------------+ | |||
| SIVV | МК 21:=1 | Блокировка целочисленного | | |||
| | | переполнения (сброс по "КК") | | |||
+--------------------+-----------+----------------------------------------+ | |||
| CCFPU | МК 20:=1 | Принять состояние от аппа- | | |||
| | | ратного ускорителя команд | | |||
| | | расширенной арифметики и | | |||
| | | плавающей точки | | |||
+--------------------+-----------+----------------------------------------+ | |||
| PROB | МК 19:=1 | Флаг для команды PROBE | | |||
+--------------------+-----------+----------------------------------------+ | |||
| SIU | МК 17:=1 | Микропрограммный опрос бло- | | |||
| | | ка прерываний (БПР) | | |||
+--------------------+-----------+----------------------------------------+ | |||
| TOU | МК 16:=1 | Торможение операционного | | |||
| | | блока (ОБ) до конца работы | | |||
| | | диспетчера памяти (ДП) | | |||
+--------------------+-----------+----------------------------------------+ | |||
| COPWT | МК 15:=1 | Перепись копий РСП и СК | | |||
+--------------------+-----------+----------------------------------------+ | |||
</pre> | |||
INTMS - устанавливает два аппаратных флага: | |||
* INVRD - чтение вектора прерываний по физическому адресу. Флаг INVRD - сбрасывается первой одноадресной микроинструкцией. | |||
* SKF - признак использования стека ядра/прерываний. Флаг SKF - сбрасывается по концу команды (КК). | |||
Микропрограммный сброс процессора по флагу RCPU осуществляется по следующей схеме: | |||
<center> | |||
[[Файл:1839VM1 TO Pic47_2.png|500px]] | |||
</center> | |||
По факту установки флага PROB обеспечивается холостой цикл диспетчера памяти для пробирования адреса. Если адрес недоступен, то аппаратура диспетчера памяти взводит флажок PRB, по которому производится ветвление. | |||
По факту установки флага COPWT (и по "КК") обеспечивается аппаратная перепись копий РСП и СК: | |||
<center> | |||
[[Файл:1839VM1 TO Pic47_3.png|300px]] | |||
</center> | |||
==== REST ==== | |||
При выборке микрокоманды REST (см. рис. 46) происходит восстановление РОНа из стека-рестарта и декрементируется счетчик рестарта (Запись с стек рестарта происходит аппаратно в фазе адресации операндов, при использовании одноадресной микроинструкции, микроопераций инкремент/декремент, употребления по полю чтения-Х микрокоманды 4-х разрядного номера регистра общего назначения). | |||
Алгоритм восстановления регистров-указателей операндов из стека рестарта приведен на рис. 48. (глубина стека рестарта равна 6, в соответствии с максимальным количеством операндов в команде). | |||
<center> | |||
[[Файл:1839VM1 TO Pic48.png|500px]] | |||
</center> | |||
== 1.13. Описание ресурсов микропрограммного уровня процессора == | |||
К ресурсам микропрограммиста будем относить такие регистры операционного блока (ОБ), как регистры общего назначения (РОНк), регистр-указатель стекового кадра, регистр-указатель аргумента, регистр-указатель стека, регистры-аккумуляторы, регистры виртуального адреса, счетчик команд, слово состояния процессора, буферный регистр данных и т.д., а также некоторые внутренние регистры процессора. Все регистры, используемые в проекте "Электроника 32", сведены в табл. 6. | |||
Микропрограммно доступен также блок констант операционного блока (БК). Константы ОБ приведены в табл. 7. | |||
Микропрограммно доступна любая ячейка виртуального адресного пространства. Виртуальный адрес содержит 32 разряда и определяет ячейку длиной в байт в адресном пространстве. | |||
Для программиста этот адрес обеспечивает адресацию линейной матрицы объемом в 4 294 967 296 байтов. Виртуальное адресное пространство разделено на страницы по 512 байтов каждая. Страница является объектом перемещения и защиты. Виртуальное адресное пространство показано на рис. 49 . Виртуальная память разделена на 2 части. Первая половина, занимающая младшую часть адресов, предназначена для распределения процессов и для каждого процесса, выполняемого в комплексе, она своя. Вторая половина виртуальной памяти, занимающая старшую часть адресов, предназначена для размещения системы, и эта область разделяется всеми процессами. | |||
Область процессов в свою очередь делится на две равные части: программную область (P0-регион) и управляющую область (P1-регион). | |||
=== Регистры процессора === | |||
Таблица 6. Регистры процессора | |||
<pre> | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| Мнемоника| Адрес(16) | Назначение | Доступ | Сфера | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| R0-RB | 00-0B | Регистры общего | ч на X,ȳ / | | | |||
| | | назначения (РОН) | з с X*, ȳ* | | | |||
+----------+-----------+------------------------+---------------+ | | |||
| AP | 0C | Указатель аргумента | | | | |||
+----------+-----------+------------------------+ | | | |||
| FP | 0D | Указатель кадра | | | | |||
+----------+-----------+------------------------+ | | | |||
| SP | 0E | Указатель стека | | | | |||
+----------+-----------+------------------------+ | | | |||
| PC | 0F | Счетчик команд | | | | |||
+----------+-----------+------------------------+---------------+ | | |||
| АК6 | 10 | | | | | |||
+----------+-----------+ | | | | |||
| АК4 | 11 | | | | | |||
+----------+-----------+ | | | | |||
| АК3 | 12 | | | | | |||
+----------+-----------+ | ч на X, ȳ / | ОБ про- | | |||
| АК5 | 13 | Регистры-аккумуляторы | з с X*, ȳ* | цессора | | |||
+----------+-----------+ | | | | |||
| АКØ | 14 | | | | | |||
+----------+-----------+ | | | | |||
| АК1 | 15 | | | | | |||
+----------+-----------+ | | | | |||
| АК2 | 16 | | | | | |||
+----------+-----------+ | | | | |||
| АК7 | 18 | | | | | |||
| | (адрес | | | | | |||
| | записи | | | | | |||
| | 11ØØX₂) | | | | | |||
+----------+-----------+ +---------------+ | | |||
| АК8 | 17 | | ч на X, ȳ / | | | |||
| | | | з с X*,ȳ*,X | | | |||
+----------+-----------+------------------------+---------------+ | | |||
| РКА | 1D | Регистр косвенной | ч на X/з с | | | |||
| | (адрес | адресации | МД | | | |||
| | чтения) | | | | | |||
+----------+-----------+------------------------+---------------+ | | |||
| РКВА | 19 | Регистр копия вирту- | ч на ȳ / | | | |||
| | (адрес | ального адреса | з с РВА | | | |||
| | чтения) | | | | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| РВА | 1A(адрес | Регистр виртуального | ч на X,ȳ / | | | |||
| | чтения) | адреса | з с X,ȳ*,РВАК | | | |||
+----------+-----------+------------------------+---------------+ | | |||
| РВАК | 1B(адрес | Регистр виртуально- | ч на ȳ / | | | |||
| | чтения) | го адреса команды | з с X*, ȳ* | | | |||
| | 0F(адрес | | | | | |||
| | записи) | | | | | |||
+----------+-----------+------------------------+---------------+ | | |||
| РНК | 1C(адрес | Регистр начала ко - | ч на ȳ / | | | |||
| | чтения) | манды | з с СК | | | |||
+----------+-----------+------------------------+---------------+ | | |||
| КРСП | 1D(адрес | Копия регистра со- | ч на ȳ / | | | |||
| | чтения) | стояния процессора | з с РСП | | | |||
+----------+-----------+------------------------+---------------+ ОБ про- | | |||
| PSL | 1E | Слово состояния про- | ч на X,ȳ / | цессора | | |||
| | | цессора | з с X*,ȳ* | | | |||
+----------+-----------+------------------------+---------------+ | | |||
| БО | 1F | Буферный регистр | ч на X,ȳ / | | | |||
| | | данных | з с X*,ȳ*; МД | | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
</pre> | |||
=== Внутренние регистры процессора === | |||
<pre> | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| Мнемоника| Адрес (16)| Назначение | Доступ | Сфера | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| KSP | 00 | Указатель стека ре- | ч/з | | | |||
| | | режима ядра | | - | | |||
+----------+-----------+------------------------+---------------+ | | |||
| ESP | 01 | Указатель стека ре- | ч/з | Адаптер | | |||
| | | жима исполнения | | Q-BUS | | |||
+----------+-----------+------------------------+---------------+ | | |||
| SSP | 02 | Указатель стека ре- | ч/з | | | |||
| | | жима супервизора | | | | |||
+----------+-----------+------------------------+---------------+ | | |||
| USP | 03 | Указатель стека ре- | ч/з | | | |||
| | | жима пользователя | | | | |||
+----------+-----------+------------------------+---------------+ | | |||
| ISP | 04 | Указатель стека пре- | ч/з | (область | | |||
| | | рываний | | сист.рег. | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| | 05...07 | Резерв | ч/з | | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| P0BR | 08 | Регистр базн Р0 | ч/з | | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| P0LR | 09 | Регистр длины Р0 | ч/з | Диспетчер | | |||
+----------+-----------+------------------------+---------------+ памяти | | |||
| P1BR | 0A | Регистр базы P1 | ч/з | процессо- | | |||
+----------+-----------+------------------------+---------------+ ра | | |||
| P1LR | 0B | Регистры длины P1 | ч/з | | | |||
+----------+-----------+------------------------+---------------+ | | |||
| SBR | 0C | Регистр базы системы | ч/з | | | |||
+----------+-----------+------------------------+---------------+ | | |||
| SLR | 0D | Регистр длины системы | ч/з | | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| | 0E...0F | Резерв | ч/з | | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| PCBB | 10 | Регистр базы блока | ч/з | Адаптер | | |||
| | | управления процесса | | Q-BUS | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| SCBB | 11 | Регистр базы блока | ч/з | Адаптер | | |||
| | | управления системы | | Q-BUS | | |||
| | | | | (обл.си- | | |||
| | | | | ст.рег.) | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| IPL | 12 | Уровень приоритета пре-| ч/з | Процессор | | |||
| | | рывания | | (разряды | | |||
| | | | | 20+I6 PSL)| | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| ASTR | 13 | Уровень AST | ч/з | | | |||
+----------+-----------+------------------------+---------------+ Адаптер | | |||
| SIRR | 14 | Регистр запроса на про-| з | Q-BUS | | |||
| | | граммное прерывание | | (обл.си- | | |||
+----------+-----------+------------------------+---------------+ ст.рег.) | | |||
| SISR | 15 | Регистр программного | ч/з | | | |||
| | | прерывания | | | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| | 16 | Резерв | | | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| MCSR | 17 | Регистр состояния сбоя | ч | Контрол- | | |||
| | | машины | | лер па - | | |||
| | | | | мяти | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| ICCS | 18 | Регистр состояния | ч/з | | | |||
| | | таймера | | | | |||
+----------+-----------+------------------------+---------------+ | | |||
| NICR | 19 | Регистр счета сле- | з | Адаптер | | |||
| | | дующего интервала | | Q-BUS | | |||
+----------+-----------+------------------------+---------------+ | | |||
| ICR | 1A | Регистр-счетчик | ч | (обл.сист.| | |||
| | | интервалов | | рег.) | | |||
+----------+-----------+------------------------+---------------+ | | |||
| TODR | 1B | Регистр времени | ч/з | | | |||
| | | дня | | | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| | 1C...1F | Резерв | | | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| RXCS | 20 | Регистр состояния | ч/з | | | |||
| | | консольного при - | | | | |||
| | | емника | | | | |||
+----------+-----------+------------------------+---------------+ | | |||
| RXDB | 21 | Регистр данных кон- | ч | | | |||
| | | сольного приемника | | | | |||
+----------+-----------+------------------------+---------------+ | | |||
| TXCS | 22 | Регистр состояния | ч/з | | | |||
| | | консольного пере - | | | | |||
| | | датчика | | | | |||
+----------+-----------+------------------------+---------------+ | | |||
| TXDB | 23 | Регистр данных кон- | з | | | |||
| | | сольного передатчика | | | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| TBDR | 24 | Отключение групп бу- | ч/з | | | |||
| | | фера трансляции(при | | | | |||
| | | обращении читаются | | | | |||
| | | нули) | | | | |||
+----------+-----------+------------------------+---------------+ | | |||
| CADR | 25 | Регистр отключения | ч/з | Контроллер| | |||
| | | КЭШ-памяти | | памяти | | |||
+----------+-----------+------------------------+---------------+ | | |||
| MCESR | 26 | Регистр ошибок при | ч/з | | | |||
| | | машинном сбое | | | | |||
+----------+-----------+------------------------+---------------+ | | |||
| CAER | 27 | Регистр ошибок КЭШ- | ч/з | | | |||
| | | памяти | | | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| ACCS | 28 | Регистр состояния | ч | БИС со - | | |||
| | | ускорителя команд | | процес - | | |||
| | | П.З. | | сора | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| | 29...36 | Резерв | | | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| IORESET | 37 | Регистр сброса | з | Адаптер | | |||
| | | UNIBUS | | Q-BUS | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| MME | 38 | Регистр включения | ч/з | Диспетчер | | |||
| (MAPEN) | | диспетчера памяти | | памяти про-| | |||
| | | | | цессора | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| TBIA | 39 | Регистр обнуления | з | Диспетчер | | |||
| | | всего буфера тран- | | памяти | | |||
| | | сляции | | процессора| | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| TBIS | 3A | Регистр обнуления | з | Диспетчер | | |||
| | | записи в буфере | | памяти | | |||
| | | трансляции | | процессора| | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| | 3B...3C | Резерв | | | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| PMI | 3D | Регистр включения | ч/з | Адаптер | | |||
| | | исполнительного | | Q-BUS | | |||
| | | монитора | | | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| SID | 3E | Регистр идентифика- | ч/з | Процессор | | |||
| | | ции системы | | | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
| | | Резерв | | | | |||
+----------+-----------+------------------------+---------------+-----------+ | |||
</pre> | |||
=== Константы ОБ === | |||
Таблица 7. Константы ОБ | |||
<pre> | |||
+------------+---------------+-----------------------------------------------+ | |||
| Адрес (16) | Значение (16) | Назначение | | |||
+------------+---------------+-----------------------------------------------+ | |||
| 00 | 00000004 | Инкремент | | |||
+------------+---------------+-----------------------------------------------+ | |||
| 01 | 00000002 | Инкремент | | |||
+------------+---------------+-----------------------------------------------+ | |||
| 02 | 00000008 | Инкремент | | |||
+------------+---------------+-----------------------------------------------+ | |||
| 03 | 00000001 | Инкремент | | |||
+------------+---------------+-----------------------------------------------+ | |||
| 04 | 00000000 | Обнуление | | |||
+------------+---------------+-----------------------------------------------+ | |||
| 05 | - | РСМ | | |||
+------------+---------------+-----------------------------------------------+ | |||
| 06 | - | Литера ПЗУ, адресные | | |||
| | | константы | | |||
+------------+---------------+-----------------------------------------------+ | |||
| 07 | 00000066 | Константа перевода в код | | |||
| | | с избытком 6 | | |||
+------------+---------------+-----------------------------------------------+ | |||
| 08 | 0000000* | [1:0] = РСП (CRM), [2] - IS | | |||
| | | (Чтение СRM из РСП) | | |||
+------------+---------------+-----------------------------------------------+ | |||
| 09 | 00C00000 | Маски CRM в РСП | | |||
+------------+---------------+-----------------------------------------------+ | |||
| 0A | FFFFFFFF | | | |||
+------------+---------------+-----------------------------------------------+ | |||
| 0B | 00IF0000 | Маски IPL в РСП | | |||
+------------+---------------+-----------------------------------------------+ | |||
| 0C | 04000000 | Маски IS в РСП | | |||
+------------+---------------+-----------------------------------------------+ | |||
| 0D | 0000000* | [2:0] = MPL | | |||
+------------+---------------+-----------------------------------------------+ | |||
| 0E | 000000** | Десятичная коррекция | | |||
| | | [7:0] = { AA,A0 | | |||
| | | { 0A,00 | | |||
+------------+---------------+-----------------------------------------------+ | |||
| 0F | 0000000* | второй разряд = нулевой | | |||
| | | разряд R18 выбор стека | | |||
| | | при прерываниях | | |||
+------------+---------------+-----------------------------------------------+ | |||
</pre> | |||
=== Адресное пространство === | |||
<center> | |||
[[Файл:1839VM1 TO Pic49.png|500px]] | |||
</center> | |||
=== Системное ОЗУ === | |||
Для организации системного ОЗУ (СОЗУ), некоторых внутренних системных регистров, хранения карты адресов Q-BUS БИС адаптера магистралей обеспечивает управление (чтение, запись) четырех микросхем статического ЗУ с организацией 2Кх8. | |||
Системное ОЗУ и системные регистры доступны микропрограммно. | |||
== 1.14. Система команд == | |||
В данном разделе очень кратко будут описаны те инструкции, которые используются в любом программном обеспечении при всех применениях вычислительной системы "Электроника 32". Главная цель архитектуры вычислительной системы - обеспечить набор команд, который симметричен по отношению к типам данных. Например, существуют команды сложения (ADD) для семи типов данных (байт, слово, длинное слово, F , D , G и H -floating), причем каждая команда имеет варианты для двух и трех операндов. Симметричными командами являются также команды пересылки, преобразования тестирования и вычислений (в микропроцессорной системе "Электроника 32" команды работы со I28-разрядными данными, | |||
такими как H-floating и Octal integer, выполняются эмуляцией на программном уровне). | |||
В числе команд пересылок входят также команды пересылки с арифметическим отрицанием и логическим дополнением. Здесь команды отрицания и дополнения включают в себя пересылку и не изменяют исходный операнд. | |||
Команды арифметических вычислений включают в себя сложение, вычитание, умножение и деление. Логические команды работают с тремя типами данных (байт, слово, длинное слово) и включают в себя: установку и сброс битов, логическое сложение MOD 2. Команды арифметических и логических вычислений доступны как в двух, так и в трехоперандной формах для каждого допустимого типа данных. Трехоперандная форма принимает первые два операнда и сохраняет результат по адресу третьего операнда. | |||
Для задач целочисленного программирования имеется команда записи в стек длинного слова. | |||
Для каждого типа целочисленных данных существуют операции инкремента и декремента. | |||
Существуют специальные команды сложения, вычитания, умножения и деления с многократной точностью. | |||
Для реализации математиоеских функций введены команды вычисления показателей степени и полиномов. | |||
В систему команд входят также команды обработки чисел в формате с плавающей запятой. Команды с плавающей запятой работают с данными четырех типов (F, D , G и H-формат). Для всех четырех типов данных с плавающей запятой имеются стандартные арифметические операции сложения, вычитания, умножения и деления (ADD, SUB, MUL, DIV). Кроме того имеются две составные операции EMOD и POLY, также применимые ко всем четырем типам данных с плавающей запятой. EMOD вырабатывает произведение двух операндов, а затем разделяет результат на целую и дробную части. POLY подсчитывает значение полинома по заданной степени, аргументу и указателю таблицы коэффициентов. | |||
Имеется полный набор команд преобразования из целочисленного типа данных во все форматы с плавающей запятой, и наоборот. Также имеется набор команд преобразования из одного типа данных с плавающей запятой в другой, за исключением преобразований из формата D в формат G и наоборот. | |||
Для всех типов данных с плавающей запятой существует класс команд пересылок (MOV, MNEG), очистки (CLR), сравнения (СМР) и тестирования (TST). И, наконец, существует класс команд АСВ (сложение, сравнение и переход). | |||
В процессоре имеется широкий набор команд ветвлений и переходов (команды управления). Довольно часто требуется передача управления, основанная на значении переменной, для поддержки таких конструкций в языках высокого уровня как "GOTO" в языке FORTRAN и "CASE" в языке PASCAL . Вследствии этого система команд включает в себя команду CASE , позволяющую эффективно реализовать эти структуры управления. Команда CASE не только производит передачу управления, но также управляет инициализацией и контролем границ для переменной типа INDEX. Цепь команды CASE состоит в передаче управления одной из n ячеек на основании значения целочисленного операнда-селектора. | |||
Существует также ряд важных команд, предназначенных для работы со специфическими типами данных, такими как поле бит переменной длины, символьная строка, строка десятичных цифр, строка упакованных десятичных цифр, очередь (типы данных приведены на рис. 50). | |||
В системе команд имеется несколько категорий команд, которые обладают в точно определенных условиях большими привилегиями, чем обычное программное обеспечение. | |||
Это привилегированные команды и особые (специальные) команды, которые не попадают под какую-либо классификацию. Некоторые из этих инструкций предназначены для работы со специализированной частью архитектуры вычислительной системы (например: диспетчеризация памяти, прерывания и исключительные ситуации, диспетчеризация процессов, внутренние регистры процессора). | |||
<center> | |||
[[Файл:1839VM1 TO Pic50.png|500px]] | |||
</center> | |||
Для наглядности представления системы команд, на основании изложенного выше, разделим набор инструкций на 13 основных разделов: | |||
# Команды для работы с целыми числами и логические команды. | |||
# Команды для работы со стеками и адресами памяти. | |||
# Команды управления. | |||
# Команды для работы с переменными битовыми полями. | |||
# Команды вызова процедур и подпрограмм. | |||
# Привилегированные команды. | |||
# Специальные команды. | |||
# Команды работы с очередями. | |||
# Команды плавающей арифметики. | |||
# Команды обработки строк символов. | |||
# Команды десятичной строки цифр. | |||
# Команды контроля циклической избыточности. | |||
# Команды редактирования. | |||
Ниже будет приведено краткое описание инструкций (см. табл. 8). | |||
Внутри каждого раздела близкие по свойствам инструкции объединены в группы и вместе описываются. Описание групп инструкций состоит из следующих пунктов: название группы; код команды; формат каждой инструкции в группе. | |||
В табл.8 приводится мнемоника команды, определяются название и тип каждого спецификатора операнда инструкции и порядок, в котором они появляются в инструкции. | |||
Таблица 8 | |||
СИСТЕМА КОМАНД | |||
=== 1. Команды для работы с целыми числами и логические команды === | |||
<pre> | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| Код | Мнемоника | Формат | Назначение | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 58 | ADAWI | КОП add.rw,sum.mw | Сложение выровненных | | |||
| | | | слоев с блокировкой па- | | |||
| | | | мяти | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 80 | ADDB2 | КОП add.rx,sum.mx | Сложение байтов двух - | | |||
| | | | операндное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| A0 | ADDW2 | -"- | Сложение слов двухопе- | | |||
| | | | рандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| C0 | ADDL2 | -"- | Сложение двойных слов | | |||
| | | | двухоперандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 81 | ADDB3 | КОП add1.rx,add2.rx, | Сложение байтов трех - | | |||
| | | sum.mx | операндное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| A1 | ADDW3 | -"- | Сложение слов трехопе- | | |||
| | | | рандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| C1 | ADDL3 | -"- | Сложение двойных слов | | |||
| | | | трехоперандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| D8 | ADWC | КОП add.rl,sum.ml | Сложение с переносом | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 78 | ASHL | КОП cnt.rb,src.rx, | Арифметический сдвиг | | |||
| | | dst.wx | двойного слова | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 79 | ASHQ | -"- | Арифметический сдвиг | | |||
| | | | квадрослова | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 8A | BICB2 | КОП mask.rx,dst.mx | Очистка разрядов байта | | |||
| | | | двухоперандная | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| AA | BICW2 | -"- | Очистка разрядов слова | | |||
| | | | двухоперандная | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| CA | BICL2 | -"- | Очистка разрядов двой - | | |||
| | | | ного слова двухоперанд- | | |||
| | | | ная | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 8B | BICB3 | КОП mask.rx, | Очистка разрядов байта | | |||
| | | src.rx,dst.mx | трехоперандная | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| AB | BICW3 | -"- | Очистка разрядов слова | | |||
| | | | трехоперандная | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| CB | BICL3 | -"- | Очистка разрядов двойно- | | |||
| | | | го слова трехоперандная | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 88 | BISB2 | КОП mask.rx, | Установка разрядов байта | | |||
| | | dst.mx | двухоперандная | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| A8 | BISW2 | -"- | Установка разрядов слова | | |||
| | | | двухоперандная | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| C8 | BISL2 | -"- | Установка разрядов двойно- | | |||
| | | | го слова двухоперандная | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 89 | BISB3 | КОП mask.rx,src.rx, | Установка разрядов байта | | |||
| | | dst.mx | трехоперандная | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| A9 | BISW3 | -"- | Установка разрядов слова | | |||
| | | | трехоперандная | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| C9 | BISL3 | -"- | Установка разрядов двой - | | |||
| | | | ного слова трехоперандная | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 93 | BITB | КОП mask.rx,src.rx | Проверка разрядов байта | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| B3 | BITW | -"- | Проверка разрядов слова | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| D3 | BITL | -"- | Проверка разрядов двойно- | | |||
| | | | го слова | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 94 | CLRB | КОП dst.wx | Очистка байта | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| B4 | CLRW | -"- | Очистка слова | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| D4 | CLRL | -"- | Очистка двойного слова | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 7C | CLRQ | -"- | Очистка квадрослова | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 91 | CMPB | КОП src1.rx,src2.rx | Сравнение байтов | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| B1 | CMPW | -"- | Сравнение слов | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| D1 | CMPL | -"- | Сравнение двойных слов | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 99 | CVTBW | КОП src.rx,dst.my | Преобразование байта в | | |||
| | | | слово | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 98 | CVTBL | -"- | Преобразование байта в | | |||
| | | | двойное слово | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 33 | CVTWB | -"- | Преобразование слова в | | |||
| | | | байт | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 32 | CVTWL | -"- | Преобразование слова в | | |||
| | | | двойное слово | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| F6 | CVTLB | -"- | Преобразование двойно- | | |||
| | | | го слова в байт | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| F7 | CVTLW | -"- | Преобразование двойно- | | |||
| | | | го слова в слово | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 97 | DECB | КОП dif.mx | Декремент на один байт | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| B7 | DECW | -"- | Декремент на одно слово | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| D7 | DECL | -"- | Декремент на одно двой- | | |||
| | | | ное слово | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 86 | DIVB2 | КОП divr.rx,quo.mx | Деление байтов двухопе- | | |||
| | | | рандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| A6 | DIVW2 | -"- | Деление слов двухопе - | | |||
| | | | рандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| C6 | DIVL2 | -"- | Деление двойных слов | | |||
| | | | двухоперандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 87 | DIVB3 | КОП divr.rx,divd.rx, | Деление байтов трехопе- | | |||
| | | quo.wx | рандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| A7 | DIVW3 | -"- | Деление слов трехопе - | | |||
| | | | рандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| C7 | DIVL3 | -"- | Деление двойных слов | | |||
| | | | трехоперандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 7B | EDIV | КОП divr.rl,divd.rq, | Расширенное деление | | |||
| | | quo.wl,rem.wl | | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 7A | EMUL | КОП mulr.rl,muld.rl, | Расширенное умножение | | |||
| | | add.rl,prod.wq | | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 96 | INCB | КОП sum.mx | Инкремент на один байт | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| B6 | INCW | -"- | Инкремент на одно слово | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| D6 | INCL | -"- | Инкремент на одно двой- | | |||
| | | | ное слово | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 92 | MCOMB | КОП src.rx,dst.wx | Пересылка байта с инвер- | | |||
| | | | сией | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| B2 | MCOMW | -"- | Пересылка слова с инвер- | | |||
| | | | сией | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| D2 | MCOML | -"- | Пересылка двойного слова | | |||
| | | | с инверсией | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 8E | MNEGB | -"- | Пересылка байта с ариф - | | |||
| | | | метическим отрицанием | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| AE | MNEGW | -"- | Пересылка слова с ариф - | | |||
| | | | метическим отрицанием | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| CE | MNEGL | -"- | Пересылка двойного слова | | |||
| | | | с арифметическим отрица- | | |||
| | | | нием | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 90 | MOVB | -"- | Пересылка байта | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| B0 | MOVW | -"- | Пересылка слова | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| D0 | MOVL | -"- | Пересылка двойного слова | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 7D | MOVQ | -"- | Пересылка квадрослова | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 9B | MOVZBW | КОП src.rx,dst.wy | Пересылка байта с допол- | | |||
| | | | нением ведущими нулями | | |||
| | | | до слова | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 9A | MOVZBL | -"- | Пересылка байта с допол- | | |||
| | | | нением ведущими нулями | | |||
| | | | до двойного слова | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| BC | MOVZWL | -"- | Пересылка слова с допол- | | |||
| | | | нением ведущими нулями | | |||
| | | | до двойного слова | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 84 | MULB2 | КОП mulr.rx,prod.mx | Умножение байтов двух- | | |||
| | | | операндное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| A4 | MULW2 | -"- | Умножение слов двухопе- | | |||
| | | | рандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| C4 | MULL2 | -"- | Умножение двойных слов | | |||
| | | | двухоперандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 85 | MULB3 | КОП mulr.rx,muld.rx, | Умножение байтов трех- | | |||
| | | prod.wx | операндное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| A5 | MULW3 | -"- | Умножение слов трехопе- | | |||
| | | | рандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| C5 | MULL3 | -"- | Умножение двойных слов | | |||
| | | | трехоперандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| DD | PUSHL | КОП src.rl,{-(SP).wl} | Занесение двойного сло- | | |||
| | | | ва в стек | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 9C | ROTL | КОП cnt.rb,src.rl,dst.wl | Циклический сдвиг двой- | | |||
| | | | ного слова | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| D9 | SBWC | КОП sub.rl,dif.ml | Вычитание с переносом | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 82 | SUBB2 | КОП sub.rx,dif.mx | Вычитание байтов двух - | | |||
| | | | операндное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| A2 | SUBW2 | -"- | Вычитание слов двухопе- | | |||
| | | | рандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| C2 | SUBL2 | -"- | Вычитание двойных слов | | |||
| | | | двухоперандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 83 | SUBB3 | КОП sub.rx,min.rx, | Вычитание байтов трех- | | |||
| | | dif.wx | операндное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| A3 | SUBW3 | -"- | Вычитание слов трехопе- | | |||
| | | | рандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| C3 | SUBL3 | КОП sub.rx,min.rx, | Вычитание двойных слов | | |||
| | | dif.wx | трехоперандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 95 | TSTB | КОП src.rx | Проверка разрядов байта | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| B5 | TSTW | -"- | Проверка разрядов слова | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| D5 | TSTL | -"- | Проверка разрядов двойно- | | |||
| | | | го слова | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 8C | XORB2 | КОП mask.rx,dst.mx | Сложение байтов по MOD2 | | |||
| | | | двухоперандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| AC | XORW2 | -"- | Сложение слов по MOD2 | | |||
| | | | двухоперандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| CC | XORL2 | -"- | Сложение двойных слов по | | |||
| | | | MOD2 двухоперандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| 8D | XORB3 | КОП mask.rx,src.rx, | Сложение байтов по MOD2 | | |||
| | | dst.wx | трехоперандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| AD | XORW3 | -"- | Сложение слов по MOD2 | | |||
| | | | трехоперандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
| CD | XORL3 | -"- | Сложение двойных слов по | | |||
| | | | MOD2 трехоперандное | | |||
+-----+-----------+-------------------------------+----------------------------------+ | |||
</pre> | |||
=== 2. Команды работы со стеками и адресами памяти === | |||
<pre> | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 9E | MOVAB | КОП src.ax,dst.wl | Пересылка адреса байта | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 3E | MOVAW | -"- | Пересылка адреса слова | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| DE | MOVAL, | -"- | Пересылка адреса двойного | | |||
| | MOVAF | | слова /или слова формата | | |||
| | | | F/ | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 7E | MOVAQ, | КОП src.ax,dst.wl | Пересылка адреса четвер- | | |||
| | MOVAD, | | ного слова /или слов | | |||
| | MOVAG | | форматов D, G / | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 7FFD | MOVAO, | -"- | Пересылка адреса восьмер- | | |||
| | MOVAH | | ного слова /или слова | | |||
| | | | формата H/ | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| BF | PUSHAB | КОП src.ax,{-(SP).wl} | Пересылка адреса байта | | |||
| | | | в стек | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 3F | PUSHAW | -"- | Пересылка адреса слова | | |||
| | | | в стек | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| DF | PUSHAL, | -"- | Пересылка адреса двой- | | |||
| | PUSHAF | | ного слова /или слова | | |||
| | | | формата F / в стек | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 7F | PUSHAQ, | -"- | Пересылка адреса чет - | | |||
| | PUSHAD, | | верного слова /или слов | | |||
| | PUSHAG | | форматов D ; G / в | | |||
| | | | стек | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 7FFD | PUSHAO, | -"- | Пересылка адреса вось- | | |||
| | PUSHAH | | мерного слова/или сло- | | |||
| | | | ва формата H/ в стек | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
</pre> | |||
=== 3. Команды управления === | |||
<pre> | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| Код | Мнемоника | Формат | Назначение | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 9D | ACBB | КОП limit.rx,add.rx, | Сложение байтов со | | |||
| | | index.mx,displ.bw | сравнением и переход | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 3D | ACBW | -"- | Сложение слов со | | |||
| | | | сравнением и переход | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| F1 | ACBL | КОП limit.rx,add.rx, | Сложение двойных слов со | | |||
| | | index.mx,displ.bw | сравнением и переход | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 4F | ACBF | -"- | Сложение слов формата F | | |||
| | | | со сравнением и переход | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 6F | ACBD | -"- | Сложение слов формата D | | |||
| | | | со сравнением и переход | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 4FFD | ACBG | -"- | Сложение слов формата G | | |||
| | | | со сравнением и переход | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 6FFD | ACBH | -"- | Сложение слов формата H | | |||
| | | | со сравнением и переход | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| F3 | AOBLEQ | КОП limit.rx,index.ml, | Прибавить единицу и пере- | | |||
| | | displ.bb | ход, если меньше или | | |||
| | | | равно | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| F2 | AOBLSS | -"- | Прибавить единицу и пере- | | |||
| | | | ход, если меньше | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 19 | BLSS | КОП displ.bb | Переход, если N = I | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 15 | BLEQ | -"- | Переход, если {NORZ}=1 | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 13 | BEQL,BEQLU| -"- | Переход, если Z = I | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 12 | BNEQ,BNEQU| -"- | Переход, если Z = 0 | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| I8 | BGEQ | -"- | Переход, если N = 0 | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 14 | BGTR | -"- | Переход, если {NORZ} = 0 | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 1F | BLSSU,BCS | -"- | Переход, если C = I | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 1B | BLEQU | -"- | Переход, если {COR Z}= I | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 1E | BGEQU,BCC | -"- | Переход, если C = 0 | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 1A | BGTRU | -"- | Переход, если {CORZ} = 0 | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 1D | BVS | -"- | Переход, если V = I | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 1C | BVC | -"- | Переход, если V = 0 | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| E0 | BBS | КОП pos.rl,base.vb, | Ветвление по биту /указан- | | |||
| | | disp l.bb,{field.rv} | ный разряд равен I/ | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| E1 | BBC | -"- | Ветвление по биту /указан- | | |||
| | | | ный разряд равен 0/ | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| E2 | BBSS | -"- | Ветвление по установлен- | | |||
| | | | ному биту и установить /без | | |||
| | | | блокировки памяти/ | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| E4 | BBSC | -"- | Ветвление по установлен- | | |||
| | | | ному биту и очистить /без | | |||
| | | | блокировки памяти/ | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| E5 | BBCC | -"- | Ветвление по очищенному | | |||
| | | | биту и очистить /без бло - | | |||
| | | | кировки памяти/ | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| E3 | BBCS | -"- | Ветвление по очищенному | | |||
| | | | биту и установить /без | | |||
| | | | блокировки памяти/ | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| E6 | BBSSI | -"- | Ветвление по установлен- | | |||
| | | | ному биту и установить с | | |||
| | | | блокировкой памяти | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| E7 | BBCCI | -"- | Ветвление по сброшенному | | |||
| | | | биту и очистить с блоки - | | |||
| | | | ровкой памяти | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| E8 | BLBS | КОП src.rl,displ.bb | Ветвление, если установлен | | |||
| | | | младший бит | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| E9 | BLBC | -"- | Ветвление, если сброшен | | |||
| | | | младший бит | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| II | BRB | КОП displ.bx | Безусловный переход с бай- | | |||
| | | | товым смещением | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 3I | BRW | -"- | Безусловный переход со сме- | | |||
| | | | щением в одно слово | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| I0 | BSBB | КОП displ.bx,{-(SP).wl} | Переход к подпрограмме с | | |||
| | | | байтовым смещением | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 30 | BSBW | -"- | Переход к подпрограмме со | | |||
| | | | смещением в одно слово | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 8F | CASEB | КОП selector.rx,base.rx, | Многофункциональный пере- | | |||
| | | limit.rx,displ.bw-list | ход с байтовым смещением | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| AF | CASEW | -"- | Многофункциональный пере- | | |||
| | | | ход со смещением в одно | | |||
| | | | слово | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| CF | CASEL | -"- | Многофункциональный пере- | | |||
| | | | ход со смещением в одно | | |||
| | | | двойное слово | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| I7 | JMP | КОП dst.ab | Абсолютный безусловный | | |||
| | | | переход | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| I6 | JSB | КОП dst.ab,{-(SP).wl} | Абсолютный переход к под- | | |||
| | | | программе | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 05 | RSB | КОП {(SP)+.rl} | Возврат из подпрограммы | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| F4 | SOBGEQ | КОП index.ml,displ.bb | Вычесть единицу и переход, | | |||
| | | | если больше или равно | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| F5 | SOBGTR | -"- | Вычесть единицу и переход, | | |||
| | | | если больше | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
</pre> | |||
=== 4. Команды для работы с переменными битовыми полями === | |||
<pre> | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| Код | Мнемоника | Формат | Назначение | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| EC | CMPV | КОП pos.rl,size.rb,base.vb, | Сравнение полей | | |||
| | | {field.rv},src.rl | | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| ED | CMPZV | -"- | Сравнение полей с рас- | | |||
| | | | ширением ведущими нулями | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| EE | EXTV | КОП pos.rl,size.rb, | Выделить поле | | |||
| | | base.vb,{field.rv},dst.wl | | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| EF | EXTZV - | -"- | Выделить поле, расши - | | |||
| | | | ренное ведущими нулями | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| EA | FFS | КОП startpos.rl, | Поиск первого установ- | | |||
| | | size.rb,base.vb, | ленного разряда | | |||
| | | {field.rv},findpos.wl | | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| EB | FFC | -"- | Поиск первого сброшен- | | |||
| | | | ного разряда | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| F0 | INSV | КОП src.rl,pos.rl, | Вставка поля | | |||
| | | size.rb,base.vb, | | | |||
| | | {field.wv} | | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
</pre> | |||
=== 5. Команды вызова процедур и подпрограмм === | |||
<pre> | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| Код | Мнемоника | Формат | Назначение | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| FA | CALLG | КОП arglist.ab, | Вызов процедуры с | | |||
| | | dst.ab,{-(SP).w*} | произвольным списком | | |||
| | | | аргументов | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| FB | CALLS | КОП numg.rg.rl, | Вызов процедуры со | | |||
| | | dst.ab,{-(SP).w*} | списком аргументов в | | |||
| | | | стеке | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 04 | RET | КОП {(SP)+.r*} | Возврат из процедуры | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
</pre> | |||
=== 6. Привилегированные команды === | |||
<pre> | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| Код | Мнемоника | Формат | Назначение | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 0C | PROBER | КОП mode.rb,len.rw, | Проверка доступности по | | |||
| | | base.ab | чтению | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 0D | PROBEW | -"- | Проверка доступности по | | |||
| | | | записи | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| BC | CHMK | КОП param.rw,{-(ySP).w*}, | Смена режима на режим | | |||
| | | где: y=MINU(x,PSL <текущий | ядра | | |||
| | | реж.>) | | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| BD | CHME | -"- | Смена режима на режим | | |||
| | | | исполнения | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| BE | CHMS | -"- | Смена режима на режим | | |||
| | | | супервизора | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| BF | CHMU | -"- | Смена режима на режим | | |||
| | | | пользователя | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 02 | REI | КОП {(SP)+.r*} | Возврат из исключитель- | | |||
| | | | ной ситуации или пре - | | |||
| | | | рывания | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 06 | LDPCTX | КОП {PCB.r*,-(кSP).w*}, | Загрузка контекста | | |||
| | | где PCB - регистр | процесса | | |||
| | | управления процес- | | | |||
| | | сором | | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 07 | SVPCTX | КОП {(SP)+.r*,PCB.w*} | Сохранение контекста | | |||
| | | | процесса | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| DA | MTPR | КОП src.rl,procreg.rl | Пересылка в процессор- | | |||
| | | | ный регистр | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| DB | MFPR | КОП procreg.rl,dst.wl | Пересылка из процессор- | | |||
| | | | ного регистра | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
</pre> | |||
=== 7. Специальные команды === | |||
<pre> | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| Код | Мнемоника | Формат | Назначение | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| B9 | BICPSW | КОП mask.rw | Сброс разрядов в слове | | |||
| | | | состояния процессора | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| B8 | BISPSW | -"- | Установка разрядов в | | |||
| | | | слове состояния процес- | | |||
| | | | сора | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 03 | BRT | КОП {-(кSP).w*} | Ошибка ветвления | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 00 | HALT | -"- | Останов | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 0A | INDEX | КОП subscript.rl,low.rl, | Вычисление индекса | | |||
| | | high.rl,size.rl,indexin.rl, | | | |||
| | | indexout.wl | | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| DC | MOVPSL | КОП dst.wl | Пересылка из длинного | | |||
| | | | слова состояния процес- | | |||
| | | | сора | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 01 | NOP | КОП | Пустой оператор | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| BB | PUSHR | КОП mask.rw,{-(SP).w*} | Пересылка содержимого | | |||
| | | | регистров в стек | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| BA | POPR | КОП mask.rw,{(SP)+.r*} | Удаление содержимого | | |||
| | | | регистров из стека | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| FC | XFC | КОП | Расширенный вызов | | |||
| | | | функции | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| FEFF | BUGW | КОП message.bx | Проверить слово на на- | | |||
| | | | личие ошибок | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| FDFF | BUGL | -"- | Проверить двойное сло- | | |||
| | | | во на наличие ошибок | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
</pre> | |||
=== 8. Команды работы с очередями === | |||
<pre> | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| Код | Мнемоника | Формат | Назначение | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 5C | INSQHI | КОП entry.ab,header.aq | Занесение элемента в | | |||
| | | | "голову" очереди с | | |||
| | | | блокировкой памяти | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 5D | INSQTI | КОП entry.ab,header.aq | Занесение элемента в | | |||
| | | | "хвост" очереди с бло- | | |||
| | | | кировкой памяти | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 0E | INSQUE | КОП entry.ab,pred.ab | Занесение элемента в | | |||
| | | | очередь | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 5E | REMQHI | КОП header.aq,addr.wl | Удаление элемента из | | |||
| | | | "головы" очереди с бло- | | |||
| | | | кировкой памяти | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 5F | REMQTI | -"- | Удаление элемента из | | |||
| | | | "хвоста" очереди с бло- | | |||
| | | | кировкой памяти | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 0F | REMQUE | КОП entry.ab,addr.wl | Удаление элемента из | | |||
| | | | очереди | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
</pre> | |||
=== 9. Команды плавающей арифметики === | |||
<pre> | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| Код | Мнемоника | Формат | Назначение | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 40 | ADDF2 | КОП addr.rx,sum.mx | Сложение двухоперанд- | | |||
| | | | ное в формате F | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 60 | ADDD2 | -"- | Сложение двухоперанд- | | |||
| | | | ное в формате D | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 40FD | ADDG2 | -"- | Сложение двухоперанд- | | |||
| | | | ное в формате G | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 60FD | ADDH2 | -"- | Сложение двухоперанд- | | |||
| | | | ное в формате H | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 4I | ADDF3 | КОП add1.rx,add2.rx, | Сложение трехоперанд- | | |||
| | | sum.wx | ное в формате F | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 6I | ADDD3 | -"- | Сложение трехоперанд- | | |||
| | | | ное в формате D | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 4IFD | ADDG3 | КОП add1.rx,add2.rx, | Сложение трехоперандное | | |||
| | | sum.wx | в формате G | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 6IFD | ADDH3 | -"- | Сложение трехоперандное | | |||
| | | | в формате H | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| D4 | CLRL,CLRF | КОП dst.wx | Очистка двойного слова | | |||
| | | | /или слова формата F/ | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 7C | CLRQ,CLRD,| -"- | Очистка четверного слова | | |||
| | CLRG | | /или слов форматов D ,G/ | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 7CFD | CLRO,CLRH | -"- | Очистка октослова /или | | |||
| | | | слова формата H/ | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 5I | CMPF | КОП src1.rx,src2.rx | Сравнение слов формата F | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 7I | CMPD | -"- | Сравнение слов формата D | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 5IFD | CMPG | -"- | Сравнение слов формата G | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 7IFD | CMPH | -"- | Сравнение слов формата H | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 4B | CVTRFL | КОП src.rx,dst.wl | Преобразование слова | | |||
| | | | формата F в двойное сло- | | |||
| | | | во с округлением | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 6B | CVTRDL | -"- | Преобразование слова | | |||
| | | | формата D в двойное | | |||
| | | | слово с округлением | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 4BFD | CVTRGL | -"- | Преобразование слова | | |||
| | | | формата G в двойное | | |||
| | | | слово с округлением | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 6BFD | CVTRHL | -"- | Преобразование слова | | |||
| | | | формата H в двойное | | |||
| | | | слово с округлением | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 48 | CVTFB | КОП src.rx,dst.wy | Преобразование слова | | |||
| | | | формата F в байт | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 56 | CVTFD | КОП src.rx,dst.wy | Преобразование слова фор- | | |||
| | | | мата F в слово формата D | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 99FD | CVTFG | -"- | Преобразование слова фор- | | |||
| | | | мата F в слово формата G | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 98FD | CVTFH | -"- | Преобразование слова фор- | | |||
| | | | мата F в слово формата H | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 4A | CVTFL | -"- | Преобразование слова фор- | | |||
| | | | мата F в двойное слово | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 49 | CVTFW | -"- | Преобразование слова фор- | | |||
| | | | мата F в слово | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 48FD | CVTGB | -"- | Преобразование слова фор- | | |||
| | | | мата G в байт | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 33FD | CVTGF | -"- | Преобразование слова фор- | | |||
| | | | мата G в слово формата F | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 56FD | CVTGH | -"- | Преобразование слова фор- | | |||
| | | | мата G в слово формата H | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 4AFD | CVTGL | -"- | Преобразование слова фор- | | |||
| | | | мата G в двойное слово | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 49FD | CVTGW | -"- | Преобразование слова фор- | | |||
| | | | мата G в слово | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 68FD | CVTHB | -"- | Преобразование слова фор- | | |||
| | | | мата H в байт | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| F7FD | CVTHD | -"- | Преобразование слова фор- | | |||
| | | | мата H в слово формата D | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 56FD | CVTHF | -"- | Преобразование слова фор- | | |||
| | | | мата H в слово формата F | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 76FD | CVTHG | -"- | Преобразование слова фор- | | |||
| | | | мата H в слово формата G | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 6AFD | CVTHL | -"- | Преобразование слова фор- | | |||
| | | | мата H в двойное слово | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 69FD | CVTHW | -"- | Преобразование слова фор- | | |||
| | | | мата H в слово | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 68 | CVTDB | КОП src.rx,dst.wy | Преобразование слова форма- | | |||
| | | | та D в байт | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 76 | CVTDF | -"- | Преобразование слова форма- | | |||
| | | | та D в слово формата F | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 32FD | CVTDH | -"- | Преобразование слова форма- | | |||
| | | | та D в слово формата H | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 6A | CVTDL | -"- | Преобразование слова форма- | | |||
| | | | та D в двойное слово | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 69 | CVTDW | -"- | Преобразование слова форма- | | |||
| | | | та D в слово | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 6C | CVTBD | -"- | Преобразование байта в сло- | | |||
| | | | во формата D | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 4C | CVTBF | -"- | Преобразование байта в сло- | | |||
| | | | во формата F | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 4CFD | CVTBG | -"- | Преобразование байта в | | |||
| | | | слово формата G | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 6CFD | CVTBH | -"- | Преобразование байта в | | |||
| | | | слово формата H | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 6D | CVTWD | -"- | Преобразование слова в | | |||
| | | | слово формата D | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 4D | CVTWF | -"- | Преобразование слова в | | |||
| | | | слово формата F | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 4DFD | CVTWG | -"- | Преобразование слова в | | |||
| | | | слово формата G | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 6DFD | CVTWH | -"- | Преобразование слова в | | |||
| | | | слово формата H | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 6E | CVTLD | -"- | Преобразование двойного | | |||
| | | | слова в слово формата D | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 4E | CVTLF | -"- | Преобразование двойного | | |||
| | | | слова в слово формата F | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 4EFD | CVTLG | -"- | Преобразование двойного | | |||
| | | | слова в слово формата G | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 6EFD | CVTLH | КОП rc.rx,dst.wy | Преобразование двойного | | |||
| | | | слова в слово формата H | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 46 | DIVF2 | КОП divr.rx,quo.mx | Деление двухоперандное | | |||
| | | | в формате F | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 66 | DIVD2 | -"- | Деление двухоперандное | | |||
| | | | в формате D | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 46FD | DIVG2 | -"- | Деление двухоперандное | | |||
| | | | в формате G | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 66FD | DIVH2 | -"- | Деление двухоперандное | | |||
| | | | в формате H | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 47 | DIVF3 | КОП divr.rx,divd.rx, | Деление трехоперандное | | |||
| | | quo.wx | в формате F | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 67 | DIVD3 | -"- | Деление трехоперандное | | |||
| | | | в формате D | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 47FD | DIVG3 | -"- | Деление трехоперандное | | |||
| | | | в формате G | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 67FD | DIVH3 | -"- | Деление трехоперандное | | |||
| | | | в формате H | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 54 | EMODF | КОП mulr.rx,mulrx.rb, | Расширенное умножение | | |||
| | | muld.rx,int.wl,fract.wx | в формате F с выделе- | | |||
| | | | нием целой части | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 74 | EMODD | -"- | Расширенное умножение | | |||
| | | | в формате D с вы- | | |||
| | | | делением целой части | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 54FD | EMODG | КОП mulr.rx,mulrx.rw, | Расширенное умножение | | |||
| | | muld.rx,int.wl,fract.wx | в формате G с выделе- | | |||
| | | | нием целой части | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 74FD | EMODH | -"- | Расширенное умножение | | |||
| | | | в формате H с выделе- | | |||
| | | | нием целой части | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 52 | MNEGF | КОП src.rx,dst.wx | Пересылка с арифметическим | | |||
| | | | отрицанием в формате F | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 72 | MNEGD | -"- | Пересылка с арифметическим | | |||
| | | | отрицанием в формате D | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 52FD | MNEGG | -"- | Пересылка с арифметическим | | |||
| | | | отрицанием в формате G | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 72FD | MNEGH | -"- | Пересылка с арифметическим | | |||
| | | | отрицанием в формате H | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 50 | MOVF | -"- | Пересылка слов формата F | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 70 | MOVD | -"- | Пересылка слов формата D | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 50FD | MOVG | -"- | Пересылка слов формата G | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 70FD | MOVH | -"- | Пересылка слов формата H | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 44 | MULF2 | КОП mulr.rx, | Умножение двухоперандное | | |||
| | | prod.mx | в формате F | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 64 | MULD2 | -"- | Умножение двухоперандное | | |||
| | | | в формате D | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 44FD | MULG2 | -"- | Умножение двухоперандное | | |||
| | | | в формате G | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 64FD | MULH2 | -"- | Умножение двухоперандное | | |||
| | | | в формате H | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 45 | MULF3 | КОП mulr.rx, | Умножение трехоперандное | | |||
| | | muld.rx,prod.wx | в формате F | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 65 | MULD3 | -"- | Умножение трехоперандное | | |||
| | | | в формате D | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 45FD | MULG3 | -"- | Умножение трехоперандное | | |||
| | | | в формате G | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 65FD | MULH3 | -"- | Умножение трехоперандное | | |||
| | | | в формате H | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 55 | POLYF | КОП arg.rf,degree.rw, | Вычисление значения поли- | | |||
| | | tbladdr.ab,{R0-3.wl} | нома в формате F | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 75 | POLYD | КОП arg.rd,degree.rw, | Вычисление значения поли- | | |||
| | | tbladdr.ab,{R0-5.wl} | нома в формате D | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 55FD | POLYG | КОП arg.rg,degree.rw, | Вычисление значения поли- | | |||
| | | tbladdr.db,{R0-5.wl} | нома в формате G | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 75FD | POLYH | КОП adg.rh,degree.rw, | Вычисление значения поли- | | |||
| | | tbladdr.ab, | нома в формате H | | |||
| | | {R0-5.wl,-16(SP):-1(SP).wb} | | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 42 | SUBF2 | КОП sub.rx,dif.mx | Вычитание двухоперандное | | |||
| | | | в формате F | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 62 | SUBD2 | -"- | Вычитание двухоперандное | | |||
| | | | в формате D | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 42FD | SUBG2 | -"- | Вычитание двухоперандное | | |||
| | | | в формате G | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 62FD | SUBH2 | -"- | Вычитание двухоперандное | | |||
| | | | в формате H | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 43 | SUBF3 | КОП sub.rx,min.rx,dif.wx | Вычитание трехоперандное | | |||
| | | | в формате F | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 63 | SUBD3 | -"- | Вычитание трехоперандное | | |||
| | | | в формате D | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 43FD | SUBG3 | -"- | Вычитание трехоперандное | | |||
| | | | в формате G | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 63FD | SUBH3 | -"- | Вычитание трехоперандное | | |||
| | | | в формате H | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 53 | TSTF | КОП src.rx | Тестирование в формате F | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 73 | TSTD | -"- | Тестирование в формате D | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
| 53FD | TSTG | -"- | Тестирование в формате G | | |||
+------+-----------+-------------------------------+----------------------------------+ | |||
</pre> | |||
[[Категория:Электроника-32]] | [[Категория:Электроника-32]] | ||
Текущая версия от 17:15, 9 апреля 2026
| Данный материал защищён авторскими правами!
Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей. |
1.12. Система микрокоманд
В микропроцессорной системе "Электроника 32" имеется несколько форматов микрокоманд.
Микрокоманды МА, МВ, МС
Форматы МА, МВ, МС это содержательные микрокоманды операционного блока (ОБ), остальные форматы микрокоманд не воспринимаются ОБ и служат для управления выборкой микрокоманд из ПЗУ-микрокода, а также для управления ПЛМ-дешифратора команд (ПЛМ ДШК).
Форматы микрокоманд операционного блока МА, МВ, МС приведены на рис. 42.
Расшифруем значение полей содержательных микрокоманд.
ФМК
Поле "ФМК" - формат микрокоманды
+-------+----+----------------------------------------------+-------------+ | Разряды МК | Наименование формата микрокоманды | Обобщенное | +-----+------+ | обозначение | | 31 | 30 | | | +-----+------+----------------------------------------------+-------------+ | 0 | 0 | Одноадресная ОБ | MA | +-----+------+----------------------------------------------+-------------+ | 0 | I | Двухадресная ОБ | MB | +-----+------+----------------------------------------------+-------------+ | I | 0 | Трехадресная ОБ | MC | +-----+------+----------------------------------------------+-------------+
ФД
Поле "ФД" - формат данных
+-------+----+-------------------------------------------------------+ | Разряды МК | Формат данных в ОБ | +-----+------+ | | 29 | 28 | | +-----+------+-------------------------------------------------------+ | 0 | 0 | Двойное слово (ДС) - 32 разряда | +-----+------+-------------------------------------------------------+ | 0 | 1 | Слово (СЛ) - I6 разрядов (возможно изменение | | | | только мл.части РСП) | +-----+------+-------------------------------------------------------+ | 1 | 1 | Байт (БТ) - 8 разрядов | +-----+------+-------------------------------------------------------+ | 1 | 0 | Резервный код "ФД" , признак подсветки приема | | | | в регистр косвенной адресации (РКА) | +-----+------+-------------------------------------------------------+
КОП2
Поле "КОП2" - коды операций двухадресных и трехадресных микрокоманд
+----+----+----+------------------+------------------+----------------------+ | КОП2 | | | | + Разряды МК + Обозначение | Обозначение | Операция | | 27 | 26 | 25 | | | | +----+----+----+------------------+------------------+----------------------+ | 0 | 0 | 0 | Y → X | X → Z | Пересылка | +----+----+----+------------------+------------------+----------------------+ | 0 | 0 | 1 | X+Y → X | X+Y → Z | Сложение | +----+----+----+------------------+------------------+----------------------+ | 0 | 1 | 0 | X-Y → X | X-Y → Z | Вычитание | +----+----+----+------------------+------------------+----------------------+ | 0 | 1 | 1 | Y-X → X | Y-X → Z | Обр.вычитание | +----+----+----+------------------+------------------+----------------------+ | 1 | 0 | 0 | X⊕Y → X | X⊕Y → Z | MOD2 | +----+----+----+------------------+------------------+----------------------+ | 1 | 0 | I | X ∨ Y → X | X ∨ Y → Z | Дизъюнкция | +----+----+----+------------------+------------------+----------------------+ | 1 | 1 | 0 | X & Ȳ → X | X & Ȳ → Z | Конъюнкция с | | | | | | | отрицанием | +----+----+----+------------------+------------------+----------------------+ | 1 | 1 | 1 | X & Y → X | X & Y → Z | Конъюнкция | +----+----+----+------------------+------------------+----------------------+
Здесь: Для двухадресных микрокоманд:
Х - операнд в поле Х (МК 19-15),
Y - операнд в поле У (МК 24-20),
Для трехадресных микрокоманд:
Х - операнд в поле Х (МК 19-15), Y - операнд в поле У (МК 24-20), Z - операнд в поле Z (МК 11-7 ).
КОП1
Поле "КОП1" - коды операций одноадресных микрокоманд
+----+----+----+----+------------------+------------------------------------+ | КОП1 | | | | + Разряды МК + | Обозначение | О п е р а ц и я | | 27 | 26 | 25 | 24 | | | | +----+----+----+----+------------------+------------------------------------+ | O | O | O | O | M → X | Пересылка | +----+----+----+----+------------------+------------------------------------+ | O | O | O | 1 | | Резерв | +----+----+----+----+------------------+------------------------------------+ | O | O | 1 | O | X + M → X | Сложение | +----+----+----+----+------------------+------------------------------------+ | O | O | 1 | 1 | X → X | Пересылка | +----+----+----+----+------------------+------------------------------------+ | O | 1 | O | O | X - M → X | Вычитание | +----+----+----+----+------------------+------------------------------------+ | O | 1 | O | 1 | | Резерв | +----+----+----+----+------------------+------------------------------------+ | O | 1 | 1 | O | M - X → X | Обратное вычитание | +----+----+----+----+------------------+------------------------------------+ | O | 1 | 1 | 1 | X → X̄ | Инверсия | +----+----+----+----+------------------+------------------------------------+ | 1 | O | O | O | X⊕M → X | MOD2 | +----+----+----+----+------------------+------------------------------------+ | 1 | O | O | 1 | АЛ(Х) | Арифметический сдвиг | | | | | | | влево | +----+----+----+----+------------------+------------------------------------+ | 1 | O | 1 | O | X ∨ M → X | Дизъюнкция | +----+----+----+----+------------------+------------------------------------+ | 1 | O | 1 | 1 | ЦЛ(Х) | Циклический сдвиг влево | +----+----+----+----+------------------+------------------------------------+ | 1 | 1 | O | O | X & M̄ → X | Конъюнкция с отрицанием | +----+----+----+----+------------------+------------------------------------+ | 1 | 1 | O | 1 | АП(Х) | Арифметический сдвиг | | | | | | | вправо | +----+----+----+----+------------------+------------------------------------+ | 1 | 1 | 1 | O | X & M → X | Конъюнкция | +----+----+----+----+------------------+------------------------------------+ | 1 | 1 | 1 | 1 | ЦП(Х) | Циклический сдвиг вправо | +----+----+----+----+------------------+------------------------------------+
Здесь Х - операнд по адресу в поле Х (МК 19-15), М - модификатор, или константа, по адресу в поле АМ (МК 23-20), (т.е. в одноадресной микроинструкции константа читается по полю "Y").
ПС
Поле "ПС" - прием состояния
+-------+----+------------------------------------------+ | ПС | | +------------+ Прием состояния | | разряды МК | | +----+--+----+ | | 14 | 13 | | +----+-------+------------------------------------------+ | O | O | Запись признаков N, Z, V, C (ЗС) | +----+-------+------------------------------------------+ | 1 | O | Запись N, Z, V ; Сохранение C (МС) | +----+-------+------------------------------------------+ | O | 1 | Запись N, Z ,обнуление V, C (НV) | +----+-------+------------------------------------------+ | 1 | 1 | Нет записи состояния (НЗС)| +----+-------+------------------------------------------+
ВА
Поле "ВА" - запись в регистр виртуального адреса (РВА)
- ВА (МК 12) = 0 - адрес в фазе чтения
- ВА (МК 12) = I - адрес в фазе записи.
Если поле ВА (МК 12):=0 в одноадресных микроинструкциях циклических сдвигов, то сдвиг осуществляется минуя разряд "С" в регистре состояния процессора (РСП) (см. рис. 43).
Однако, при любых микрооперациях сдвигов, арифметических либо циклических, выдвигаемый разряд заносится в "С" РСП. Кроме того, необходимо учесть, что при арифметическом сдвиге влево, если поле ВА:=0 , то данная микрооперация трансформируется в циклический левый сдвиг.
НО
Поле "НО" - направление обмена
+-------+----+------------------------------------------+ | НО | | +------------+ Тип обмена | | Разряды МК | | +----+--+----+ | | 11 | 10 | | +----+-------+------------------------------------------+ | 0 | 0 | Обмен с основной памятью (ПМ) | +----+-------+------------------------------------------+ | 0 | 1 | Обмен с памятью с перехватом в БРА (ПП) | +----+-------+------------------------------------------+ | 1 | 0 | Обмен с системными регистрами (СР) | +----+-------+------------------------------------------+ | 1 | 1 | Обмен с системной памятью (СП) | +----+-------+------------------------------------------+
ФО
Поле "ФО" - формата обмена
+-------+----+------------------------------------------+ | ФО | | +------------+ Тип формата обмена | | Разряды МК | | +----+-------+ | | 9 | 8 | | +----+-------+------------------------------------------+ | 0 | 0 | Длинное слово обмена (ДСО) | +----+-------+------------------------------------------+ | 0 | 1 | Слово обмена (СЛО) | +----+-------+------------------------------------------+ | 1 | 1 | Байт обмена (БО) | +----+-------+------------------------------------------+ | 1 | 0 | Четверное слово обмена (ЧСО) | +----+-------+------------------------------------------+
I) Если в микрокоманде поле "ФО" (МК ⟨9,8⟩) : = ⟨1,0⟩ , то за одну такую микрокоманду можно осуществить сложение/вычитание с переносом (БИТ "С" РСП), используя выходной признак CARRY⟨===⟩ МК⟨9,8⟩:=⟨1,0⟩ (см. синтаксические таблицы микроассемблера). Сложение/вычитание с переносом блокируется, если в данной микрокоманде инициирован обмен.
2) Если в микрокоманде поле "ФО" (МК ⟨9,8⟩ ):= ⟨1,0⟩ , то при использовании микроопераций сдвигов влево (АЛ, ЦЛ) в специальном флажке запоминается признак "V" - переполнение. Логика установления данного флажка такова: если любой из выдвигаемых (на место знакового) разрядов не совпадает со знаковым разрядом, то V:=1, иначе V:=0.
По флагу записи состояния соответствующим образом (в соответствии с данным флажком) устанавливается бит "V" в РСП.
Накопленный признак "V" (флаг переполнения) сбрасывается по концу команды (КК). В противном случае (если поле "ФО" (МК ⟨9,8⟩ ) :≠ ⟨1,0⟩ ) блокируется установка "V" при сдвигах.
КОБ
Рассмотрим теперь поле кода обмена ("КОБ") в формате микрокоманды. Для осуществления двойных обменов (обмены 64-разрядными данными) необходимо использовать формат обмена ("ФО") ЧСО (МК ⟨9,8⟩ : = ⟨I,0⟩ ).
Поле "КОБ" - кода обмена
+-------+----+------------------------------------------+ | КОБ | | +------------+ Тип обмена | | Разряды МК | | +----+--+----+ | | 7 | 6 | 5 | | +----+---+---+------------------------------------------+ | 0 | 0 | 0 | Нет обмена (НОБ) | +----+---+---+------------------------------------------+ | 0 | 0 | 1 | Чтение данных (ЧД) | +----+---+---+------------------------------------------+ | 0 | 1 | 0 | Запись данных (ЗД) | +----+---+---+------------------------------------------+ | 0 | 1 | 1 | Чтение-модификация-запись (ЧЗ) | +----+---+---+------------------------------------------+ | 1 | 0 | 0 | Запись в регистр-аккумулятор R(17) (WDAK)| +----+---+---+------------------------------------------+ | 1 | 0 | 1 | Чтение команды (ЧК) | +----+---+---+------------------------------------------+ | 1 | 1 | 0 | Резерв | +----+---+---+------------------------------------------+ | 1 | 1 | 1 | Запись смещения в БРД (ЗпЧТ) | +----+---+---+------------------------------------------+
Процедура чтение-модификация-запись (ЧМЗ) для работы с 64-разрядными данными имеет свои особенности, а именно:
ЧМЗ трансформируется в чтение 64-разрядных данных, а адрес записи аппаратно помещается в регистр-аккумулятор процессора R(17) и для завершения процедуры ЧМЗ необходимо проинициировать запись по адресу, находящемуся : R(17), т.е. тип обмена ЧМЗ 64-разрядными данными фактически не является неделимой операцией.
Прочие поля
Разряд (МК0) служит для останова выборки микрокоманд из ПЗУ микрокода (S-бит). Если в микрокоманде МК0:=1, то после выборки этой микрокоманды выборка микрокоманд из ПЗУ приостанавливается до следующей записи в регистр адреса ПЗУ, т.е. если установлен S-бит и заполнены хотя бы две ячейки буфера команд (готовность буфера команд), то блок синхронизации дешифратора команд (БС ПЛМ ДШК) запускает новый цикл ПЛМ.
Разряд (МК 4) - признак приема данных - ПД; используется при чтении с буферного регистра данных (БРД). ПД:=1 в случае использования в переменных полях ПХ, ПУ микрокоманды номера регистра - 1F (БРД). (ПД:=1 - признак продвижения БРД).
Разряды (МК 1-3) управляют выдачей переменных полей микрокоманды. Если признак равен 1, то соответствующее поле микрокоманды выдается не из буфера ПЗУ, а из соответствующего регистра переменного поля, который загружается при дешифрации команды.
Признаки:
- ПХ:=1 — заменить переменное поле Х;
- ПУ:=1 — то же — У;
- ПZ:=1 — то же — Z;
- ПО:=1 — то же — обмена от ПЛМ.
Микрокоманды безусловного ветвления
Рассмотрим формат микрокоманды безусловного ветвления и ветвления по коду прерывания (см. рис. 44 )
Расшифруем значение полей данного формата.
Поле "ФМК" - формат микрокоманды
+-----------------------------------+-----------------------------+-------------+ | Разряды МК | Наименование формата | Обобщенное | +--------+----------+---------+-----+ микрокоманды | обозначение | | Поле "ФМК" | Нули | "Пр"| | | +----+----+----+----+----+----+-----+ | | | 31 | 30 | 29 | 28 | 27 | 26 | 25 | | | +----+----+----+----+----+----+-----+-----------------------------+-------------+ | 1 | 1 | 1 | 0 | 0 | 0 | 0 | Безусловное ветвление | БП | | | | | | | | | | | +----+----+----+----+----+----+-----+-----------------------------+-------------+ | 1 | 1 | 1 | 0 | 0 | 0 | 1 | Ветвление по коду | УПР_КП | | | | | | | | | прерывания | | +----+----+----+----+----+----+-----+-----------------------------+-------------+
Микрокоманды данного формата в ДБ не передаются (Сигнал ЗпМК - не вырабатывается). Назначение этих микрокоманд - безусловный переход по микроадресу, указанному в разрядах 15-2 микрокоманды. Если разряд модификации микроадреса MADR - установлен (МК 16:=1), то адрес микроперехода формируется следующим образом:
разряды 5-0 адреса заменяются разрядами 5-0 из регистра ОБ с адресом 18, а разряды 13-6 - непосредственно из тела микрокоманды. Далее регистр адреса ПЗУ микрокода (РА) загружается адресом перехода.
Далее, если разряд RETURN установлен (МК 17:=0) , то одновременно с загрузкой регистра адреса ПЗУ микрокода в регистре возврата запоминается адрес микрокоманды, следующей за микрокомандой безусловного перехода. Это предусматривает использование механизма микроподпрограмм с единичным уровнем вложенности. Возврат из микропрограммы осуществляется микроинструкцией типа RTS , которая будет описана ниже. Если же МК 17:=1, то в регистр возврата записи не происходит.
Тот факт, что разряд МК 25:=1 указывает на то, что в качестве индикатора младшей части микроадреса используется четырохразрядный код из регистра - кода прерываний (РКП). Четвертый и пятый разряды адреса микрокоманды - нули. Разряды 13-6 - из тела микрокоманды, т.е. в этом случае осуществляется переход по регистру кода прерываний (УПР_КП).
Микрокоманды условного ветвления
Рассмотрим формат микрокоманды перехода по условиям (см. рис. 45). Поле "ФМК": МК ⟨31, 30, 29⟩ : = ⟨1, 1, 0⟩
При выборке микрокоманды перехода по условию в ОБ не выполняются никаких содержательных операций. Происходит только анализ признаков N, Z, V, C, вырабатываемых в ОБ, и анализ некоторых флагов состояния и выработка сигнала ветвления (BR). Сигнал BR вырабатывается схемой образования условия ветвления и затем поступает на блок управления приемом и обработкой микрокоманд (БПМК), где и формируется сигнал СВМС, который настраивает мультиплексор регистра адреса пуска ПЗУ - микрокода на определенное направление. После выдачи микрокоманды условного перехода она тормозится до появления сигнала готовности ОБ. Если при появлении сигнала готовности ОБ сигнал BR переходит в низкий уровень, то следующая микрокоманда выбирается по адресу, указанному в поле микрокоманды (МК 15-2) и далее из адресов, следующих за этим адресом по порядку. Если сигнал BR при появлении сигнала готовности ОБ остается на высоком уровне, то следующая микрокоманда выбирается по адресу, следующему за микрокомандой ветвления.
Приведем расшифровку разрядов в данном формате микрокоманды:
- "УВ" (МК 28):=1/0 - условие ветвления по признакам и флагам;
- "N" (МК 27):=1 - ветвление по признаку отрицательного результата;
- "Z" (МК 26):=1 - ветвление по признаку нулевого результата;
- "V" (МК 25):=1 - ветвление по признаку переполнения;
- "C" (МК 24):=1 - ветвление по признаку переноса.
Т.е. коды условий (N,Z,V,C) задаются в поле признаков (МК 27-24) установкой в 1 соответствующего разряда. Если единицами заданы сразу несколько признаков, то они объединяются по схеме "ИЛИ" при анализе, если разряд УВ:=1 (если разряд УВ:=0, то результирующее условие ветвления формируется по конъюнкции).
- "FP" (МК 23):=1 - ветвление по универсальному флагу перехода в микропрограмме (Установка/сбhос флага перехода реализуется микропрограммно при помощи микрокоманды "SRF", которая будет описана ниже);
- "FPD" (МК 22):=1 - ветвление по флагу разрешения прерывания в "длинных" командах (First Part Done );
- "PRB" (МК 21):=1 - ветвление по флагу PRB для команды PROBEX (флаг PRB взводится аппаратурой диспетчера памяти процессора, если запрещена процедура преобразования адреса);
- "RST" (МК 20):=1 - ветвление по флагу рестарта;
- "RD" (МК 19):=1 - ветвление по признаку "регистр-приемник" (Признак "RD" взводится ПЛМ_ДШК при дешифрации команды и используется также для модификации адреса микропрограммы содержательной обработки);
- "RETURN" (МК 17):=1 - нет записи в регистр возврата;
(МК 17):=0 - запись в регистр возврата (Подробнее см. описание формата микрокоманды безусловного ветвления); - "ЖС" (МК 16):=1 - признак "ждать состояния" кодов условий N,Z,V,C.
Т.е. поле "ЖС" (МК 16) задает режим анализа. Если ЖС:=0, то анализируются те признаки, которые хранятся в РСП в момент приема микрокоманды ветвления. Если ЖС:=1, то анализируются признаки, выработанные в предыдущей микрокоманде, независимо от того, записываются они в РСП или нет (признаки берутся из схемы формирования состояния). В микрокомандах условного ветвления нет возможности модификации младшей части микроадреса в отличии от микроинструкций безусловного перехода и некоторых других, которые будут описаны ниже.
Прочие микрокоманды
Рассмотрим остальные форматы микрокоманд (см. рис. 46 ).
ЗСЧ, ПСЧ
Для организации управления циклами в микропрограмме служат микрокоманды форматов ЗСЧ (загрузка микропрограммного счечика) и ПСЧ (ветвление по счетчику). Микропрограммный счетчик находится в блоке управления ПЗУ микрокода. Этот счетчик загружается микрокомандой формата ЗСЧ (см. рис. 46). После выборки микрокоманды этого формата в счетчик загружается константа, содержащаяся в разрядах 9-2 микрокоманды. Если разряд модификации константы установлен, т.е. МСС (МК 16):=1 , то разряды 5-0 константы заменяются разрядами 5-0 регистра R(18) ОБ. Разряды 7-6 константы берутся непосредственно из микрокоманды.
При выборке микрокоманды ветвления по счетчику (ПСЧ) анализируется состояние счетчика. После анализа состояния счетчика его содержимое декрементируется н_ единицу. Если содержимое счетчика не равно нулю при анализе, то происходит ветвление по адресу, указанному в разрядах 15-2 микрокоманды. При этом, если разряд модификации адреса микроперехода установлен, т.е. MADR (МК 16):=1, то разряды 5-0 микроадреса перехода заменяются разрядами 5-0 регистра R(I8) ОБ. Разряды микроадреса 13-6 берутся непосредственно из микрокоманды. Если содержимое счетчика равно нулю при анализе, то выбирается следующая микрокоманда.
NOP
При выборке микрокоманды NOP (см. рис. 46 ) не производится никаких содержательных операций (пустой заполнитель в микропрограмме).
ACC
Микрокоманды формата АСС (см. рис. 46 ) - микрокоманды, выполняющие аппаратным ускорителем команд расширенной арифметики и плавающей точки (формат АСС будет раскрыт в другом источнике - отчет по НИР "Электроника 32 С"). После выборки микрокоманд этого формата в блоке управления приемом и обработкой микрокоманд вырабатывается сигнал торможения приема микрокоманды (блокируется сигнал WMCE). Это торможение сбрасывается внешним сигналом готовности ускорителя (АССЕ).
RTS
После выборки микрокоманды формата RTS (см. рис. 46 ) - возврат из микроподпрограммы, в регистр адреса ПЗУ - микрокода загружается содержимое регистра возврата (РВ), т.е. адрес микрокоманды, следующей за последней выполняемой микрокомандой безусловного/условного ветвления.
ЧКА
После выборки микрокоманды формата ЧКА (см.рис. 46 ) по адресу, указанному в разрядах I5-2 микрокоманды читается 32-разрядная адресная константа и помещается в регистре констант ПЗУ (RC), который доступен микропрограммно по адресу, указанному по полю чтения константы (поле "Y" в одноадресном формате). Если разряд модификации адреса константы установлен, т.е. MADR (МК 16):=1, то адрес константы формируется следующим образом:
- разряды 5-0 адреса заменяются разрядами 5-0 регистра 18 ОБ;
- разряды 13-6 берутся непосредственно из микрокоманды.
ЧЛК
После выборки микрокоманды формата ЧЛК (см. рис. 46) в регистр констант ⟨RC⟩(в разряды 23-0) загружается содержимое микрокоманды из разрядов 25-2. Разряды 31-24 ⟨RC⟩ загружаются нулями, если признак СБ:=0 (МК 1), и единицами, если СБ:=1.
Регистр констант доступен микропрограммно по адресу, указанному по полю чтения константы. Для чтения литеральных и адресных констант используется адрес ⟨6⟩ в блоке констант (БК).
SRF
Микрокоманды формата SRF (см. рис. 46) используются для установки/сброса некоторых функциональных флагов:
+--------------------+-----------+----------------------------------------+ | Наименование флага | Состояние | Назначение | | (вых. признак) | | | +--------------------+-----------+----------------------------------------+ | | | Устанавливает торможение по | | WTMM | МК 25:=1 | приему микрокоманды (блоки- | | | | рует WMCE) до конца работы | | | | диспетчера памяти | +--------------------+-----------+----------------------------------------+ | SFП1 | МК 21:=1 | Установка универсального | | | | флага перехода | +--------------------+-----------+----------------------------------------+ | RFП1 | МК 20:=1 | Сброс универсального флага | | | | перехода | +--------------------+-----------+----------------------------------------+ | ИНК | МК 1:=1 | Инкремент номера регистра | +--------------------+-----------+----------------------------------------+ | ДЕК | МК 5:=1 | Декремент номера регистра | +--------------------+-----------+----------------------------------------+ | | | Сброс конвейера приема ко- | | ОСТ | МК 4:=1 | манд, буфера команд, оста- | | | | нов ДШК | +--------------------+-----------+----------------------------------------+ | | | Устанавливает торможение по | | | | приему микрокоманды (блоки- | | ЖДЗРА | МК 2:=1 | рует WMCE) до конца вы - | | | | полнения микрокоманды за - | | | | грузки регистра адреса | | | | (R(18)ОБ). | +--------------------+-----------+----------------------------------------+
При использовании микроинструкций ветвления и некоторых других допускающих модификацию младшей части микроадреса (УП, ЧКА, БП, ПСЧ), а также микроинструкций, допускающих модификацию младшей части константы, загружаемой в микропрограммный счетчик, необходимо загрузить регистр-модификатор адреса ОБ, который имеет адрес записи (1·100X)₂, т.е. 18₁₆ или 19₁₆. Флажок торможения ЖДЗРА сбрасывается по факту записи в R(19)ОБ, т.е. по окончании выполнения данной микроинструкции ОБ.
Поясним алгоритм установки/адреса такого типа торможения по приему микрокоманды следующей временной диаграммой (см. рис. 47).
Кроме того регистр-модификатор R(18)ОБ может быть использован в качестве обычного аккумулятора; нулевой разряд R(18)ОБ можно прочитать по адресу 0F₁₆ в блоке констант, но на месте второго разряда:
FLAG
В отличие от формата SRF, формат микрокоманд FLAG (см. рис. 46) служит для установки некоторых функциональных флагов, привязанных к циклу операционного блока (ОБ):
+--------------------+-----------+----------------------------------------+ | Наименование флага | Состояние | Назначение | | (вых.признаки) | | | +--------------------+-----------+----------------------------------------+ | INTMS | МК 23:=1 | Подсветка микропрограммы | | | | обработки прерываний | +--------------------+-----------+----------------------------------------+ | RCPU | МК 22:=1 | Микропрограммный сброс | | | | процессора | +--------------------+-----------+----------------------------------------+ | SIVV | МК 21:=1 | Блокировка целочисленного | | | | переполнения (сброс по "КК") | +--------------------+-----------+----------------------------------------+ | CCFPU | МК 20:=1 | Принять состояние от аппа- | | | | ратного ускорителя команд | | | | расширенной арифметики и | | | | плавающей точки | +--------------------+-----------+----------------------------------------+ | PROB | МК 19:=1 | Флаг для команды PROBE | +--------------------+-----------+----------------------------------------+ | SIU | МК 17:=1 | Микропрограммный опрос бло- | | | | ка прерываний (БПР) | +--------------------+-----------+----------------------------------------+ | TOU | МК 16:=1 | Торможение операционного | | | | блока (ОБ) до конца работы | | | | диспетчера памяти (ДП) | +--------------------+-----------+----------------------------------------+ | COPWT | МК 15:=1 | Перепись копий РСП и СК | +--------------------+-----------+----------------------------------------+
INTMS - устанавливает два аппаратных флага:
- INVRD - чтение вектора прерываний по физическому адресу. Флаг INVRD - сбрасывается первой одноадресной микроинструкцией.
- SKF - признак использования стека ядра/прерываний. Флаг SKF - сбрасывается по концу команды (КК).
Микропрограммный сброс процессора по флагу RCPU осуществляется по следующей схеме:
По факту установки флага PROB обеспечивается холостой цикл диспетчера памяти для пробирования адреса. Если адрес недоступен, то аппаратура диспетчера памяти взводит флажок PRB, по которому производится ветвление.
По факту установки флага COPWT (и по "КК") обеспечивается аппаратная перепись копий РСП и СК:
REST
При выборке микрокоманды REST (см. рис. 46) происходит восстановление РОНа из стека-рестарта и декрементируется счетчик рестарта (Запись с стек рестарта происходит аппаратно в фазе адресации операндов, при использовании одноадресной микроинструкции, микроопераций инкремент/декремент, употребления по полю чтения-Х микрокоманды 4-х разрядного номера регистра общего назначения).
Алгоритм восстановления регистров-указателей операндов из стека рестарта приведен на рис. 48. (глубина стека рестарта равна 6, в соответствии с максимальным количеством операндов в команде).
1.13. Описание ресурсов микропрограммного уровня процессора
К ресурсам микропрограммиста будем относить такие регистры операционного блока (ОБ), как регистры общего назначения (РОНк), регистр-указатель стекового кадра, регистр-указатель аргумента, регистр-указатель стека, регистры-аккумуляторы, регистры виртуального адреса, счетчик команд, слово состояния процессора, буферный регистр данных и т.д., а также некоторые внутренние регистры процессора. Все регистры, используемые в проекте "Электроника 32", сведены в табл. 6.
Микропрограммно доступен также блок констант операционного блока (БК). Константы ОБ приведены в табл. 7.
Микропрограммно доступна любая ячейка виртуального адресного пространства. Виртуальный адрес содержит 32 разряда и определяет ячейку длиной в байт в адресном пространстве.
Для программиста этот адрес обеспечивает адресацию линейной матрицы объемом в 4 294 967 296 байтов. Виртуальное адресное пространство разделено на страницы по 512 байтов каждая. Страница является объектом перемещения и защиты. Виртуальное адресное пространство показано на рис. 49 . Виртуальная память разделена на 2 части. Первая половина, занимающая младшую часть адресов, предназначена для распределения процессов и для каждого процесса, выполняемого в комплексе, она своя. Вторая половина виртуальной памяти, занимающая старшую часть адресов, предназначена для размещения системы, и эта область разделяется всеми процессами.
Область процессов в свою очередь делится на две равные части: программную область (P0-регион) и управляющую область (P1-регион).
Регистры процессора
Таблица 6. Регистры процессора
+----------+-----------+------------------------+---------------+-----------+ | Мнемоника| Адрес(16) | Назначение | Доступ | Сфера | +----------+-----------+------------------------+---------------+-----------+ | R0-RB | 00-0B | Регистры общего | ч на X,ȳ / | | | | | назначения (РОН) | з с X*, ȳ* | | +----------+-----------+------------------------+---------------+ | | AP | 0C | Указатель аргумента | | | +----------+-----------+------------------------+ | | | FP | 0D | Указатель кадра | | | +----------+-----------+------------------------+ | | | SP | 0E | Указатель стека | | | +----------+-----------+------------------------+ | | | PC | 0F | Счетчик команд | | | +----------+-----------+------------------------+---------------+ | | АК6 | 10 | | | | +----------+-----------+ | | | | АК4 | 11 | | | | +----------+-----------+ | | | | АК3 | 12 | | | | +----------+-----------+ | ч на X, ȳ / | ОБ про- | | АК5 | 13 | Регистры-аккумуляторы | з с X*, ȳ* | цессора | +----------+-----------+ | | | | АКØ | 14 | | | | +----------+-----------+ | | | | АК1 | 15 | | | | +----------+-----------+ | | | | АК2 | 16 | | | | +----------+-----------+ | | | | АК7 | 18 | | | | | | (адрес | | | | | | записи | | | | | | 11ØØX₂) | | | | +----------+-----------+ +---------------+ | | АК8 | 17 | | ч на X, ȳ / | | | | | | з с X*,ȳ*,X | | +----------+-----------+------------------------+---------------+ | | РКА | 1D | Регистр косвенной | ч на X/з с | | | | (адрес | адресации | МД | | | | чтения) | | | | +----------+-----------+------------------------+---------------+ | | РКВА | 19 | Регистр копия вирту- | ч на ȳ / | | | | (адрес | ального адреса | з с РВА | | | | чтения) | | | | +----------+-----------+------------------------+---------------+-----------+ | РВА | 1A(адрес | Регистр виртуального | ч на X,ȳ / | | | | чтения) | адреса | з с X,ȳ*,РВАК | | +----------+-----------+------------------------+---------------+ | | РВАК | 1B(адрес | Регистр виртуально- | ч на ȳ / | | | | чтения) | го адреса команды | з с X*, ȳ* | | | | 0F(адрес | | | | | | записи) | | | | +----------+-----------+------------------------+---------------+ | | РНК | 1C(адрес | Регистр начала ко - | ч на ȳ / | | | | чтения) | манды | з с СК | | +----------+-----------+------------------------+---------------+ | | КРСП | 1D(адрес | Копия регистра со- | ч на ȳ / | | | | чтения) | стояния процессора | з с РСП | | +----------+-----------+------------------------+---------------+ ОБ про- | | PSL | 1E | Слово состояния про- | ч на X,ȳ / | цессора | | | | цессора | з с X*,ȳ* | | +----------+-----------+------------------------+---------------+ | | БО | 1F | Буферный регистр | ч на X,ȳ / | | | | | данных | з с X*,ȳ*; МД | | +----------+-----------+------------------------+---------------+-----------+
Внутренние регистры процессора
+----------+-----------+------------------------+---------------+-----------+ | Мнемоника| Адрес (16)| Назначение | Доступ | Сфера | +----------+-----------+------------------------+---------------+-----------+ | KSP | 00 | Указатель стека ре- | ч/з | | | | | режима ядра | | - | +----------+-----------+------------------------+---------------+ | | ESP | 01 | Указатель стека ре- | ч/з | Адаптер | | | | жима исполнения | | Q-BUS | +----------+-----------+------------------------+---------------+ | | SSP | 02 | Указатель стека ре- | ч/з | | | | | жима супервизора | | | +----------+-----------+------------------------+---------------+ | | USP | 03 | Указатель стека ре- | ч/з | | | | | жима пользователя | | | +----------+-----------+------------------------+---------------+ | | ISP | 04 | Указатель стека пре- | ч/з | (область | | | | рываний | | сист.рег. | +----------+-----------+------------------------+---------------+-----------+ | | 05...07 | Резерв | ч/з | | +----------+-----------+------------------------+---------------+-----------+ | P0BR | 08 | Регистр базн Р0 | ч/з | | +----------+-----------+------------------------+---------------+-----------+ | P0LR | 09 | Регистр длины Р0 | ч/з | Диспетчер | +----------+-----------+------------------------+---------------+ памяти | | P1BR | 0A | Регистр базы P1 | ч/з | процессо- | +----------+-----------+------------------------+---------------+ ра | | P1LR | 0B | Регистры длины P1 | ч/з | | +----------+-----------+------------------------+---------------+ | | SBR | 0C | Регистр базы системы | ч/з | | +----------+-----------+------------------------+---------------+ | | SLR | 0D | Регистр длины системы | ч/з | | +----------+-----------+------------------------+---------------+-----------+ | | 0E...0F | Резерв | ч/з | | +----------+-----------+------------------------+---------------+-----------+ | PCBB | 10 | Регистр базы блока | ч/з | Адаптер | | | | управления процесса | | Q-BUS | +----------+-----------+------------------------+---------------+-----------+ | SCBB | 11 | Регистр базы блока | ч/з | Адаптер | | | | управления системы | | Q-BUS | | | | | | (обл.си- | | | | | | ст.рег.) | +----------+-----------+------------------------+---------------+-----------+ | IPL | 12 | Уровень приоритета пре-| ч/з | Процессор | | | | рывания | | (разряды | | | | | | 20+I6 PSL)| +----------+-----------+------------------------+---------------+-----------+ | ASTR | 13 | Уровень AST | ч/з | | +----------+-----------+------------------------+---------------+ Адаптер | | SIRR | 14 | Регистр запроса на про-| з | Q-BUS | | | | граммное прерывание | | (обл.си- | +----------+-----------+------------------------+---------------+ ст.рег.) | | SISR | 15 | Регистр программного | ч/з | | | | | прерывания | | | +----------+-----------+------------------------+---------------+-----------+ | | 16 | Резерв | | | +----------+-----------+------------------------+---------------+-----------+ | MCSR | 17 | Регистр состояния сбоя | ч | Контрол- | | | | машины | | лер па - | | | | | | мяти | +----------+-----------+------------------------+---------------+-----------+ | ICCS | 18 | Регистр состояния | ч/з | | | | | таймера | | | +----------+-----------+------------------------+---------------+ | | NICR | 19 | Регистр счета сле- | з | Адаптер | | | | дующего интервала | | Q-BUS | +----------+-----------+------------------------+---------------+ | | ICR | 1A | Регистр-счетчик | ч | (обл.сист.| | | | интервалов | | рег.) | +----------+-----------+------------------------+---------------+ | | TODR | 1B | Регистр времени | ч/з | | | | | дня | | | +----------+-----------+------------------------+---------------+-----------+ | | 1C...1F | Резерв | | | +----------+-----------+------------------------+---------------+-----------+ | RXCS | 20 | Регистр состояния | ч/з | | | | | консольного при - | | | | | | емника | | | +----------+-----------+------------------------+---------------+ | | RXDB | 21 | Регистр данных кон- | ч | | | | | сольного приемника | | | +----------+-----------+------------------------+---------------+ | | TXCS | 22 | Регистр состояния | ч/з | | | | | консольного пере - | | | | | | датчика | | | +----------+-----------+------------------------+---------------+ | | TXDB | 23 | Регистр данных кон- | з | | | | | сольного передатчика | | | +----------+-----------+------------------------+---------------+-----------+ | TBDR | 24 | Отключение групп бу- | ч/з | | | | | фера трансляции(при | | | | | | обращении читаются | | | | | | нули) | | | +----------+-----------+------------------------+---------------+ | | CADR | 25 | Регистр отключения | ч/з | Контроллер| | | | КЭШ-памяти | | памяти | +----------+-----------+------------------------+---------------+ | | MCESR | 26 | Регистр ошибок при | ч/з | | | | | машинном сбое | | | +----------+-----------+------------------------+---------------+ | | CAER | 27 | Регистр ошибок КЭШ- | ч/з | | | | | памяти | | | +----------+-----------+------------------------+---------------+-----------+ | ACCS | 28 | Регистр состояния | ч | БИС со - | | | | ускорителя команд | | процес - | | | | П.З. | | сора | +----------+-----------+------------------------+---------------+-----------+ | | 29...36 | Резерв | | | +----------+-----------+------------------------+---------------+-----------+ | IORESET | 37 | Регистр сброса | з | Адаптер | | | | UNIBUS | | Q-BUS | +----------+-----------+------------------------+---------------+-----------+ | MME | 38 | Регистр включения | ч/з | Диспетчер | | (MAPEN) | | диспетчера памяти | | памяти про-| | | | | | цессора | +----------+-----------+------------------------+---------------+-----------+ | TBIA | 39 | Регистр обнуления | з | Диспетчер | | | | всего буфера тран- | | памяти | | | | сляции | | процессора| +----------+-----------+------------------------+---------------+-----------+ | TBIS | 3A | Регистр обнуления | з | Диспетчер | | | | записи в буфере | | памяти | | | | трансляции | | процессора| +----------+-----------+------------------------+---------------+-----------+ | | 3B...3C | Резерв | | | +----------+-----------+------------------------+---------------+-----------+ | PMI | 3D | Регистр включения | ч/з | Адаптер | | | | исполнительного | | Q-BUS | | | | монитора | | | +----------+-----------+------------------------+---------------+-----------+ | SID | 3E | Регистр идентифика- | ч/з | Процессор | | | | ции системы | | | +----------+-----------+------------------------+---------------+-----------+ | | | Резерв | | | +----------+-----------+------------------------+---------------+-----------+
Константы ОБ
Таблица 7. Константы ОБ
+------------+---------------+-----------------------------------------------+
| Адрес (16) | Значение (16) | Назначение |
+------------+---------------+-----------------------------------------------+
| 00 | 00000004 | Инкремент |
+------------+---------------+-----------------------------------------------+
| 01 | 00000002 | Инкремент |
+------------+---------------+-----------------------------------------------+
| 02 | 00000008 | Инкремент |
+------------+---------------+-----------------------------------------------+
| 03 | 00000001 | Инкремент |
+------------+---------------+-----------------------------------------------+
| 04 | 00000000 | Обнуление |
+------------+---------------+-----------------------------------------------+
| 05 | - | РСМ |
+------------+---------------+-----------------------------------------------+
| 06 | - | Литера ПЗУ, адресные |
| | | константы |
+------------+---------------+-----------------------------------------------+
| 07 | 00000066 | Константа перевода в код |
| | | с избытком 6 |
+------------+---------------+-----------------------------------------------+
| 08 | 0000000* | [1:0] = РСП (CRM), [2] - IS |
| | | (Чтение СRM из РСП) |
+------------+---------------+-----------------------------------------------+
| 09 | 00C00000 | Маски CRM в РСП |
+------------+---------------+-----------------------------------------------+
| 0A | FFFFFFFF | |
+------------+---------------+-----------------------------------------------+
| 0B | 00IF0000 | Маски IPL в РСП |
+------------+---------------+-----------------------------------------------+
| 0C | 04000000 | Маски IS в РСП |
+------------+---------------+-----------------------------------------------+
| 0D | 0000000* | [2:0] = MPL |
+------------+---------------+-----------------------------------------------+
| 0E | 000000** | Десятичная коррекция |
| | | [7:0] = { AA,A0 |
| | | { 0A,00 |
+------------+---------------+-----------------------------------------------+
| 0F | 0000000* | второй разряд = нулевой |
| | | разряд R18 выбор стека |
| | | при прерываниях |
+------------+---------------+-----------------------------------------------+
Адресное пространство
Системное ОЗУ
Для организации системного ОЗУ (СОЗУ), некоторых внутренних системных регистров, хранения карты адресов Q-BUS БИС адаптера магистралей обеспечивает управление (чтение, запись) четырех микросхем статического ЗУ с организацией 2Кх8.
Системное ОЗУ и системные регистры доступны микропрограммно.
1.14. Система команд
В данном разделе очень кратко будут описаны те инструкции, которые используются в любом программном обеспечении при всех применениях вычислительной системы "Электроника 32". Главная цель архитектуры вычислительной системы - обеспечить набор команд, который симметричен по отношению к типам данных. Например, существуют команды сложения (ADD) для семи типов данных (байт, слово, длинное слово, F , D , G и H -floating), причем каждая команда имеет варианты для двух и трех операндов. Симметричными командами являются также команды пересылки, преобразования тестирования и вычислений (в микропроцессорной системе "Электроника 32" команды работы со I28-разрядными данными, такими как H-floating и Octal integer, выполняются эмуляцией на программном уровне).
В числе команд пересылок входят также команды пересылки с арифметическим отрицанием и логическим дополнением. Здесь команды отрицания и дополнения включают в себя пересылку и не изменяют исходный операнд.
Команды арифметических вычислений включают в себя сложение, вычитание, умножение и деление. Логические команды работают с тремя типами данных (байт, слово, длинное слово) и включают в себя: установку и сброс битов, логическое сложение MOD 2. Команды арифметических и логических вычислений доступны как в двух, так и в трехоперандной формах для каждого допустимого типа данных. Трехоперандная форма принимает первые два операнда и сохраняет результат по адресу третьего операнда.
Для задач целочисленного программирования имеется команда записи в стек длинного слова.
Для каждого типа целочисленных данных существуют операции инкремента и декремента.
Существуют специальные команды сложения, вычитания, умножения и деления с многократной точностью.
Для реализации математиоеских функций введены команды вычисления показателей степени и полиномов.
В систему команд входят также команды обработки чисел в формате с плавающей запятой. Команды с плавающей запятой работают с данными четырех типов (F, D , G и H-формат). Для всех четырех типов данных с плавающей запятой имеются стандартные арифметические операции сложения, вычитания, умножения и деления (ADD, SUB, MUL, DIV). Кроме того имеются две составные операции EMOD и POLY, также применимые ко всем четырем типам данных с плавающей запятой. EMOD вырабатывает произведение двух операндов, а затем разделяет результат на целую и дробную части. POLY подсчитывает значение полинома по заданной степени, аргументу и указателю таблицы коэффициентов.
Имеется полный набор команд преобразования из целочисленного типа данных во все форматы с плавающей запятой, и наоборот. Также имеется набор команд преобразования из одного типа данных с плавающей запятой в другой, за исключением преобразований из формата D в формат G и наоборот.
Для всех типов данных с плавающей запятой существует класс команд пересылок (MOV, MNEG), очистки (CLR), сравнения (СМР) и тестирования (TST). И, наконец, существует класс команд АСВ (сложение, сравнение и переход).
В процессоре имеется широкий набор команд ветвлений и переходов (команды управления). Довольно часто требуется передача управления, основанная на значении переменной, для поддержки таких конструкций в языках высокого уровня как "GOTO" в языке FORTRAN и "CASE" в языке PASCAL . Вследствии этого система команд включает в себя команду CASE , позволяющую эффективно реализовать эти структуры управления. Команда CASE не только производит передачу управления, но также управляет инициализацией и контролем границ для переменной типа INDEX. Цепь команды CASE состоит в передаче управления одной из n ячеек на основании значения целочисленного операнда-селектора.
Существует также ряд важных команд, предназначенных для работы со специфическими типами данных, такими как поле бит переменной длины, символьная строка, строка десятичных цифр, строка упакованных десятичных цифр, очередь (типы данных приведены на рис. 50).
В системе команд имеется несколько категорий команд, которые обладают в точно определенных условиях большими привилегиями, чем обычное программное обеспечение.
Это привилегированные команды и особые (специальные) команды, которые не попадают под какую-либо классификацию. Некоторые из этих инструкций предназначены для работы со специализированной частью архитектуры вычислительной системы (например: диспетчеризация памяти, прерывания и исключительные ситуации, диспетчеризация процессов, внутренние регистры процессора).
Для наглядности представления системы команд, на основании изложенного выше, разделим набор инструкций на 13 основных разделов:
- Команды для работы с целыми числами и логические команды.
- Команды для работы со стеками и адресами памяти.
- Команды управления.
- Команды для работы с переменными битовыми полями.
- Команды вызова процедур и подпрограмм.
- Привилегированные команды.
- Специальные команды.
- Команды работы с очередями.
- Команды плавающей арифметики.
- Команды обработки строк символов.
- Команды десятичной строки цифр.
- Команды контроля циклической избыточности.
- Команды редактирования.
Ниже будет приведено краткое описание инструкций (см. табл. 8).
Внутри каждого раздела близкие по свойствам инструкции объединены в группы и вместе описываются. Описание групп инструкций состоит из следующих пунктов: название группы; код команды; формат каждой инструкции в группе.
В табл.8 приводится мнемоника команды, определяются название и тип каждого спецификатора операнда инструкции и порядок, в котором они появляются в инструкции.
Таблица 8
СИСТЕМА КОМАНД
1. Команды для работы с целыми числами и логические команды
+-----+-----------+-------------------------------+----------------------------------+
| Код | Мнемоника | Формат | Назначение |
+-----+-----------+-------------------------------+----------------------------------+
| 58 | ADAWI | КОП add.rw,sum.mw | Сложение выровненных |
| | | | слоев с блокировкой па- |
| | | | мяти |
+-----+-----------+-------------------------------+----------------------------------+
| 80 | ADDB2 | КОП add.rx,sum.mx | Сложение байтов двух - |
| | | | операндное |
+-----+-----------+-------------------------------+----------------------------------+
| A0 | ADDW2 | -"- | Сложение слов двухопе- |
| | | | рандное |
+-----+-----------+-------------------------------+----------------------------------+
| C0 | ADDL2 | -"- | Сложение двойных слов |
| | | | двухоперандное |
+-----+-----------+-------------------------------+----------------------------------+
| 81 | ADDB3 | КОП add1.rx,add2.rx, | Сложение байтов трех - |
| | | sum.mx | операндное |
+-----+-----------+-------------------------------+----------------------------------+
| A1 | ADDW3 | -"- | Сложение слов трехопе- |
| | | | рандное |
+-----+-----------+-------------------------------+----------------------------------+
| C1 | ADDL3 | -"- | Сложение двойных слов |
| | | | трехоперандное |
+-----+-----------+-------------------------------+----------------------------------+
| D8 | ADWC | КОП add.rl,sum.ml | Сложение с переносом |
+-----+-----------+-------------------------------+----------------------------------+
| 78 | ASHL | КОП cnt.rb,src.rx, | Арифметический сдвиг |
| | | dst.wx | двойного слова |
+-----+-----------+-------------------------------+----------------------------------+
| 79 | ASHQ | -"- | Арифметический сдвиг |
| | | | квадрослова |
+-----+-----------+-------------------------------+----------------------------------+
| 8A | BICB2 | КОП mask.rx,dst.mx | Очистка разрядов байта |
| | | | двухоперандная |
+-----+-----------+-------------------------------+----------------------------------+
| AA | BICW2 | -"- | Очистка разрядов слова |
| | | | двухоперандная |
+-----+-----------+-------------------------------+----------------------------------+
| CA | BICL2 | -"- | Очистка разрядов двой - |
| | | | ного слова двухоперанд- |
| | | | ная |
+-----+-----------+-------------------------------+----------------------------------+
| 8B | BICB3 | КОП mask.rx, | Очистка разрядов байта |
| | | src.rx,dst.mx | трехоперандная |
+-----+-----------+-------------------------------+----------------------------------+
| AB | BICW3 | -"- | Очистка разрядов слова |
| | | | трехоперандная |
+-----+-----------+-------------------------------+----------------------------------+
| CB | BICL3 | -"- | Очистка разрядов двойно- |
| | | | го слова трехоперандная |
+-----+-----------+-------------------------------+----------------------------------+
| 88 | BISB2 | КОП mask.rx, | Установка разрядов байта |
| | | dst.mx | двухоперандная |
+-----+-----------+-------------------------------+----------------------------------+
| A8 | BISW2 | -"- | Установка разрядов слова |
| | | | двухоперандная |
+-----+-----------+-------------------------------+----------------------------------+
| C8 | BISL2 | -"- | Установка разрядов двойно- |
| | | | го слова двухоперандная |
+-----+-----------+-------------------------------+----------------------------------+
| 89 | BISB3 | КОП mask.rx,src.rx, | Установка разрядов байта |
| | | dst.mx | трехоперандная |
+-----+-----------+-------------------------------+----------------------------------+
| A9 | BISW3 | -"- | Установка разрядов слова |
| | | | трехоперандная |
+-----+-----------+-------------------------------+----------------------------------+
| C9 | BISL3 | -"- | Установка разрядов двой - |
| | | | ного слова трехоперандная |
+-----+-----------+-------------------------------+----------------------------------+
| 93 | BITB | КОП mask.rx,src.rx | Проверка разрядов байта |
+-----+-----------+-------------------------------+----------------------------------+
| B3 | BITW | -"- | Проверка разрядов слова |
+-----+-----------+-------------------------------+----------------------------------+
| D3 | BITL | -"- | Проверка разрядов двойно- |
| | | | го слова |
+-----+-----------+-------------------------------+----------------------------------+
| 94 | CLRB | КОП dst.wx | Очистка байта |
+-----+-----------+-------------------------------+----------------------------------+
| B4 | CLRW | -"- | Очистка слова |
+-----+-----------+-------------------------------+----------------------------------+
| D4 | CLRL | -"- | Очистка двойного слова |
+-----+-----------+-------------------------------+----------------------------------+
| 7C | CLRQ | -"- | Очистка квадрослова |
+-----+-----------+-------------------------------+----------------------------------+
| 91 | CMPB | КОП src1.rx,src2.rx | Сравнение байтов |
+-----+-----------+-------------------------------+----------------------------------+
| B1 | CMPW | -"- | Сравнение слов |
+-----+-----------+-------------------------------+----------------------------------+
| D1 | CMPL | -"- | Сравнение двойных слов |
+-----+-----------+-------------------------------+----------------------------------+
| 99 | CVTBW | КОП src.rx,dst.my | Преобразование байта в |
| | | | слово |
+-----+-----------+-------------------------------+----------------------------------+
| 98 | CVTBL | -"- | Преобразование байта в |
| | | | двойное слово |
+-----+-----------+-------------------------------+----------------------------------+
| 33 | CVTWB | -"- | Преобразование слова в |
| | | | байт |
+-----+-----------+-------------------------------+----------------------------------+
| 32 | CVTWL | -"- | Преобразование слова в |
| | | | двойное слово |
+-----+-----------+-------------------------------+----------------------------------+
| F6 | CVTLB | -"- | Преобразование двойно- |
| | | | го слова в байт |
+-----+-----------+-------------------------------+----------------------------------+
| F7 | CVTLW | -"- | Преобразование двойно- |
| | | | го слова в слово |
+-----+-----------+-------------------------------+----------------------------------+
| 97 | DECB | КОП dif.mx | Декремент на один байт |
+-----+-----------+-------------------------------+----------------------------------+
| B7 | DECW | -"- | Декремент на одно слово |
+-----+-----------+-------------------------------+----------------------------------+
| D7 | DECL | -"- | Декремент на одно двой- |
| | | | ное слово |
+-----+-----------+-------------------------------+----------------------------------+
| 86 | DIVB2 | КОП divr.rx,quo.mx | Деление байтов двухопе- |
| | | | рандное |
+-----+-----------+-------------------------------+----------------------------------+
| A6 | DIVW2 | -"- | Деление слов двухопе - |
| | | | рандное |
+-----+-----------+-------------------------------+----------------------------------+
| C6 | DIVL2 | -"- | Деление двойных слов |
| | | | двухоперандное |
+-----+-----------+-------------------------------+----------------------------------+
| 87 | DIVB3 | КОП divr.rx,divd.rx, | Деление байтов трехопе- |
| | | quo.wx | рандное |
+-----+-----------+-------------------------------+----------------------------------+
| A7 | DIVW3 | -"- | Деление слов трехопе - |
| | | | рандное |
+-----+-----------+-------------------------------+----------------------------------+
| C7 | DIVL3 | -"- | Деление двойных слов |
| | | | трехоперандное |
+-----+-----------+-------------------------------+----------------------------------+
| 7B | EDIV | КОП divr.rl,divd.rq, | Расширенное деление |
| | | quo.wl,rem.wl | |
+-----+-----------+-------------------------------+----------------------------------+
| 7A | EMUL | КОП mulr.rl,muld.rl, | Расширенное умножение |
| | | add.rl,prod.wq | |
+-----+-----------+-------------------------------+----------------------------------+
| 96 | INCB | КОП sum.mx | Инкремент на один байт |
+-----+-----------+-------------------------------+----------------------------------+
| B6 | INCW | -"- | Инкремент на одно слово |
+-----+-----------+-------------------------------+----------------------------------+
| D6 | INCL | -"- | Инкремент на одно двой- |
| | | | ное слово |
+-----+-----------+-------------------------------+----------------------------------+
| 92 | MCOMB | КОП src.rx,dst.wx | Пересылка байта с инвер- |
| | | | сией |
+-----+-----------+-------------------------------+----------------------------------+
| B2 | MCOMW | -"- | Пересылка слова с инвер- |
| | | | сией |
+-----+-----------+-------------------------------+----------------------------------+
| D2 | MCOML | -"- | Пересылка двойного слова |
| | | | с инверсией |
+-----+-----------+-------------------------------+----------------------------------+
| 8E | MNEGB | -"- | Пересылка байта с ариф - |
| | | | метическим отрицанием |
+-----+-----------+-------------------------------+----------------------------------+
| AE | MNEGW | -"- | Пересылка слова с ариф - |
| | | | метическим отрицанием |
+-----+-----------+-------------------------------+----------------------------------+
| CE | MNEGL | -"- | Пересылка двойного слова |
| | | | с арифметическим отрица- |
| | | | нием |
+-----+-----------+-------------------------------+----------------------------------+
| 90 | MOVB | -"- | Пересылка байта |
+-----+-----------+-------------------------------+----------------------------------+
| B0 | MOVW | -"- | Пересылка слова |
+-----+-----------+-------------------------------+----------------------------------+
| D0 | MOVL | -"- | Пересылка двойного слова |
+-----+-----------+-------------------------------+----------------------------------+
| 7D | MOVQ | -"- | Пересылка квадрослова |
+-----+-----------+-------------------------------+----------------------------------+
| 9B | MOVZBW | КОП src.rx,dst.wy | Пересылка байта с допол- |
| | | | нением ведущими нулями |
| | | | до слова |
+-----+-----------+-------------------------------+----------------------------------+
| 9A | MOVZBL | -"- | Пересылка байта с допол- |
| | | | нением ведущими нулями |
| | | | до двойного слова |
+-----+-----------+-------------------------------+----------------------------------+
| BC | MOVZWL | -"- | Пересылка слова с допол- |
| | | | нением ведущими нулями |
| | | | до двойного слова |
+-----+-----------+-------------------------------+----------------------------------+
| 84 | MULB2 | КОП mulr.rx,prod.mx | Умножение байтов двух- |
| | | | операндное |
+-----+-----------+-------------------------------+----------------------------------+
| A4 | MULW2 | -"- | Умножение слов двухопе- |
| | | | рандное |
+-----+-----------+-------------------------------+----------------------------------+
| C4 | MULL2 | -"- | Умножение двойных слов |
| | | | двухоперандное |
+-----+-----------+-------------------------------+----------------------------------+
| 85 | MULB3 | КОП mulr.rx,muld.rx, | Умножение байтов трех- |
| | | prod.wx | операндное |
+-----+-----------+-------------------------------+----------------------------------+
| A5 | MULW3 | -"- | Умножение слов трехопе- |
| | | | рандное |
+-----+-----------+-------------------------------+----------------------------------+
| C5 | MULL3 | -"- | Умножение двойных слов |
| | | | трехоперандное |
+-----+-----------+-------------------------------+----------------------------------+
| DD | PUSHL | КОП src.rl,{-(SP).wl} | Занесение двойного сло- |
| | | | ва в стек |
+-----+-----------+-------------------------------+----------------------------------+
| 9C | ROTL | КОП cnt.rb,src.rl,dst.wl | Циклический сдвиг двой- |
| | | | ного слова |
+-----+-----------+-------------------------------+----------------------------------+
| D9 | SBWC | КОП sub.rl,dif.ml | Вычитание с переносом |
+-----+-----------+-------------------------------+----------------------------------+
| 82 | SUBB2 | КОП sub.rx,dif.mx | Вычитание байтов двух - |
| | | | операндное |
+-----+-----------+-------------------------------+----------------------------------+
| A2 | SUBW2 | -"- | Вычитание слов двухопе- |
| | | | рандное |
+-----+-----------+-------------------------------+----------------------------------+
| C2 | SUBL2 | -"- | Вычитание двойных слов |
| | | | двухоперандное |
+-----+-----------+-------------------------------+----------------------------------+
| 83 | SUBB3 | КОП sub.rx,min.rx, | Вычитание байтов трех- |
| | | dif.wx | операндное |
+-----+-----------+-------------------------------+----------------------------------+
| A3 | SUBW3 | -"- | Вычитание слов трехопе- |
| | | | рандное |
+-----+-----------+-------------------------------+----------------------------------+
| C3 | SUBL3 | КОП sub.rx,min.rx, | Вычитание двойных слов |
| | | dif.wx | трехоперандное |
+-----+-----------+-------------------------------+----------------------------------+
| 95 | TSTB | КОП src.rx | Проверка разрядов байта |
+-----+-----------+-------------------------------+----------------------------------+
| B5 | TSTW | -"- | Проверка разрядов слова |
+-----+-----------+-------------------------------+----------------------------------+
| D5 | TSTL | -"- | Проверка разрядов двойно- |
| | | | го слова |
+-----+-----------+-------------------------------+----------------------------------+
| 8C | XORB2 | КОП mask.rx,dst.mx | Сложение байтов по MOD2 |
| | | | двухоперандное |
+-----+-----------+-------------------------------+----------------------------------+
| AC | XORW2 | -"- | Сложение слов по MOD2 |
| | | | двухоперандное |
+-----+-----------+-------------------------------+----------------------------------+
| CC | XORL2 | -"- | Сложение двойных слов по |
| | | | MOD2 двухоперандное |
+-----+-----------+-------------------------------+----------------------------------+
| 8D | XORB3 | КОП mask.rx,src.rx, | Сложение байтов по MOD2 |
| | | dst.wx | трехоперандное |
+-----+-----------+-------------------------------+----------------------------------+
| AD | XORW3 | -"- | Сложение слов по MOD2 |
| | | | трехоперандное |
+-----+-----------+-------------------------------+----------------------------------+
| CD | XORL3 | -"- | Сложение двойных слов по |
| | | | MOD2 трехоперандное |
+-----+-----------+-------------------------------+----------------------------------+
2. Команды работы со стеками и адресами памяти
+------+-----------+-------------------------------+----------------------------------+
| 9E | MOVAB | КОП src.ax,dst.wl | Пересылка адреса байта |
+------+-----------+-------------------------------+----------------------------------+
| 3E | MOVAW | -"- | Пересылка адреса слова |
+------+-----------+-------------------------------+----------------------------------+
| DE | MOVAL, | -"- | Пересылка адреса двойного |
| | MOVAF | | слова /или слова формата |
| | | | F/ |
+------+-----------+-------------------------------+----------------------------------+
| 7E | MOVAQ, | КОП src.ax,dst.wl | Пересылка адреса четвер- |
| | MOVAD, | | ного слова /или слов |
| | MOVAG | | форматов D, G / |
+------+-----------+-------------------------------+----------------------------------+
| 7FFD | MOVAO, | -"- | Пересылка адреса восьмер- |
| | MOVAH | | ного слова /или слова |
| | | | формата H/ |
+------+-----------+-------------------------------+----------------------------------+
| BF | PUSHAB | КОП src.ax,{-(SP).wl} | Пересылка адреса байта |
| | | | в стек |
+------+-----------+-------------------------------+----------------------------------+
| 3F | PUSHAW | -"- | Пересылка адреса слова |
| | | | в стек |
+------+-----------+-------------------------------+----------------------------------+
| DF | PUSHAL, | -"- | Пересылка адреса двой- |
| | PUSHAF | | ного слова /или слова |
| | | | формата F / в стек |
+------+-----------+-------------------------------+----------------------------------+
| 7F | PUSHAQ, | -"- | Пересылка адреса чет - |
| | PUSHAD, | | верного слова /или слов |
| | PUSHAG | | форматов D ; G / в |
| | | | стек |
+------+-----------+-------------------------------+----------------------------------+
| 7FFD | PUSHAO, | -"- | Пересылка адреса вось- |
| | PUSHAH | | мерного слова/или сло- |
| | | | ва формата H/ в стек |
+------+-----------+-------------------------------+----------------------------------+
3. Команды управления
+------+-----------+-------------------------------+----------------------------------+
| Код | Мнемоника | Формат | Назначение |
+------+-----------+-------------------------------+----------------------------------+
| 9D | ACBB | КОП limit.rx,add.rx, | Сложение байтов со |
| | | index.mx,displ.bw | сравнением и переход |
+------+-----------+-------------------------------+----------------------------------+
| 3D | ACBW | -"- | Сложение слов со |
| | | | сравнением и переход |
+------+-----------+-------------------------------+----------------------------------+
| F1 | ACBL | КОП limit.rx,add.rx, | Сложение двойных слов со |
| | | index.mx,displ.bw | сравнением и переход |
+------+-----------+-------------------------------+----------------------------------+
| 4F | ACBF | -"- | Сложение слов формата F |
| | | | со сравнением и переход |
+------+-----------+-------------------------------+----------------------------------+
| 6F | ACBD | -"- | Сложение слов формата D |
| | | | со сравнением и переход |
+------+-----------+-------------------------------+----------------------------------+
| 4FFD | ACBG | -"- | Сложение слов формата G |
| | | | со сравнением и переход |
+------+-----------+-------------------------------+----------------------------------+
| 6FFD | ACBH | -"- | Сложение слов формата H |
| | | | со сравнением и переход |
+------+-----------+-------------------------------+----------------------------------+
| F3 | AOBLEQ | КОП limit.rx,index.ml, | Прибавить единицу и пере- |
| | | displ.bb | ход, если меньше или |
| | | | равно |
+------+-----------+-------------------------------+----------------------------------+
| F2 | AOBLSS | -"- | Прибавить единицу и пере- |
| | | | ход, если меньше |
+------+-----------+-------------------------------+----------------------------------+
| 19 | BLSS | КОП displ.bb | Переход, если N = I |
+------+-----------+-------------------------------+----------------------------------+
| 15 | BLEQ | -"- | Переход, если {NORZ}=1 |
+------+-----------+-------------------------------+----------------------------------+
| 13 | BEQL,BEQLU| -"- | Переход, если Z = I |
+------+-----------+-------------------------------+----------------------------------+
| 12 | BNEQ,BNEQU| -"- | Переход, если Z = 0 |
+------+-----------+-------------------------------+----------------------------------+
| I8 | BGEQ | -"- | Переход, если N = 0 |
+------+-----------+-------------------------------+----------------------------------+
| 14 | BGTR | -"- | Переход, если {NORZ} = 0 |
+------+-----------+-------------------------------+----------------------------------+
| 1F | BLSSU,BCS | -"- | Переход, если C = I |
+------+-----------+-------------------------------+----------------------------------+
| 1B | BLEQU | -"- | Переход, если {COR Z}= I |
+------+-----------+-------------------------------+----------------------------------+
| 1E | BGEQU,BCC | -"- | Переход, если C = 0 |
+------+-----------+-------------------------------+----------------------------------+
| 1A | BGTRU | -"- | Переход, если {CORZ} = 0 |
+------+-----------+-------------------------------+----------------------------------+
| 1D | BVS | -"- | Переход, если V = I |
+------+-----------+-------------------------------+----------------------------------+
| 1C | BVC | -"- | Переход, если V = 0 |
+------+-----------+-------------------------------+----------------------------------+
| E0 | BBS | КОП pos.rl,base.vb, | Ветвление по биту /указан- |
| | | disp l.bb,{field.rv} | ный разряд равен I/ |
+------+-----------+-------------------------------+----------------------------------+
| E1 | BBC | -"- | Ветвление по биту /указан- |
| | | | ный разряд равен 0/ |
+------+-----------+-------------------------------+----------------------------------+
| E2 | BBSS | -"- | Ветвление по установлен- |
| | | | ному биту и установить /без |
| | | | блокировки памяти/ |
+------+-----------+-------------------------------+----------------------------------+
| E4 | BBSC | -"- | Ветвление по установлен- |
| | | | ному биту и очистить /без |
| | | | блокировки памяти/ |
+------+-----------+-------------------------------+----------------------------------+
| E5 | BBCC | -"- | Ветвление по очищенному |
| | | | биту и очистить /без бло - |
| | | | кировки памяти/ |
+------+-----------+-------------------------------+----------------------------------+
| E3 | BBCS | -"- | Ветвление по очищенному |
| | | | биту и установить /без |
| | | | блокировки памяти/ |
+------+-----------+-------------------------------+----------------------------------+
| E6 | BBSSI | -"- | Ветвление по установлен- |
| | | | ному биту и установить с |
| | | | блокировкой памяти |
+------+-----------+-------------------------------+----------------------------------+
| E7 | BBCCI | -"- | Ветвление по сброшенному |
| | | | биту и очистить с блоки - |
| | | | ровкой памяти |
+------+-----------+-------------------------------+----------------------------------+
| E8 | BLBS | КОП src.rl,displ.bb | Ветвление, если установлен |
| | | | младший бит |
+------+-----------+-------------------------------+----------------------------------+
| E9 | BLBC | -"- | Ветвление, если сброшен |
| | | | младший бит |
+------+-----------+-------------------------------+----------------------------------+
| II | BRB | КОП displ.bx | Безусловный переход с бай- |
| | | | товым смещением |
+------+-----------+-------------------------------+----------------------------------+
| 3I | BRW | -"- | Безусловный переход со сме- |
| | | | щением в одно слово |
+------+-----------+-------------------------------+----------------------------------+
| I0 | BSBB | КОП displ.bx,{-(SP).wl} | Переход к подпрограмме с |
| | | | байтовым смещением |
+------+-----------+-------------------------------+----------------------------------+
| 30 | BSBW | -"- | Переход к подпрограмме со |
| | | | смещением в одно слово |
+------+-----------+-------------------------------+----------------------------------+
| 8F | CASEB | КОП selector.rx,base.rx, | Многофункциональный пере- |
| | | limit.rx,displ.bw-list | ход с байтовым смещением |
+------+-----------+-------------------------------+----------------------------------+
| AF | CASEW | -"- | Многофункциональный пере- |
| | | | ход со смещением в одно |
| | | | слово |
+------+-----------+-------------------------------+----------------------------------+
| CF | CASEL | -"- | Многофункциональный пере- |
| | | | ход со смещением в одно |
| | | | двойное слово |
+------+-----------+-------------------------------+----------------------------------+
| I7 | JMP | КОП dst.ab | Абсолютный безусловный |
| | | | переход |
+------+-----------+-------------------------------+----------------------------------+
| I6 | JSB | КОП dst.ab,{-(SP).wl} | Абсолютный переход к под- |
| | | | программе |
+------+-----------+-------------------------------+----------------------------------+
| 05 | RSB | КОП {(SP)+.rl} | Возврат из подпрограммы |
+------+-----------+-------------------------------+----------------------------------+
| F4 | SOBGEQ | КОП index.ml,displ.bb | Вычесть единицу и переход, |
| | | | если больше или равно |
+------+-----------+-------------------------------+----------------------------------+
| F5 | SOBGTR | -"- | Вычесть единицу и переход, |
| | | | если больше |
+------+-----------+-------------------------------+----------------------------------+
4. Команды для работы с переменными битовыми полями
+------+-----------+-------------------------------+----------------------------------+
| Код | Мнемоника | Формат | Назначение |
+------+-----------+-------------------------------+----------------------------------+
| EC | CMPV | КОП pos.rl,size.rb,base.vb, | Сравнение полей |
| | | {field.rv},src.rl | |
+------+-----------+-------------------------------+----------------------------------+
| ED | CMPZV | -"- | Сравнение полей с рас- |
| | | | ширением ведущими нулями |
+------+-----------+-------------------------------+----------------------------------+
| EE | EXTV | КОП pos.rl,size.rb, | Выделить поле |
| | | base.vb,{field.rv},dst.wl | |
+------+-----------+-------------------------------+----------------------------------+
| EF | EXTZV - | -"- | Выделить поле, расши - |
| | | | ренное ведущими нулями |
+------+-----------+-------------------------------+----------------------------------+
| EA | FFS | КОП startpos.rl, | Поиск первого установ- |
| | | size.rb,base.vb, | ленного разряда |
| | | {field.rv},findpos.wl | |
+------+-----------+-------------------------------+----------------------------------+
| EB | FFC | -"- | Поиск первого сброшен- |
| | | | ного разряда |
+------+-----------+-------------------------------+----------------------------------+
| F0 | INSV | КОП src.rl,pos.rl, | Вставка поля |
| | | size.rb,base.vb, | |
| | | {field.wv} | |
+------+-----------+-------------------------------+----------------------------------+
5. Команды вызова процедур и подпрограмм
+------+-----------+-------------------------------+----------------------------------+
| Код | Мнемоника | Формат | Назначение |
+------+-----------+-------------------------------+----------------------------------+
| FA | CALLG | КОП arglist.ab, | Вызов процедуры с |
| | | dst.ab,{-(SP).w*} | произвольным списком |
| | | | аргументов |
+------+-----------+-------------------------------+----------------------------------+
| FB | CALLS | КОП numg.rg.rl, | Вызов процедуры со |
| | | dst.ab,{-(SP).w*} | списком аргументов в |
| | | | стеке |
+------+-----------+-------------------------------+----------------------------------+
| 04 | RET | КОП {(SP)+.r*} | Возврат из процедуры |
+------+-----------+-------------------------------+----------------------------------+
6. Привилегированные команды
+------+-----------+-------------------------------+----------------------------------+
| Код | Мнемоника | Формат | Назначение |
+------+-----------+-------------------------------+----------------------------------+
| 0C | PROBER | КОП mode.rb,len.rw, | Проверка доступности по |
| | | base.ab | чтению |
+------+-----------+-------------------------------+----------------------------------+
| 0D | PROBEW | -"- | Проверка доступности по |
| | | | записи |
+------+-----------+-------------------------------+----------------------------------+
| BC | CHMK | КОП param.rw,{-(ySP).w*}, | Смена режима на режим |
| | | где: y=MINU(x,PSL <текущий | ядра |
| | | реж.>) | |
+------+-----------+-------------------------------+----------------------------------+
| BD | CHME | -"- | Смена режима на режим |
| | | | исполнения |
+------+-----------+-------------------------------+----------------------------------+
| BE | CHMS | -"- | Смена режима на режим |
| | | | супервизора |
+------+-----------+-------------------------------+----------------------------------+
| BF | CHMU | -"- | Смена режима на режим |
| | | | пользователя |
+------+-----------+-------------------------------+----------------------------------+
| 02 | REI | КОП {(SP)+.r*} | Возврат из исключитель- |
| | | | ной ситуации или пре - |
| | | | рывания |
+------+-----------+-------------------------------+----------------------------------+
| 06 | LDPCTX | КОП {PCB.r*,-(кSP).w*}, | Загрузка контекста |
| | | где PCB - регистр | процесса |
| | | управления процес- | |
| | | сором | |
+------+-----------+-------------------------------+----------------------------------+
| 07 | SVPCTX | КОП {(SP)+.r*,PCB.w*} | Сохранение контекста |
| | | | процесса |
+------+-----------+-------------------------------+----------------------------------+
| DA | MTPR | КОП src.rl,procreg.rl | Пересылка в процессор- |
| | | | ный регистр |
+------+-----------+-------------------------------+----------------------------------+
| DB | MFPR | КОП procreg.rl,dst.wl | Пересылка из процессор- |
| | | | ного регистра |
+------+-----------+-------------------------------+----------------------------------+
7. Специальные команды
+------+-----------+-------------------------------+----------------------------------+
| Код | Мнемоника | Формат | Назначение |
+------+-----------+-------------------------------+----------------------------------+
| B9 | BICPSW | КОП mask.rw | Сброс разрядов в слове |
| | | | состояния процессора |
+------+-----------+-------------------------------+----------------------------------+
| B8 | BISPSW | -"- | Установка разрядов в |
| | | | слове состояния процес- |
| | | | сора |
+------+-----------+-------------------------------+----------------------------------+
| 03 | BRT | КОП {-(кSP).w*} | Ошибка ветвления |
+------+-----------+-------------------------------+----------------------------------+
| 00 | HALT | -"- | Останов |
+------+-----------+-------------------------------+----------------------------------+
| 0A | INDEX | КОП subscript.rl,low.rl, | Вычисление индекса |
| | | high.rl,size.rl,indexin.rl, | |
| | | indexout.wl | |
+------+-----------+-------------------------------+----------------------------------+
| DC | MOVPSL | КОП dst.wl | Пересылка из длинного |
| | | | слова состояния процес- |
| | | | сора |
+------+-----------+-------------------------------+----------------------------------+
| 01 | NOP | КОП | Пустой оператор |
+------+-----------+-------------------------------+----------------------------------+
| BB | PUSHR | КОП mask.rw,{-(SP).w*} | Пересылка содержимого |
| | | | регистров в стек |
+------+-----------+-------------------------------+----------------------------------+
| BA | POPR | КОП mask.rw,{(SP)+.r*} | Удаление содержимого |
| | | | регистров из стека |
+------+-----------+-------------------------------+----------------------------------+
| FC | XFC | КОП | Расширенный вызов |
| | | | функции |
+------+-----------+-------------------------------+----------------------------------+
| FEFF | BUGW | КОП message.bx | Проверить слово на на- |
| | | | личие ошибок |
+------+-----------+-------------------------------+----------------------------------+
| FDFF | BUGL | -"- | Проверить двойное сло- |
| | | | во на наличие ошибок |
+------+-----------+-------------------------------+----------------------------------+
8. Команды работы с очередями
+------+-----------+-------------------------------+----------------------------------+ | Код | Мнемоника | Формат | Назначение | +------+-----------+-------------------------------+----------------------------------+ | 5C | INSQHI | КОП entry.ab,header.aq | Занесение элемента в | | | | | "голову" очереди с | | | | | блокировкой памяти | +------+-----------+-------------------------------+----------------------------------+ | 5D | INSQTI | КОП entry.ab,header.aq | Занесение элемента в | | | | | "хвост" очереди с бло- | | | | | кировкой памяти | +------+-----------+-------------------------------+----------------------------------+ | 0E | INSQUE | КОП entry.ab,pred.ab | Занесение элемента в | | | | | очередь | +------+-----------+-------------------------------+----------------------------------+ | 5E | REMQHI | КОП header.aq,addr.wl | Удаление элемента из | | | | | "головы" очереди с бло- | | | | | кировкой памяти | +------+-----------+-------------------------------+----------------------------------+ | 5F | REMQTI | -"- | Удаление элемента из | | | | | "хвоста" очереди с бло- | | | | | кировкой памяти | +------+-----------+-------------------------------+----------------------------------+ | 0F | REMQUE | КОП entry.ab,addr.wl | Удаление элемента из | | | | | очереди | +------+-----------+-------------------------------+----------------------------------+
9. Команды плавающей арифметики
+------+-----------+-------------------------------+----------------------------------+
| Код | Мнемоника | Формат | Назначение |
+------+-----------+-------------------------------+----------------------------------+
| 40 | ADDF2 | КОП addr.rx,sum.mx | Сложение двухоперанд- |
| | | | ное в формате F |
+------+-----------+-------------------------------+----------------------------------+
| 60 | ADDD2 | -"- | Сложение двухоперанд- |
| | | | ное в формате D |
+------+-----------+-------------------------------+----------------------------------+
| 40FD | ADDG2 | -"- | Сложение двухоперанд- |
| | | | ное в формате G |
+------+-----------+-------------------------------+----------------------------------+
| 60FD | ADDH2 | -"- | Сложение двухоперанд- |
| | | | ное в формате H |
+------+-----------+-------------------------------+----------------------------------+
| 4I | ADDF3 | КОП add1.rx,add2.rx, | Сложение трехоперанд- |
| | | sum.wx | ное в формате F |
+------+-----------+-------------------------------+----------------------------------+
| 6I | ADDD3 | -"- | Сложение трехоперанд- |
| | | | ное в формате D |
+------+-----------+-------------------------------+----------------------------------+
| 4IFD | ADDG3 | КОП add1.rx,add2.rx, | Сложение трехоперандное |
| | | sum.wx | в формате G |
+------+-----------+-------------------------------+----------------------------------+
| 6IFD | ADDH3 | -"- | Сложение трехоперандное |
| | | | в формате H |
+------+-----------+-------------------------------+----------------------------------+
| D4 | CLRL,CLRF | КОП dst.wx | Очистка двойного слова |
| | | | /или слова формата F/ |
+------+-----------+-------------------------------+----------------------------------+
| 7C | CLRQ,CLRD,| -"- | Очистка четверного слова |
| | CLRG | | /или слов форматов D ,G/ |
+------+-----------+-------------------------------+----------------------------------+
| 7CFD | CLRO,CLRH | -"- | Очистка октослова /или |
| | | | слова формата H/ |
+------+-----------+-------------------------------+----------------------------------+
| 5I | CMPF | КОП src1.rx,src2.rx | Сравнение слов формата F |
+------+-----------+-------------------------------+----------------------------------+
| 7I | CMPD | -"- | Сравнение слов формата D |
+------+-----------+-------------------------------+----------------------------------+
| 5IFD | CMPG | -"- | Сравнение слов формата G |
+------+-----------+-------------------------------+----------------------------------+
| 7IFD | CMPH | -"- | Сравнение слов формата H |
+------+-----------+-------------------------------+----------------------------------+
| 4B | CVTRFL | КОП src.rx,dst.wl | Преобразование слова |
| | | | формата F в двойное сло- |
| | | | во с округлением |
+------+-----------+-------------------------------+----------------------------------+
| 6B | CVTRDL | -"- | Преобразование слова |
| | | | формата D в двойное |
| | | | слово с округлением |
+------+-----------+-------------------------------+----------------------------------+
| 4BFD | CVTRGL | -"- | Преобразование слова |
| | | | формата G в двойное |
| | | | слово с округлением |
+------+-----------+-------------------------------+----------------------------------+
| 6BFD | CVTRHL | -"- | Преобразование слова |
| | | | формата H в двойное |
| | | | слово с округлением |
+------+-----------+-------------------------------+----------------------------------+
| 48 | CVTFB | КОП src.rx,dst.wy | Преобразование слова |
| | | | формата F в байт |
+------+-----------+-------------------------------+----------------------------------+
| 56 | CVTFD | КОП src.rx,dst.wy | Преобразование слова фор- |
| | | | мата F в слово формата D |
+------+-----------+-------------------------------+----------------------------------+
| 99FD | CVTFG | -"- | Преобразование слова фор- |
| | | | мата F в слово формата G |
+------+-----------+-------------------------------+----------------------------------+
| 98FD | CVTFH | -"- | Преобразование слова фор- |
| | | | мата F в слово формата H |
+------+-----------+-------------------------------+----------------------------------+
| 4A | CVTFL | -"- | Преобразование слова фор- |
| | | | мата F в двойное слово |
+------+-----------+-------------------------------+----------------------------------+
| 49 | CVTFW | -"- | Преобразование слова фор- |
| | | | мата F в слово |
+------+-----------+-------------------------------+----------------------------------+
| 48FD | CVTGB | -"- | Преобразование слова фор- |
| | | | мата G в байт |
+------+-----------+-------------------------------+----------------------------------+
| 33FD | CVTGF | -"- | Преобразование слова фор- |
| | | | мата G в слово формата F |
+------+-----------+-------------------------------+----------------------------------+
| 56FD | CVTGH | -"- | Преобразование слова фор- |
| | | | мата G в слово формата H |
+------+-----------+-------------------------------+----------------------------------+
| 4AFD | CVTGL | -"- | Преобразование слова фор- |
| | | | мата G в двойное слово |
+------+-----------+-------------------------------+----------------------------------+
| 49FD | CVTGW | -"- | Преобразование слова фор- |
| | | | мата G в слово |
+------+-----------+-------------------------------+----------------------------------+
| 68FD | CVTHB | -"- | Преобразование слова фор- |
| | | | мата H в байт |
+------+-----------+-------------------------------+----------------------------------+
| F7FD | CVTHD | -"- | Преобразование слова фор- |
| | | | мата H в слово формата D |
+------+-----------+-------------------------------+----------------------------------+
| 56FD | CVTHF | -"- | Преобразование слова фор- |
| | | | мата H в слово формата F |
+------+-----------+-------------------------------+----------------------------------+
| 76FD | CVTHG | -"- | Преобразование слова фор- |
| | | | мата H в слово формата G |
+------+-----------+-------------------------------+----------------------------------+
| 6AFD | CVTHL | -"- | Преобразование слова фор- |
| | | | мата H в двойное слово |
+------+-----------+-------------------------------+----------------------------------+
| 69FD | CVTHW | -"- | Преобразование слова фор- |
| | | | мата H в слово |
+------+-----------+-------------------------------+----------------------------------+
| 68 | CVTDB | КОП src.rx,dst.wy | Преобразование слова форма- |
| | | | та D в байт |
+------+-----------+-------------------------------+----------------------------------+
| 76 | CVTDF | -"- | Преобразование слова форма- |
| | | | та D в слово формата F |
+------+-----------+-------------------------------+----------------------------------+
| 32FD | CVTDH | -"- | Преобразование слова форма- |
| | | | та D в слово формата H |
+------+-----------+-------------------------------+----------------------------------+
| 6A | CVTDL | -"- | Преобразование слова форма- |
| | | | та D в двойное слово |
+------+-----------+-------------------------------+----------------------------------+
| 69 | CVTDW | -"- | Преобразование слова форма- |
| | | | та D в слово |
+------+-----------+-------------------------------+----------------------------------+
| 6C | CVTBD | -"- | Преобразование байта в сло- |
| | | | во формата D |
+------+-----------+-------------------------------+----------------------------------+
| 4C | CVTBF | -"- | Преобразование байта в сло- |
| | | | во формата F |
+------+-----------+-------------------------------+----------------------------------+
| 4CFD | CVTBG | -"- | Преобразование байта в |
| | | | слово формата G |
+------+-----------+-------------------------------+----------------------------------+
| 6CFD | CVTBH | -"- | Преобразование байта в |
| | | | слово формата H |
+------+-----------+-------------------------------+----------------------------------+
| 6D | CVTWD | -"- | Преобразование слова в |
| | | | слово формата D |
+------+-----------+-------------------------------+----------------------------------+
| 4D | CVTWF | -"- | Преобразование слова в |
| | | | слово формата F |
+------+-----------+-------------------------------+----------------------------------+
| 4DFD | CVTWG | -"- | Преобразование слова в |
| | | | слово формата G |
+------+-----------+-------------------------------+----------------------------------+
| 6DFD | CVTWH | -"- | Преобразование слова в |
| | | | слово формата H |
+------+-----------+-------------------------------+----------------------------------+
| 6E | CVTLD | -"- | Преобразование двойного |
| | | | слова в слово формата D |
+------+-----------+-------------------------------+----------------------------------+
| 4E | CVTLF | -"- | Преобразование двойного |
| | | | слова в слово формата F |
+------+-----------+-------------------------------+----------------------------------+
| 4EFD | CVTLG | -"- | Преобразование двойного |
| | | | слова в слово формата G |
+------+-----------+-------------------------------+----------------------------------+
| 6EFD | CVTLH | КОП rc.rx,dst.wy | Преобразование двойного |
| | | | слова в слово формата H |
+------+-----------+-------------------------------+----------------------------------+
| 46 | DIVF2 | КОП divr.rx,quo.mx | Деление двухоперандное |
| | | | в формате F |
+------+-----------+-------------------------------+----------------------------------+
| 66 | DIVD2 | -"- | Деление двухоперандное |
| | | | в формате D |
+------+-----------+-------------------------------+----------------------------------+
| 46FD | DIVG2 | -"- | Деление двухоперандное |
| | | | в формате G |
+------+-----------+-------------------------------+----------------------------------+
| 66FD | DIVH2 | -"- | Деление двухоперандное |
| | | | в формате H |
+------+-----------+-------------------------------+----------------------------------+
| 47 | DIVF3 | КОП divr.rx,divd.rx, | Деление трехоперандное |
| | | quo.wx | в формате F |
+------+-----------+-------------------------------+----------------------------------+
| 67 | DIVD3 | -"- | Деление трехоперандное |
| | | | в формате D |
+------+-----------+-------------------------------+----------------------------------+
| 47FD | DIVG3 | -"- | Деление трехоперандное |
| | | | в формате G |
+------+-----------+-------------------------------+----------------------------------+
| 67FD | DIVH3 | -"- | Деление трехоперандное |
| | | | в формате H |
+------+-----------+-------------------------------+----------------------------------+
| 54 | EMODF | КОП mulr.rx,mulrx.rb, | Расширенное умножение |
| | | muld.rx,int.wl,fract.wx | в формате F с выделе- |
| | | | нием целой части |
+------+-----------+-------------------------------+----------------------------------+
| 74 | EMODD | -"- | Расширенное умножение |
| | | | в формате D с вы- |
| | | | делением целой части |
+------+-----------+-------------------------------+----------------------------------+
| 54FD | EMODG | КОП mulr.rx,mulrx.rw, | Расширенное умножение |
| | | muld.rx,int.wl,fract.wx | в формате G с выделе- |
| | | | нием целой части |
+------+-----------+-------------------------------+----------------------------------+
| 74FD | EMODH | -"- | Расширенное умножение |
| | | | в формате H с выделе- |
| | | | нием целой части |
+------+-----------+-------------------------------+----------------------------------+
| 52 | MNEGF | КОП src.rx,dst.wx | Пересылка с арифметическим |
| | | | отрицанием в формате F |
+------+-----------+-------------------------------+----------------------------------+
| 72 | MNEGD | -"- | Пересылка с арифметическим |
| | | | отрицанием в формате D |
+------+-----------+-------------------------------+----------------------------------+
| 52FD | MNEGG | -"- | Пересылка с арифметическим |
| | | | отрицанием в формате G |
+------+-----------+-------------------------------+----------------------------------+
| 72FD | MNEGH | -"- | Пересылка с арифметическим |
| | | | отрицанием в формате H |
+------+-----------+-------------------------------+----------------------------------+
| 50 | MOVF | -"- | Пересылка слов формата F |
+------+-----------+-------------------------------+----------------------------------+
| 70 | MOVD | -"- | Пересылка слов формата D |
+------+-----------+-------------------------------+----------------------------------+
| 50FD | MOVG | -"- | Пересылка слов формата G |
+------+-----------+-------------------------------+----------------------------------+
| 70FD | MOVH | -"- | Пересылка слов формата H |
+------+-----------+-------------------------------+----------------------------------+
| 44 | MULF2 | КОП mulr.rx, | Умножение двухоперандное |
| | | prod.mx | в формате F |
+------+-----------+-------------------------------+----------------------------------+
| 64 | MULD2 | -"- | Умножение двухоперандное |
| | | | в формате D |
+------+-----------+-------------------------------+----------------------------------+
| 44FD | MULG2 | -"- | Умножение двухоперандное |
| | | | в формате G |
+------+-----------+-------------------------------+----------------------------------+
| 64FD | MULH2 | -"- | Умножение двухоперандное |
| | | | в формате H |
+------+-----------+-------------------------------+----------------------------------+
| 45 | MULF3 | КОП mulr.rx, | Умножение трехоперандное |
| | | muld.rx,prod.wx | в формате F |
+------+-----------+-------------------------------+----------------------------------+
| 65 | MULD3 | -"- | Умножение трехоперандное |
| | | | в формате D |
+------+-----------+-------------------------------+----------------------------------+
| 45FD | MULG3 | -"- | Умножение трехоперандное |
| | | | в формате G |
+------+-----------+-------------------------------+----------------------------------+
| 65FD | MULH3 | -"- | Умножение трехоперандное |
| | | | в формате H |
+------+-----------+-------------------------------+----------------------------------+
| 55 | POLYF | КОП arg.rf,degree.rw, | Вычисление значения поли- |
| | | tbladdr.ab,{R0-3.wl} | нома в формате F |
+------+-----------+-------------------------------+----------------------------------+
| 75 | POLYD | КОП arg.rd,degree.rw, | Вычисление значения поли- |
| | | tbladdr.ab,{R0-5.wl} | нома в формате D |
+------+-----------+-------------------------------+----------------------------------+
| 55FD | POLYG | КОП arg.rg,degree.rw, | Вычисление значения поли- |
| | | tbladdr.db,{R0-5.wl} | нома в формате G |
+------+-----------+-------------------------------+----------------------------------+
| 75FD | POLYH | КОП adg.rh,degree.rw, | Вычисление значения поли- |
| | | tbladdr.ab, | нома в формате H |
| | | {R0-5.wl,-16(SP):-1(SP).wb} | |
+------+-----------+-------------------------------+----------------------------------+
| 42 | SUBF2 | КОП sub.rx,dif.mx | Вычитание двухоперандное |
| | | | в формате F |
+------+-----------+-------------------------------+----------------------------------+
| 62 | SUBD2 | -"- | Вычитание двухоперандное |
| | | | в формате D |
+------+-----------+-------------------------------+----------------------------------+
| 42FD | SUBG2 | -"- | Вычитание двухоперандное |
| | | | в формате G |
+------+-----------+-------------------------------+----------------------------------+
| 62FD | SUBH2 | -"- | Вычитание двухоперандное |
| | | | в формате H |
+------+-----------+-------------------------------+----------------------------------+
| 43 | SUBF3 | КОП sub.rx,min.rx,dif.wx | Вычитание трехоперандное |
| | | | в формате F |
+------+-----------+-------------------------------+----------------------------------+
| 63 | SUBD3 | -"- | Вычитание трехоперандное |
| | | | в формате D |
+------+-----------+-------------------------------+----------------------------------+
| 43FD | SUBG3 | -"- | Вычитание трехоперандное |
| | | | в формате G |
+------+-----------+-------------------------------+----------------------------------+
| 63FD | SUBH3 | -"- | Вычитание трехоперандное |
| | | | в формате H |
+------+-----------+-------------------------------+----------------------------------+
| 53 | TSTF | КОП src.rx | Тестирование в формате F |
+------+-----------+-------------------------------+----------------------------------+
| 73 | TSTD | -"- | Тестирование в формате D |
+------+-----------+-------------------------------+----------------------------------+
| 53FD | TSTG | -"- | Тестирование в формате G |
+------+-----------+-------------------------------+----------------------------------+