МПС
МП В1801ВМ1, его структура
и система команд (Реферат)
Структура микропроцессора В1801ВМ1
Однокристальный 16-разрядный микропроцессор К1801ВМ1 предназначен для выполнения
следующих функций: 1) вычисление адресов операндов и команд; 2) обмен информацией с другими устройствами;
подключенными к системной магистрали; 3) обработка операндов; 4) обработка прерываний от клавиатуры и
устройств пользователя, подключенных к разъему порта ввода-вывода. Процессор является единственным
активным устройством микроЭВМ, управляющим циклами обращения к системной
магистрали и обрабатывающим прерывания от
пассивных устройств, которые могут посылать или принимать информацию только под
управлением процессора. Микропроцессор К1801ВМ1
работает в БК с тактовой частотой 3 МГц и содержит следующие основные
функциональные блоки : 1) 16-разрядный
операционный блок, служащий для формирования адресов
команд и операндов, выполнения логических и
арифметических операций, хранения операндов и
результатов; 2) блок микропрограммного управления, вырабатывающий
последовательность микрокоманд, Соответствующую коду
принятой машинной
команды. Этот блок построен на базе программируемой логической матрицы (ПЛМ) содержащей 250 логических произведений; 3) блок прерываний, организующий приоритетную систему
прерываний (прием и предварительная
обработка внешних и внутренних запросов на прерывание); 4) интерфейсный блок, обеспечивающий
обмен информацией между микропроцессором ром и прочими устройствами, подключенными к системной
магистрали. Этот же, блок осуществляет арбитраж при операциях прямого доступа к
памяти, формирует 5) последовательность. управляющих сигналов: 6) блок системной магистрали, связывающий внутреннюю магистраль
однокристального микропроцессора с внешней,
управляющий усилителями приема и передачи информации
на совмещенные выводы адресов и данных; 7) схема тактирования, обеспечивающая синхронизацию
работы внутренних блоков микропроцессора. Система команд,
реализованная в ПЛМ блока микропрограммного управления микропроцессора К1801BM1, совпадает с системой
команд наиболее распространенных отечественных мини- и
микро-ЭВМ типа «Электроника 60» (ДВК-2. 3, 4 и т.п.) и практически аналогична принятой
для компьютеров серии DEC.
Предусмотрен также ряд специальных команд, предназначенных для работы с
системным ПЗУ К1801РЕ1. Сигналы AD0-AD15 представляют собой адреса и данные, передаваемые по
совмещенной системной магистрали. Передача адресов и данных по одним и тем же
линиям связи обеспечивается путем разделения этих операций во времени. Группа сигналов SYNC, DIN, DOUT, WTBT, RPLY служит
для управления передачей информации по системной магистрали: 1) SYNC-
вырабатывается процессором как указание, что адрес находится на выводах
системной магистрали, и сохраняет активный уровень до окончания текущего цикла
обмена информацией; 2) RPLY- вырабатывается пассивным устройством в ответ на сигналы DIN и DOUT. При
отсутствии сигнала RPLAY (т. е. когда выбранное устройство- регистр или ячейка
памяти - не отвечает) процессор
отсчитывает 64 такта синхрогенератора и затем идет прерывание по зависанию
(вектор 4); 3) DIN- предназначен для
организации ввода данных (когда микропроцессор во время действия сигнала SYNC готов
принять данные от пассивного устройства) и ввода адреса вектора прерывания (DIN вырабатывается
совместно с сигналом IAK0 при пассивном уровне SYNC); 4) DOUT- означает, что данные,
выдаваемые микропроцессором, установлены на выводах системной магистрали; 5) WTBT-
указывает на работу с
отдельными байтами и вырабатывается при
обращении по нечетному адресу (операнд -
старший байт) или при отработке байтовых команд. Сигнал
VIRQ является запросом на прерывание
от внешнего устройства, информирующим микропроцессор
о готовности устройства передавать адрес вектора прерывания. Если прерывание
разрешено, то в ответ на этот сигнал процессор вырабатывает сигналы DIN и IAK0. Сигналы IRQ2 и IRQ3 вызывают
прерывания по фиксированным векторам 1008
и 2708 соответственно (при
переходе из высокого уровня в низкий) . Сигнал предоставления прерывания IAK0
процессор вырабатывает в ответ на внешний сигнал VIRQ. Сигнал IAK0 передается по очереди, начиная с устройства с
максимальным приоритетом, ретранслируясь от одного устройства к другому в
порядке уменьшения приоритетов. Устройство с наибольшим приоритетом из числа
выставивших запрос на прерывание (сигнал VIRQ) запрещает дальнейшее распространение сигнала IAK0, таким образом
запрещая на время обработки данного прерывания запросы от устройств с тем же
или более низким приоритетом. Однако устройства с более высоким приоритетом могут
прервать обработку повторным («вложенным») прерыванием. Сигнал DMR вырабатывается внешним активным
устройством, требующим передачи ему системной магистрали (режим прямого доступа
к памяти). В ответ па него процессор устанавливает сигнал DMGO, предоставляющий системную
магистраль внешнему устройству с наивысшим приоритетом из числа запросивших
прямой доступ (механизм реализации приоритетов -
тот же, что и для прерываний). Это устройство прекращает дальнейшее распространение
сигнала DMGO и выставляет сигнал SACK, означающий, что устройство прямого доступа к памяти (ПДП) может производить обмен данными, независимо от
процессора используя стандартные циклы обращения к системной магистрали. Низкий уровень сигнала BSY означает, что микропроцессор начинает обмен по магистрали
(т.е. что она занята для других устройств).
Переход сигнала из низкого уровня в высокий указывает
на окончание обмена. Сигнал аварии
источника питания DCLO вызывает установку микропроцессора в исходное
состояние и появление сигнала INIT. Сигнал аварии сетевого питания ACLO вызывает
переход микропроцессора
на обработку прерывания по сбою питании (высокий
уровень свидетельствует о нормальном сетевом напряжении). Сигнал SEL1 инициализирует обращение к регистру управления
системными внешними устройствами, а сигнал SEL2 - к регистру порта ввода-вывода. Направление обмена
данными между микропроцессором и регистрами определяется сигналами DIN или DOUT
соответственно. Выставление сигнала RPLY от этих регистров не требуется. Длительности сигналов
SEL1 и SEL2 совпадают с длительностью сигнала BSY. Сигнал INIT является ответом микропроцессора на сигнал DCLO и используется,
как правило, для установки периферийной части системы в исходное состояние. Общие характеристики микропроцессора К1801ВМ1
Система
команд микропроцессора К1801ВМ1 Данный процессор содержит 8 регистров
общего назначения (РОН, обозначение в описании команд RN, N=0..7)один
внутренний регистр состояния процессора PSW в котором задействовано 5 битов, каждый из которых
имеет свои имена: ·
C-бит
переполнения ·
T-бит
трассировки ·
V-бит
арифметического переполнения ·
Z-бит равенства
0 ·
N-бит
отрицательного числа Два
регистра из РОН (R6 и R7) отвечают за следующие функции: ·
R6 (SP)-Указатель
стека ·
R7 (PC)-Счетчик
команд. При
описании команд, используются следующие обозначения: ·
«SS» - поле
адресации операнда-источника ·
«DD» - поле
адресации операнда-приемника ·
«XXX»- смещение
(-128,...,+128; 8 бит) ·
«N» - число, 3
бита ·
«NN» - число, 6 бит ·
«(N)» -содержимое ячейки или регистра N ·
«s» - операнд
-источник ·
«d» - операнд
-приемник ·
«r» - содержимое
регистра ·
«<=» - становится
равным ·
«X» -
относительный адрес
·
«%» - определение регистра ·
«/\» - логическое И ·
«\/» - логическое ИЛИ ·
«\\» - исключающее ИЛИ ·
«|» - НЕ Операции над разрядами PSW ·
«*» - установка/сброс
по результату ·
«-» - состояние
разряда не меняется ·
«0» - сброс ·
«1» - установка Методы адресации
Метод мнемоника 0. регистровая R 1. косвенная регистровая ( R) или @R 2. автоинкрементная ( R)+ 3. косв. автоинкрементная @( R)+ 4. автодекрементная -( R) 5. косв. автодекрементная @-( R) 6. индексная X( R) 7. косв. индексная @X( R) Команды
работы с программами 000000 HALT останов 000001 WAIT пауза -
ожидания прерывания 000002 RTI возврат
из прерывания ( PC <=(SP)+) 000003 BPT отладочное
прерывание (-(SP) <=PSW <=(16)) 000004 IOT вызов
системы ввода вывода ( -(SP) <=PC <= (22)) 000005 RESET сброс магистрали
и процессора 000006 RTT возврат,
с запретом прерывания по Т-разряду до исполнения следующей команды ( PC<=(SP)+ PSW<=(SP)+) 0001DD JMP безусловный переход ( PC <= d) 00020R RTS возврат из подпрограммы ( PC <= R <=(SP)+ 000240 NOP нет
операции 004RDD JSR вызов подпрограммы (-(SP) <= R <= PC <= d) 0064NN MARK восстановление стека ( -(SP)<=PC +(2 x NN) PC<=R5 <=(SP)+ 077RNN SOB выч. 1 и ветвл., если (R#) не 0 ( R# <= R#-1 PC<=PC=( 2xNN)) 104000-104277 EMT вызов
подпрограммы ПЗУ (-(SP)<= PSW <= (32) -(SP)<= PC <= (30)) 1064SS MTPS запись PSW ( PSW <= s) 1064Dd MFPS чтение PSW ( d <= PSW) Переходы по
условию (ветвления)
Если условие выполняется,
то (PC) <= (PC) + (2 x NN) 000400 + XXX BR безусловный
переход 001000 + XXX BNE нет
равенства ( нулю) Z=0 001400 + XXX BEQ равенство
( нулю) Z=1 102000 + XXX BVC арифм.переп. отсутствует V=0 102400 + XXX BVS произошло
арифм.переп. V=1 103000 + XXX BCC перенос
отсутствует C=0 103400 + XXX BCS произошел
перенос С=1 Переход по
знаку 100000 + XXX BPL знак
плюс N=0 100400 + XXX BMI знак
минус N=1 002000 + XXX BGE больше
или равно (нулю) N\\V=0 002400 + XXX BLT меньше
(нуля) N\\V=1 003000 + XXX BGT больше
(нуля) Z\/(N\\V)=0 003400 + XXX BLE меньше
или равно(нулю) Z\/(N\\V)=1 Переход без
знака 101000 + XXX BHI больше C\/Z=0 101400 + XXX BLOS меньше или
равно C\/Z=1 103000 + XXX BHIS больше
или равно C=0 103400 + XXX BLO меньше C=1 Однооператорные команды
Условные обозначения: «*»=0 операции над словами 1 операции над байтами N Z C V 0003DD SWAB перестановка
байтов * * 0 0 *050DD CLR(B) очистка (d) <=0 0
1 0 0 *051DD COM(B) побитная
инверсия (d) <= (|d) * * 0 0 *052DD INC(B) прибавление
1 (d) <=(d)+1 * * *- *053DD DEC(B) вычитание
1
(d) <=(d)+1 *
* *- *054DD NEG(B) изменение
знака (d) <=-(d) *
* * * *055DD ADC(B) прибавить
перенос (d)<=(d)+C * *
* * *056DD SBC(B) вычесть
перенос (d)<=(d)-C * *
* * *057DD TST(B) проверка (d)<=(d) * * 0 0 *060DD ROR(B) циклич. сдвиг вправо
=> C,d * *
* * *061DD ROL(B) циклич. сдвиг влево C,d <= * *
* * *062DD ASR(B) арифм. сдвиг вправо (d)<=(d)/2 *
* * * *063DD ASL(B) арифм. сдвиг влево
(d)<=(d)*2 *
* * * *067DD SXT расширить знак N=0 (d)<=0 0
1 0- N=1 (d)<=177777 1 0 0- Двухоператорные команды
N S V C *1SSDD MOV(B) переслать (d)<=(s) *
* 0- *2SSDD CMP(B) сравнить (s)-(d) *
* * * *3SSDD BIT(B) проверить
разряды (s)/\(d)
* * 0 - *4SSDD BIC(B) очистить
разряды (d)<=(|s)/\(d) * * 0 - *5SSDD BIS(B) установить
разряды (d)<=(s)\/(d) *
* 0 - 06SSDD ADD сложить (d)<=(s)+(d) * *
* * 074RSS XOR исключающее или (s)<= (r)\\(s) * * 0
- 16SSDD SUB вычесть (d)<=(d)-(s) * *
* * Операции с разрядами PSW
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||