
- •Лекция 1. Основы цифровой техники.
- •Лекция 2. Синтез кцу
- •Лекция 3. Шифраторы. Дешифраторы.
- •Синтез и анализ работы шифраторов на микросхемах логических элементов.
- •1 Элемент 5и-не.
- •Контрольные вопросы:
- •Лекция 4-5. Преобразователи кодов. Мультиплексоры и демультиплексоры.
- •Контрольные вопросы:
- •Лекция 6. Сумматоры. Цифровые компараторы. Арифметическо-логические устройства (алу).
- •Лекция 7-8. Раздел 3. Последовательностные цифровые устройства. Интегральные триггеры.
- •§ 4.3. Структура и особенности работы
- •Лекция 10-11. Счетчики.
- •Лекция 12. Запоминающие устройства.
- •Лекция 13-14. Системы управления.
- •Лекция 15. Общие сведения о микропроцессорах (мп) и микропроцессорных системах (мпс).
- •§ 5.4. Структура и назначение основных узлов микропроцессора серии кр580.
- •Форматы команд.
- •Система команд.
- •Способы адресации.
- •Разработка линейных программ.
- •5. Число "а" из озу
- •7. Вычитание без переноса
- •Микроконтроллеры.
- •1. Структура и назначение основных узлов микропроцессора серии кр580.
- •Практическая работа №1 «Анализ работы логических элементов»
- •Практическая работа №2 «Синтез и анализ работы кцу в базисе и,или,не»
- •Практическая работа № 4 «Синтез и анализ работы шифратора»
- •Практическая работа № 5 «Синтез и анализ работы дешифратора»
- •Практическая работа № 6-7 «Синтез и анализ работы преобразователя кодов»
- •Практическая работа № 10-11 «Синтез счетчика с параллельным переносом»
- •Практическая работа № 12-13 «Построение зу заданной емкости и разрядности»
- •Практическая работа № 14-15 «Синтез и анализ работы уу со схемной логикой»
- •Приложение 1. Справочный материал по микросхемам
- •Сумматор, компаратор, схема контроля ч етности, алу и схема ускоренного переноса.
- •И нтегральные триггеры.
- •Регистры и регистровые файлы.
- •Счетчики.
- •10. Запоминающие устройства.
Форматы команд.
В микропроцессоре серии КР580 используются команды, имеющие одно-, двух- или трехбайтовый формат (размер).
Команды, имеющие однобайтовый формат (например, команда 10010110), представляют собой однобайтовое (8-разрядное) кодовое слово В1, содержащее все необходимые для исполнения команды указания:
откуда требуется взять операнды;
какую конкретно операцию выполнить;
куда поместить результат выполненной операции.
Команды, имеющие 2-байтовый формат, содержат два байта (два 8-разрядных кодовых слова), причем дополнительный второй байт В2 может использоваться:
для непосредственного указания численного значения одного из операндов;
для указания адреса порта ввода-вывода информации при обращении к ПУ; так как адрес порта для рассматриваемого микропроцессора 1-байтовый (8-разрядный), то количество адресуемых портов здесь равно 28 = 256.
Команды, имеющие 3-байтовый формат, содержат три байта (три 8-разрядных кодовых слова), причем два дополнительных байта (второй В2 и третий В3) могут использоваться:
для непосредственного указания численного значения одного из 16-разрядных операндов при выполнении некоторых операций;
для непосредственного указания численного значения 16-разрядного адреса ячейки памяти при обращении к ОЗУ.
Система команд.
Микропроцессор КР580ВМ80А содержит 78 команд, условно разбитых на 8 разделов (см. табл. 5.4). Каждый раздел содержит несколько типов операций, которые характеризуются определенной структурой кода команды В1 (колонка 1 табл. 5.4), где:
К1… К6 – трехразрядный код конкретного типа операции. Например, в 4-м разделе (арифметические и логические операции) арифметическому сложению без учета внешнего переноса присвоен код К2 = 000, логическому сложению – код К2 = 110 и т.д.
Ri, Rj – трехразрядный код регистра, участвующего в данной операции (табл. 5.5):
Табл. 5.5
Регистр |
Код |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
M |
110 |
А |
111 |
Важное п р и м е ч а н и е ! М – ячейка оперативной памяти, адрес которой хранится в паре регистров HL.
В колонке 2 указан формат (количество байтов) каждой команды.
В колонке 3 для краткой записи выполняемой операции используется система обозначений элементов микропроцессора в соответствии с § 5.4, а также система скобок:
Круглые – для обозначения кодов, хранящихся в соответствующих регистрах или парах регистров. Например: (А) – 8-разрядный код, который хранится в регистре А, (DE) – 16-разрядный код, который хранится в паре регистров DE.
Угловые – для непосредственного указания численных значений (операндов или адресов) во втором <В2> или втором и третьем <B3В2> дополнительных байтах команды.
Квадратные – при обращении к оперативной памяти, причем в этих скобках указывается адрес нужной ячейки ОЗУ. Например: [(BC)] – код, хранящийся в ячейке ОЗУ, адрес которой указан в паре регистров ВС; [<B3B2>] – код, хранящийся в ячейке ОЗУ, адрес которой непосредственно указан во втором и третьем дополнительных байтах команды.
Стрелками указано направление передачи информации при выполнении указанной операции.
Составление программ для микропроцессора может производиться в следующих формах:
На машинном языке (на языке кодовых слов), который непосредственно воспринимается микропроцессором в виде совокупности сигналов логического 0 и логической 1. В этом случае программа, целиком записанная двоичными кодами, получается очень громоздкой (что приводит к увеличению вероятности появления ошибок и к большим затратам времени на ее составление), трудно читаемой и корректируемой. Но зато она получается наиболее быстродействующей!
Для упрощения и ускорения ввода программ и данных, записанных на машинном языке, а также для облегчения чтения получаемых результатов вместо двоичного кода часто используется шестнадцатиричный код. Перевод информации (команд программ, данных и результатов) из двоичного кода в шестнадцатиричный производится очень просто: каждые четыре знака двоичного кода заменяются одном знаком шестнадцатиричного кода в соответствии с табл. 3.1, например:
0100 1100 (2) = 4С(16).
4 С
Так же просто выполняется обратный перевод, когда один знак шестнадцатиричного кода заменяется соответствующими четырьмя знаками двоичного кода.
Трудности программирования, чтения и корректировки уменьшаются при использовании языка Ассемблер, в котором вместо кодовых слов используется символическая (мнемоническая) запись любой команды (колонка 4 табл. 5.4) сокращенными английскими словами (например: команда MOV произошла от сокращенного слова move – двигать, передвигать, перемещать). Но использование этого языка требует применения в МП специальной программы транслятора, которая переводит команды языка Ассемблер на понятный микропроцессору машинный язык.
Язык Макроассемблер. Здесь можно присваивать символ (мнемонику) целой последовательности команд, что, естественно, существенно сокращает запись программ, улучшает их читаемость и возможность корректировки.
Следует иметь в виду, что машинный язык, языки Ассемблер и Макроассемблер строго индивидуальны для каждого типа микропроцессора!
Указанный последним недостаток устраняется при использовании языков программирования высокого уровня (Бейсик, Паскаль, ФОРТРАН и прочие), позволяющих вести программирование независимо от типа используемого микропроцессора. Трансляция программы, написанной на языке высокого уровня, на машинный язык осуществляется с помощью специальных программ – компилятора или интерпретатора. Компилятор переводит на машинный язык сразу всю программу, записанную на языке высокого уровня. Интерпретатор же транслирует на машинный язык команды языка высокого уровня последовательно, в процессе их исполнения, что существенно снижает быстродействие микропроцессора; поэтому большинство языков высокого уровня ориентированы на использование компиляторов.
Кроме этого, с помощью языков высокого уровня можно создать программу, обладающую значительно большей компактностью по сравнению с аналогичными программами на машинном языке, языках Ассемблер или Макроассемблер, так как одна команда языка высокого уровня может объединить 5-10 команд машинного языка.
В то же время транслированная (компилированная) на машинный язык программа языка высокого уровня значительно длиннее и медленнее аналогичной программы, составленной непосредственно на машинном языке. Однако, несмотря на указанный недостаток, языки программирования высокого уровня в настоящее время являются наиболее распространенными при создании программного обеспечения МПС.
Исключением являются программы управления средствами связи и операционные системы компьютеров, где быстродействие является одним из определяющих параметров. Именно по указанной причине целью данной темы является выработка у учащихся достаточно твердых навыков основ составления простейших программ на машинном языке и на языке Ассемблер, поэтому дальнейшее изложение материала будет вестись только в рамках поставленной задачи.
Многие команды языков Ассемблер и Макроассемблер, а также языков высокого уровня состоят из двух частей: основной (символическая запись команды) и дополнительной (здесь указываются участвующие в операции регистры, операнды, адреса ячеек оперативной памяти и портов ввода-вывода информации). При этом нужно учесть, что непосредственно задаваемые численные значения (операнды или адреса) могут быть в принципе указаны в любой системе счисления, но при этом в конце двоичного кода следует ставить букву В, в конце шестнадцатиричного кода – букву Н, а в конце десятичного числа буква либо вообще не ставится, либо указывается буква D.
Также следует иметь в виду, что для облегчения и ускорения ввода программ на машинном языке, а также для упрощения их чтения и корректировки практически повсеместно используется шестнадцатиричный код команд вместо двоичного.
В колонках 4 и 5 табл. 5.4 указано формирование флагов и их запись в наиболее широко применяемых триггерах ТС и ТZ регистра флагов:
" + " – при выполнении данной операции соответствующий флаг формируется и записывается в нужный триггер регистра флагов;
" - " – при выполнении этой операции соответствующий флаг не формируется, и содержимое данного триггера регистра флагов не меняется;
" 0 " или " 1 " – при выполнении указанной операции в соответствующий триггер регистра флагов заносится 0 или 1.
Табл. 5.4
Структура кода команды |
Байты |
Выполняемая операция |
Мнемоника |
ТС |
TZ |
|
|
I. Команды пересылки
|
|
|
|
|
1 |
1. Регистр –
регистр:
|
|
- |
- |
Продолжение табл. 5.4
Структура кода команды |
Байты |
Выполняемая операция |
Мнемоника |
ТС |
TZ |
|
|
|
2. Обмен информацией с ОЗУ |
|
|
|
|
|
Операции |
|||||
|
1 |
000 |
|
|
- |
- |
|
1 |
010 |
|
|
- |
- |
1 |
001 |
|
|
- |
- |
|
1 |
011 |
|
|
- |
- |
|
3 |
110 |
|
|
- |
- |
|
3 |
111 |
|
|
- |
- |
|
3 |
100 |
|
|
- |
- |
|
3 |
101 |
|
|
- |
- |
|
|
1 |
|
|
- |
- |
|
|
1 |
|
|
- |
- |
|
|
1 |
|
XCH |
- |
- |
|
|
1 |
|
XTH |
- |
- |
|
|
1 |
|
SPHL |
- |
- |
|
|
1 |
|
PCHL |
- |
- |
|
|
|
II. Команды непосредственной Загрузки
|
|
|
|
|
|
2 |
регистра:
|
|
- |
- |
|
|
3 |
2. Непосредственная
загрузка пары регистров:
|
|
- |
- |
Продолжение табл. 5.4
Структура кода команды |
Байты |
Выполняемая операция |
Мнемоника |
ТС |
TZ |
|
|
|
III. Команды приращения |
|
|
|
|
|
1 |
регистра:
|
|
- |
+ |
|
|
1 |
регистра:
|
|
- |
+ |
|
|
1 |
пары регистров:
при
|
|
- |
- |
|
|
1 |
пары регистров:
при
:
|
|
- |
- |
|
|
|
IV. Арифметические и логические операции |
|
|
|
|
|
||||||
|
1 |
|
Операции |
|||
|
|
000 |
|
|
+ |
+ |
001 |
|
|
+ |
+ |
||
010 |
|
|
+ |
+ |
||
011 |
|
|
+ |
+ |
||
100 |
|
|
0 |
+ |
||
101 |
|
|
0 |
+ |
||
110 |
|
|
0 |
+ |
||
111 |
Сравнение:
|
|
+ |
+ |
||
|
|
|
|
|||
|
2 |
|
Операции |
|||
|
|
000 |
|
|
+ |
+ |
001 |
|
|
+ |
+ |
||
010 |
|
|
+ |
+ |
||
011 |
|
|
+ |
+ |
||
100 |
|
|
0 |
+ |
||
101 |
|
|
0 |
+ |
||
110 |
|
|
0 |
+ |
||
111 |
Сравнение:
|
|
+ |
+ |
Продолжение табл. 5.4
Структура кода команды |
Байты |
Выполняемая операция |
Мнемоника |
ТС |
TZ |
|
|
1 |
|
SMA |
- |
- |
|
|
1 |
регистров:
при
:
|
|
+ |
- |
|
|
|
V. Операции циклического сдвига
|
|
|
|
|
|
1 |
|
Операции |
|||
|
|
000 |
СЦЛ без переноса:
|
RLC |
+ |
- |
001 |
СЦП без переноса:
|
RRC |
+ |
- |
||
010 |
СЦЛ с переносом: ;
|
RAL |
+ |
- |
||
011 |
СЦП с переносом: ;
|
RAR |
+ |
- |
||
|
|
VI. Операции переходов
|
|
|
|
|
11000011 |
3 |
к выполнению команды |
|
- |
- |
|
|
3 |
к выполнению команды |
|
|
|
|
|
|
|
Условия |
|||
000 |
при TZ = 0 |
|
- |
- |
||
001 |
при TZ = 1 |
|
- |
- |
||
010 |
при ТС = 0 |
|
- |
- |
||
011 |
при ТС = 1 |
|
- |
- |
||
|
3 |
безусловный |
|
- |
- |
Продолжение табл. 5.4
Структура кода команды |
Байты |
Выполняемая операция |
Мнемоника |
ТС |
TZ |
||
|
3 |
|
|
|
|
||
|
|
|
Условия |
|
|
|
|
|
|
000 |
при TZ = 0 |
|
- |
- |
|
|
|
001 |
при TZ = 1 |
|
- |
- |
|
|
|
010 |
при ТС = 0 |
|
- |
- |
|
|
|
011 |
при ТС = 1 |
|
- |
- |
|
|
1 |
безусловный |
|
- |
- |
||
|
1 |
условный |
|
|
|
||
|
|
|
Условия |
||||
000 |
при TZ = 0 |
|
- |
- |
|||
001 |
при TZ = 1 |
|
- |
- |
|||
010 |
при ТС = 0 |
|
- |
- |
|||
011 |
при ТС = 1 |
|
- |
- |
|||
|
|
VII. Операции ввода и вывода
|
|
|
|
||
|
2 |
|
|
- |
- |
||
|
2 |
|
|
- |
- |
||
|
|
VIII. Прочие операции
|
|
|
|
||
|
1 |
|
|
- |
- |
||
|
1 |
|
|
1 |
- |
||
|
1 |
|
|
+ |
- |
||
|
1 |
|
|
- |
- |
||
|
1 |
|
|
- |
- |
||
|
1 |
представление аккумулятора |
|
+ |
+ |
||
|
1 |
|
|
- |
- |
||
|
1 |
|
|
- |
- |