Предназначен для обработки цифровой информации в системах управления техпроцессами в контрольно — измерительной аппаратуре и системах связи, а также решения в составе ЭВМ инженерно — технических и экономических задач. Система команд К1801ВМ1 весьма близка к архитектуре PDP-11 и в большинстве случаев совместима с ней, но не является её точной копией.
В состав микросхемы входят следующие основные функциональные блоки:
16-разрядный операционный блок, выполняющий операции формирования адресов команд и операндов, логические и арифметические, хранения операндов и результатов.
Блок микропрограммного управления, вырабатывающий последовательность микрокоманд на основе кода принятой команды. В нём закодирован полный набор микрокоманд для всех типов команд.
Блок прерываний, организующий приоритетную систему прерываний ОМП. Выполняет приём и предварительную обработку внешних и внутренних запросов на прерывание вычислительного процесса.
Интерфейсный блок, выполняющий обмены информацией между ОМП и устройствами, расположенными на системной магистрали. Осуществляет арбитраж при операциях прямого доступа к памяти. В интерфейсном блоке формируется последовательность управляющих сигналов системной магистрали.
Блок системной магистрали, связывающей внутреннюю магистраль ОМП с внешней. В нём производится управление усилителями приёма и выдачи информации на совмещённые выводы адресов и данных.
Схема тактирования, обеспечивающая синхронизацию внутренних блоков.
Код команды указан восьмеричным числом. Именно такой вид удобен для наглядного восприятия команд данного процессора.
Обозначение команды
Код команды
Команда
HALT
000000
Остановка
WAIT
000001
Ожидание
RTI
000002
Возврат из прерывания
BPT
000003
Командное прерывание для отладки
IOT
000004
Командное прерывание для ввода-вывода
RESET
000005
Сброс внешних устройств
RTT
000006
Возврат из прерывания
JMP
0001DD
Безусловный переход по абсолютному адресу, закодированному в DD. Например последовательность
000137 JMP @#7000
007000
указывает процессору взять адрес из ячейки, следующей за командой перехода, и перейти по указанному адресу (в данном случае это восьмеричный адрес 7000).
Командное прерывание для системных программ. Например, EMT 16 имеет код 104016. Для всех EMT-команд прерывание имеет один и тот же вектор, по адресу которого должна находиться подпрограмма, выделяющая номер (в нашем примере это 16) из команды и находящая по зашитой в ПЗУ таблице адрес подпрограммы, обслуживающей конкретную EMT-команду.
TRAP
104400-104777
Командное прерывание. Например, TRAP 4 имеет код 104404. Для всех TRAP-команд прерывание имеет один и тот же вектор, по адресу которого должна находиться подпрограмма, выделяющая номер (в нашем примере это 4) из команды и находящая по зашитой в ПЗУ таблице адрес подпрограммы, обслуживающей конкретную TRAP-команду.
Никакой принципиальной разницы между EMT и TRAP нет. Принято команду ЕМТ использовать в системных программах (для компьютера БК — это монитор и система диагностики), а команду TRAP — в программах пользователя.
NOP
000240
(10100000) Нет операции
CLC
000241
(10100001) Очистка флага С (carry = перенос)
CLV
000242
(10100010) Очистка флага V (oVerflow = переполнение)
CLZ
000244
(10100100) Очистка флага Z (zero = ноль)
CLN
000250
(10101000) Очистка флага N (negative = отрицательное значение)
CCC
000257
(10101111) Очистка всех разрядов
SEC
000261
(10110001) Установка флага C (carry = перенос)
SEV
000262
(10110010) Установка флага V (oVerflow = переполнение)
SEZ
000264
(10110100) Установка флага Z (zero = ноль)
SEN
000270
(10111000) Установка флага N (negative = отрицательное значение)
SCC
000277
(10111111) Установка всех разрядов
Фактически вышеприведённые команды с кодами от 240 до 277 представляют собой единственную команду изменения флагов в слове состояния процессора, в двоичном виде записываемую как 101PNZVC, где 101xxxxx — код команды, P — состояние, в которое должны быть переведены флаги (0 или 1), и N,Z,V,C — маска, указывающая, какие из флагов должны быть затронуты операцией (1) или проигнорированы (0). Так, команда с кодом 263 (10110011) установит в 1 одновременно флаги C и V. Таким образом, команда с мнемоникой NOP и кодом 240 является частным случаем данной команды и содержит маску флагов, согласно которой ни один из них не должен измениться. Соответственно, к такому же эффекту приводит и команда с кодом 260 (10110000)
SWAB
0003DD
Перестановка местами старшего и младшего байтов в 16-разрядном слове, на которое указывает значение DD.
BR
000400
Безусловный переход по смещению относительно ячейки, следующей за командой. Например, код 000400 означает переход на ячейку, следующую за командой BR, код 000401 — перепрыгнуть через одну 16-разрядную ячейку, 000402 — через две и т. д. Строго говоря, эту команду и все команды перехода по смещению, лучше рассматривать в двоичном или шестнадцатиричном виде. Тогда она будет иметь вид 1NNNNNNNN(bin) или 1NN(hex), где N — значение смещения. То есть команда записывается в старшем байте слова, а смещение — в младшем. Отрицательные значения смещения записываются в дополнительном коде. Это значит, что смещение −1 будет закодировано как FF (hex), и команда будет иметь вид 1FF (hex) или, что то же самое, 777 (oct). При коде 777 будет произведён переход на одну 16-разрядную ячейку назад, то есть на саму команду BR, и произойдёт зацикливание. При коде 776 — на 2 ячейки назад, 775 — на три. и т. д.
BNE
001000
Переход по смещению, если не равно. Код команды — 2NN (hex) — см. описание команды BR. Переход срабатывает, если флаг Z процессора равен 0.
Адрес Команда Текст программы на ассемблере
1000: 020104 CMP R1,R4
1002: 001001 BNE MET
1004: 010102 MOV R1,R2
1006: 010103 MET: MOV R1,R3
Здесь команда сравнения CMP производит сравнение содержимого регистров общего назначения R1 и R4 и устанавливает флаги процессора C, V, Z, N согласно результатам сравнения, а команда BNE осуществляет переход на +1 шестнадцатиразрядное слово вперёд, если флаг Z=0.
CLR(B)
*050DD
Очистка битов слова, на которое указывает DD. Команда 0050DD имеет мнемонику CLR, а 1050DD мнемонику CLRB.
— Старший разряд кода этих команд является признаком байтовой команды. Если он равен 0, то команда производит операции с 16-разрядными словами, находящимися по чётным адресам. Если же этот разряд установлен в 1, то команда работает с байтами, расположенными по произвольному адресу, при этом младший байт 16-разрядного слова имеет чётный адрес, а старший — нечётный.
Методы адресации
Операнд задаётся значениями SS (source — источник) и DD (destination — приёмник), при этом первая цифра задаёт режим адресации, а вторая — номер регистра общего назначения процессора. Например, если SS = 27, то 2 — это метод адресации, а 7 — номер регистра.
Процессор имеет 8 шестнадцатиразрядных регистров: R0, R1, R2…R7. При этом R0-R5 используются для хранения операндов команд. Регистры R6 и R7 имеют дополнительное специальное назначение, но все операции с ними происходят так же, как и с любым другим регистром
Регистр R6 выполняет роль указателя стека (SP, Stack Pointer) и содержит адрес вершины стека. Запись в стек обычно производится с применением автодекрементного способа адресации, а чтение — автоинкрементного. При выполнении ряда операций (обработке аппаратных и программных прерываний, а также вызове подпрограмм и возврате из них) процессор изменяет значение этого регистра определённым образом.
Регистр R7 является счётчиком команд (PC, Program Counter) и содержит адрес следующей команды, которую должен выполнить процессор. Запись числа в R7 равносильна переходу по указанному адресу.
Методы адресации:
Цифра
Метод
Пояснение
Примеры
0
Регистровый
Операндом является содержимое регистра. Например, команда 10304 (1SSDD) копирует содержимое регистра R3 в регистр R4 и записывается как MOV R3, R4.
10102 MOV R1, R2
1
Косвенно-регистровый
Регистр содержит адрес операнда
005011 CLR (R1)
005011 CLR @R1
2
Автоинкрементный
регистр содержит адрес операнда. Содержимое регистра после его использования в качестве адреса увеличивается на 2 (для команд над словами) или на 1 (для байтовых команд)
005022 CLR (R2)+
3
Косвенно-автоинкрементный
регистр содержит адрес адреса операнда. Содержимое регистра после его использования в качестве адреса увеличивается на 2
005032 CLR @(R2)+
4
Автодекрементный
содержимое регистра уменьшается на 2 (для команд над словами) или на 1 (для байтовых команд) и используется как адрес операнда
005042 CLR -(R2)
5
Косвенно-автодекрементный
содержимое регистра уменьшается на 2 и используется как адрес адреса операнда.
005052 CLR @-(R2)
6
Индексный
содержимое регистра складывается с числом, записанным после команды, и полученная сумма используется в качестве адреса операнда
005062 CLR 2(R2) 000002
7
Косвенно-индексный
содержимое регистра складывается с числом, записанным после команды и полученная сумма используется в качестве адреса адреса операнда
005072 CLR @22(R2) 000022
При адресации через регистр РС данные способы адресации называются специальным образом:
Способ адресации
Код
Пояснение
Примеры
непосредственный
27
Операнд хранится в слове, следующем за командой. Фактически это автоинкрементный способ адресации с использованием регистра PC, то есть PC содержит адрес операнда, а это всегда адрес ячейки, следующей за командой. После происходит инкремент регистра на 2, что в случае использования PC равносильно «перепрыгиванию» на следующий адрес, через ячейку с данными, и число, хранящееся в ней, не исполняется как команда.