
- •Лекция 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. Запоминающие устройства.
Разработка линейных программ.
Линейной называется программа, команды которой исполняются в строго определенной заранее последовательности. Хотя реальные программы управления работой аппаратуры существенно сложнее, но и они обязательно содержат линейные участки.
Приемы программирования последовательных процессов проще всего рассмотреть на примере разработки программы обычного вычисления, например:
Число "а" хранится в ячейке ОЗУ с адресом BF29Н.
Число "b" хранится в регистре D.
Число "с" вводится из периферийного устройства (ПУ) через порт ввода 21.
Результат вычисления (значение "Y") нужно записать в ячейку ОЗУ, адрес которой указан в паре регистров HL.
Предварительно определим, в какой последовательности следует выполнять арифметические и логические операции. Здесь следует правильно использовать названия операций, чтобы затем легче было правильно записать соответствующие команды и найти их в списке.
П
р и м е ч а н и е : при наличии вычитания
(или сравнения) в заданном вычислении
[здесь из
вычитается
]
программирование данной операции
следует начинать с вычитаемого [здесь
-
]
во избежание появления в программе
лишних операций.
Вычитание без учета внешнего переноса
.
Логическое отрицание .
Положительное приращение .
Вычитание без учета внешнего переноса
.
Исключающее ИЛИ
.
Разработка алгоритма решения поставленной задачи.
1.
Число "b"
из регистра D пересылается
в регистр А.
При реализации
вычитания
уменьшаемое число "b"
обязательно должно находиться в регистре
А.
2.
Вычитание без переноса
,
результат
записывается в регистр А.
Операция с
непосредственной адресацией, так как
вычитаемое задается числом 14.
3.
Логическое отрицание
, результат
записывается в регистр А.
В данном микропроцессоре эта команда называется "Дополнение аккумулятора").
4.
из регистра А пересылается
в регистр Е.
Освобождаем регистр А для выполнения следующей операции.
пересылается
в регистр А.5. Число "а" из озу
Операция с непосредственной адресацией, так как адрес ячейки задается числом BF29H.
6.
Положительное приращение
,
результат остается в
регистре А.
Результат любой операции приращения остается в том же регистре (или паре регистров).
, результат
записывается в регистр А.7. Вычитание без переноса
Операция с прямой
адресацией, так как оба операнда находятся
в регистрах: уменьшаемое
- в регистре А, вычитаемое
- в регистре Е (см. операцию 4).
8. Число "с"
из ПУ через порт 21 вводится
в регистр А.
Операция с непосредственной адресацией, так как адрес порта задается числом 21.
9.
из регистра А пересылается
в регистр В.
Освобождаем
регистр А для выполнения следующей
операции.
10. Исключающее
ИЛИ,
результат
(уже значение Y)
записывается
в регистр А
вводится
в регистр А.
Операция с прямой
адресацией, так как оба операнда находятся
в регистрах: число "с" – в регистре
А, число
- в регистре В (см. операцию 8).
11.
"Y"
из регистра А
пересылается
в ОЗУ.
Операция с
прямой адресацией, так как адрес ячейки
хранится в паре регистров HL
(напомним: такая ячейка обозначается
М).
Размещение программы в оперативной памяти.
При разработке линейных программ (и вообще последовательных участков любых алгоритмов) команды следует размещать в соседних ячейках ОЗУ с последовательно возрастающими адресами. В этом случае адрес каждой очередной команды формирует автоматически счетчик команд РС, и не требуются специальные команды переходов.
В оперативной памяти учебного микропроцессорного комплекта (УМК) на базе микропроцессора КР580ВМ80А, которым до сих пор пользуются многие учебные заведения, свободная часть начинается с ячейки по адресу 0800Н. Поэтому все наши программы также будем размещать в ячейках ОЗУ, начиная с этого адреса.
Главным на данном этапе является правильное определение формата команд, так как от этого зависит, сколько ячеек они будут занимать.
Номер Адрес П р и м е ч а н и я:
команды команды
1 0800 а) Команда 2 двухбайтовая с непо-
2 0801 средственной адресацией, во втором допол-
0802 нительном байте В2 указывается численное
3 0803 значение вычитаемого – число 14.
4 0804 b) Команда 5 трехбайтовая с непосред-
5 0805 ственной адресацией, во втором В2 и третьем
0806 В3 дополнительных байтах указывается чис-
0807 ленное значения адреса ячейки – BF29H.
6 0808 с) Команда 9 двухбайтовая с непосред-
7 0809 ственной адресацией, во втором дополни-
8 080А тельном байте В2 указывается численное
9 080В значения адреса порта ввода – 21.
080С
10 080D
11 080E
Запись программы (табл. 5.7).
Табл. 5.7
Номер команды |
Адрес Команды |
Машинный язык |
Ассемблер
|
Комментарии |
|
двоичный код |
16-й код |
||||
1 |
0800 |
01 111 010 |
7А |
MOV A,D |
|
2 |
0801 |
11 010 110 |
D6 |
SUI 14 |
|
0802 |
0000 1110 |
0E |
|||
3 |
0803 |
0010 1111 |
2F |
SMA |
|
4 |
0804 |
01 011 111 |
5F |
MOV E,A |
|
5 |
0805 |
00 111 010
|
3A |
LDA BF29H |
|
0806 |
0010 1001
2 9 |
29 |
|||
0807 |
1011 1111
B F |
BF |
|||
6 |
0808 |
00 111 100
|
3C |
INR A |
|
7 |
0809 |
10 010 011 |
93 |
SUB E |
|
8 |
080A |
01 000 111 |
47 |
MOV B,A |
|
9 |
080B |
1101 1011 |
DB |
IN 21 |
Ввод данных |
080C |
0001 0101 |
15 |
|||
10 |
080D |
10 101 000 |
A8 |
XRA B |
|
11 |
080E |
01 110 111 |
77 |
MOV M,A |
|
П р и м е ч а н и я :
Запись команды пересылки, подобной 1-й, 4-й, 8-й и 11-й командам данной программы, подробно описаны в примере 1 предыдущего параграфа.
Пример 3 предыдущего параграфа подробно описывает запись команды, относящейся к группе арифметических и логических операций с непосредственной адресацией и похожей на команду 2 данной программы. Здесь также следует иметь в виду, что число 14 относится к десятичной системе счисления (стоит без буквы) и в этом же виде используется на языке Ассемблер, а в двоичном и шестнадцатиричном коде машинного языка указанное число имеет вид: 14(10) = 00001110(2) = 0Е(16) (недостающие разряды заполняем нулями).
Пример 2 предыдущего параграфа подробно описывает запись команды, относящейся к группе арифметических и логических операций с прямой адресацией и похожей на команды 7 и 10 данной программы.
В команде 9 адрес порта ввода (число 21) на языке Ассемблер записано в десятичной системе счисления, а в двоичном и шестнадцатиричном коде машинного языка указанное число имеет вид: 21(10) = 00010101(2) = 15(16) (недостающие разряды двоичного кода заполняем нулями).