Требования к знаниям и умениям учащихся
ЦИФРОВЫЕ И МИКРОПРОЦЕССОРНЫЕ УСТРОЙСТВА
Лабораторный практикум
для учащихся специальностей
2-45 01 33 – Сети телекоммуникаций
2-45 01 32 – Системы радиосвязи, радиовещания и телевидения
В 4 частях
Часть 4
Минск
УДК 81.332
ББК 32.97
Ц75
Рекомендовано к изданию
кафедрой инфокоммуникационных технологий
07.04 2014 г., протокол № 10
Составители:
В. И. Богородов, преподаватель высшей категории кафедры инфокоммуникационных технологий;
Н. М. Новикова, преподаватель первой категории кафедры инфокоммуникационных технологий
Рецензент
Е. В. Новиков, профессор кафедры инфокоммуникационных технологий, канд. техн. наук
Ц75 | Цифровые и микропроцессорные устройства : лабораторный практикум для учащихся специальностей 2-45 01 33 – Сети телекоммуникаций, 2-45 01 32 – Системы радиосвязи, радиовещания и телевидения. В 4 ч. Ч.4 / сост. В. И. Богородов, Н. М. Новикова. – Минск : ВГКС, 2014. – 104 с. ISBN Приводятся методические указания к лабораторным работам № 12…20 по микропроцессорной технике, в которых рассматриваются основы программирования простых восьмиразрядных микропроцессоров с применением симулятора Sim8085 и 16-разрядных микроконтроллеров dsPIC33F в интегрированной среде MPLAB IDE. Предназначено для учащихся и преподавателей колледжа. УДК 81.332 ББК 32.97 |
© Учреждение образования
«Высший государственный
колледж связи», 2014
ВВЕДЕНИЕ
В четвертой части лабораторного практикума приводятся методические указания к лабораторным работам № 12…20 по микропроцессорной технике. Рассматривается методика составления программ на языке Ассемблер для простых восьмиразрядных микропроцессоров (МП) их выполнения на симуляторе МП Sim8085, а также методика составления приложений на языках Ассемблер и С для программирования микроконтроллеров dsPIC33F и их выполнения в интегрированной среде MPLAB IDE (версия 8.89) на учебном стенде НТЦ-31.000.
В работе по подготовке лабораторного практикума принимала участие преподаватель первой категории кафедры ИКТ Новикова Н. М., которая составила методические указания к лабораторным работам № 19, 20.
ЛАБОРАТОРНАЯ РАБОТА № 12
СОСТАВЛЕНИЕ ЛИНЕЙНЫХ И ЦИКЛИЧЕСКИХ ПРОГРАММ НА ЯЗЫКЕ АССЕМБЛЕР
Цель работы
1 Изучить приемы программирования последовательных и циклических вычислительных процессов в микропроцессорных системах (МПС), построенных на МП Intel 8085A.
2 Приобрести практические навыки составления линейных и циклических программ на языке Ассемблер для МП Intel 8085A.
Подготовка к выполнению работы
1 Повторить по [1] систему команд МП Intel 8085A, форматы данных и команд, способы адресации.
2 Изучить по [1] примеры составления линейной программы инвертирования содержимого ячейки памяти и циклической программы суммирования однобайтных двоичных чисел на языке Ассемблер.
3 Изучить пример составления линейной программы, рассмотренный в методических указаниях к данной лабораторной работе.
4 Подготовить ответы на вопросы для самоконтроля.
5 Подготовить заготовку отчета (см. содержание отчета).
Вопросы для самоконтроля
1 Поясните, как формируется адрес следующей команды в линейных программах?
2 Поясните, как формируется адрес следующей команды в циклических программах при выполнении команд условных переходов на примере команды JNZ 201A h, если условие перехода выполняется либо не выполняется?
3 Поясните, что понимают под способом адресации? Укажите, какие способы адресации используются в МП Intel 8085A и поясните их сущность?
4 Укажите выполняемую операцию, способы адресации, формат, число циклов и тактов, машинный код, а также действия МП в каждом машинном цикле для следующих команд:
а) MOV C,D; | б) ANA M; | в) SUB 10 h; |
г) MVI A, 10 h; | д) JZ 2010 h; | е) CALL 201B h; |
ж) CALL 2025 h; | з) RET; | и) CNC 201F h; |
и) LXI B, 2100 h. |
Порядок выполнения работы
1 Проверка подготовки учащихся к занятию по вопросам для самоконтроля в виде фронтального или программированного опроса.
2 Выполнить индивидуальное задание № 12.1 Составить схему алгоритма и программу линейного вычислительного процесса на языке Ассемблер для МП Intel 8085A, которая реализует последовательности арифметических или логических операций согласно варианту, заданному в таблице 12.1 (номер варианта выбирается в зависимости от номера учащегося в списке подгруппы учебного журнала группы, т. е. от номера рабочего места).
Таблица 12.1 – Исходные данные к индивидуальному заданию № 12.1
№ варианта | Последовательность операций | Значения операндов (P = 16) | ||||||
(A) | (B) | (C) | (D) | (E) | (M1) | (M2) | ||
M2 = 2((C) + (D)) – (M1) | – | – | 1A | – | – | |||
M1 = (B̅) ˅ (A) ˄ (M2) | – | – | – | – | F0 | |||
M2 = ((M1) – (A)) : 2 + 15 h | – | – | – | – | – | |||
M1 = (C̅) ˅ (M2)) ˄ (A) | 2D | – | E1 | – | – | – | ||
M2 = (D) – 2 (M1) + 10 h | – | – | – | – | – | |||
M1 = (E̅) ⊕ (A) ( ) | – | – | – | 1F | – | |||
M2 = ((C) – (A)) : 4 – (M1) | – | 2D | – | – | – | |||
M1 = (D̅) ˄ ((A) ⊕ (M2)) | 1E | – | – | – | – | A0 | ||
M2 = 4((D) – (M1)) + (A) | – | – | 0A | – | – |
Окончание таблицы 12.1
M1 = ((B) ⊕ (D̅)) ˄ ( ) | – | – | – | – | 2F | |||
M2 = (A) + ((M1) – (D)) : 2 | – | – | – | 1A | – | |||
M1 = (B) ˄ (A) ⊕ ( ) | – | – | – | – | FE | |||
M2 = 2((M1) – (B)) + (A) | 1E | 1A | – | – | – | 2B | – | |
M1 = (C̅) ⊕ (M2) ˄ (A) | – | – | – | – | ||||
15* | M2 = ((B) ⊕ ( )) ˄ (A) + 02 h | 2C | – | – | – | 0F | – | |
Примечания 1 M1 – ячейка памяти по адресу 2020 h. 2 M2 – ячейка памяти по адресу 2021 h. 3 Начальный адрес программы 2000 h. 4 Для варианта №15* приведен пример в методических указаниях. |
2.1 Составить алгоритм решения задачи. При этом следует помнить, что в МП Intel 8085A арифметическое умножение и деление на 2 выполняется с помощью команд сдвига влево через перенос RAL и вправо через перенос RAR соответственно.
2.2 Составить программу на языке Ассемблер в виде таблицы (таблица 12.2).
Таблица 12.2 – Линейная программа на языке Ассемблер к индивидуальному заданию № 12.1
Адрес | Метка | Команда | Операнд | Машинный код | Комментарий |
2.3 Определить ожидаемый результат вычисления. Для этого при выполнении арифметических операций следует подставить в заданное уравнение значения переменных в десятичной системе счисления и выполнить указанные арифметические операции в десятичной системе счисления. Порядок расчета и ожидаемый результат записать в отчет в десятичной и шестнадцатеричной системах счисления.
Логические операции следует выполнять в двоичной системе счисления поразрядно, при этом следует помнить, что логические операции обладают приоритетом. Порядок расчета и ожидаемый результат записать в отчет в двоичной и шестнадцатеричной системах счисления (см. пример в методических указаниях к данной лабораторной работе).
3 Выполнить индивидуальное задание № 12.2 Составить программу циклического вычислительного процесса на языке Ассемблер для МП Intel 8085A по заданному алгоритму, которая реализует умножение двух восьмиразрядных двоичных чисел без учета знака (кодовое умножение) согласно варианту, заданному в таблице 12.3. Начальный адрес программы 2000 h.
Таблица 12.3 – Исходные данные к индивидуальному заданию № 12.2
Номер варианта | Значения операндов (P = 16) | Номер варианта | Значения операндов (P = 16) | ||
(DE) | (A) | (DE) | (A) | ||
00A3 | B2 | 00C3 | 5B | ||
00B4 | C3 | 00B3 | |||
00D5 | 00D2 | A3 | |||
00E6 | 00B1 | ||||
00F1 | DA | 00C1 | |||
00D4 | 00D1 | ||||
00B2 | 00E1 |
Пусть множимое хранится в паре регистров DE, где оно занимает младший регистр E, старший регистр D пары регистров установлен в нуль. Множитель хранится в аккумуляторе A. 16-разрядное произведение будем формировать в паре регистров HL. Счетчик числа повторений цикла организуем на регистре B.
Процесс умножения организуем следующим образом. Будем анализировать разряды множителя, начиная с его старшего разряда. Поэтому частичные произведения будут формироваться, начиная со старшего частичного произведения. Накопление суммы частичных произведений будем производить в паре регистров HL, т.е. к содержимому предварительно сброшенной в нуль пары регистров HL вначале прибавим восьмое частичное произведение. Затем, сдвинув на один разряд влево содержимое пары регистров HL, прибавим седьмое частичное произведение и так далее, пока не будут просуммированы все частичные произведения.
Таким образом, процесс умножения носит циклический характер. Цикл, содержащий операции сдвига влево содержимого пары регистров HL, формирования и прибавления к содержимому пары регистров HL очередного частичного произведения, должен быть повторен восемь раз. Алгоритм решения задачи представлен на рисунке 12.1.
Блок 1(рисунок 12.1) производит загрузку множимого в пару регистров DE и множителя в регистр A. Блок 2 производит загрузку нулевого значения в пару регистров HL. Блок 3 устанавливает в регистре B (счетчике циклов) начальное значение 8. Блок 4 производит сдвиг на один разряд влево содержимого пары регистров HL (команды DAD HL). Эта операция выполняется путем удвоения содержимого пары регистров: HL (HL) + (HL). Блок 5 предназначен для анализа очередного разряда множителя. Для этого содержимое аккумулятора сдвигается влево, в результате чего очередной разряд множителя пересылается в триггер TC регистра признаков. Блок 6 производит разветвление (условный переход) по содержимому триггера перехода TC. При (TC) = 1 в блоке 7 выполняется операция суммирования множимого к сумме предыдущих частичных произведений в паре регистров HL (команда DAD DE). При (TC) = 0 операция суммирования не выполняется, по команде условного перехода JNC M1 осуществляется переход к команде блока 8. Блок 8 производит вычитание единицы из содержимого регистра B, после чего блок 9 выполняет условный переход по содержимому триггера нуля TZ регистра признаков. Если (TZ) = 0 (содержимое регистра B не равно нулю), то команда условного перехода JNZ M2 производит переход к команде блока 4, вызывая очередное повторение выполнения тела цикла. Если (TZ) = 1 (содержимое регистра B равно нулю), то происходит выход из цикла и переход к очередной команде.
3.1Составить циклическую программу умножения восьмиразрядных двоичных чисел на языке Ассемблер в форме таблицы 12.2.
3.2 Определить время выполнения операции умножения для тактовой частоты равной 4 МГц. Для этого определить количество тактов, требуемое для однократного прохождения цикла алгоритма и полученный результат умножить на восемь. Суммарное число тактов умножить на длительность тактового периода (0,25 мкс).
4 Ответить на контрольные вопросы.
5 Оформить отчет и сдать зачет.
Содержание отчета
Отчет должен содержать:
1 Наименование и цель лабораторной работы.
2 Выполненные индивидуальные задания № 12.1, 12.2 (условия, алгоритмы и программы).
3 Расчет ожидаемого результата выполнения линейной программы.
4 Расчет времени выполнения операции умножения двух восьмиразрядных двоичных чисел.
5 Ответы на контрольные вопросы.
Контрольные вопросы
1 Поясните, как проверить переполнение разрядной сетки при выполнении операции суммирования в МП Intel 8085A?
2 Поясните, как умножить на два в МП Intel 8085A?
3 Поясните, как выполнить суммирование двух 16-разрядных двоичных чисел в МП Intel 8085A? Укажите необходимую команду и ее особенности.
Рисунок 12.1 – Схема алгоритма кодового умножения восьмиразрядных двоичных чисел
Требования к знаниям и умениям учащихся
В результате выполнения лабораторной работы учащийся должен знать:
– систему команд МП Intel 8085A (К1821BM85A);
– приемы составления линейных и циклических программ.
Должен уметь:
– составлять линейные и циклические программы для простых восьмиразрядных МП на языке Ассемблер;
– расшифровывать команды МП Intel 8085A;
– определять время выполнения программы.
Методические указания
Рассмотрим пример составления алгоритма, программы на языке Ассемблер и расчета ожидаемого результата для варианта № 15* индивидуального задания № 12.1 (таблица 12.1).
1 Составим алгоритм решения задачи (рисунок 12.2).
A ← (A) ⊕ (B) |
A ← (A) ˄ (C) |
С ← (A) |
A ← (M) |
A ← ( ) |
A ← (A) + 02 h |
M ← (A) |
Начало |
Останов |
Ввод исх. данных |
Рисунок 12.2 – Схема алгоритма решения задачи к варианту № 15* индивидуального задания № 12.1
2 Составим программу решения задачи на языке Ассемблер
(таблица 12.4).
Таблица 12. 4 – Пример линейной программы на языке Ассемблер к варианту № 15* индивидуального задания № 12.1
Адрес | Метка | Команда | Операнд | Машинный код | Комментарий |
MVI | A, 51 h | 3E 51 | ; A ← 51 h | ||
MVI | D, 2C h | 06 2C | ; B ← 2C h | ||
LXI | HL, 2020 h | 21 20 20 | ; HL ← 2020 h | ||
MVI | M, 0Fh | 36 0F | ; M ← 0F h | ||
200А | MOV | C, A | 4F | ; C ← (A) | |
200B | MOV | A, M | 7E | ; A ← (M) | |
200C | CMA | 2F | ; A ← ( ) | ||
200D | XRA | B | A8 | ; A ← (A) ⊕ (B) | |
200E | ANA | C | A1 | ; A ← (A) ˄ (C) | |
200F | ADI | 02 h | C6 02 | ; A ← (A) + 02 h | |
STA | 2021 h | 32 21 20 | ; М ← (A) | ||
HLT | ; Останов | ||||
Примечание –При загрузке исходных данных в ячейку памяти (ЯП) рекомендуется использовать косвенную адресацию, а при загрузке результата решения задачи – прямую. |
3 Вычислим ожидаемый результат операции. Для удобства введем следующие обозначения: ( ) ⊕ (B) = X1; X1 ˄ (A) = X2.
(M1) = 0F(16) = 0000 1111(2)
(B) = 2C(16) = 0010 1100(2) | |
X1 = DC(16) = 1101 1100(2) ˄ (A) = 51(16) = 0101 0001(2) | |
02(16) = 0000 0010(2) | |
(M2) = 52(16) = 0101 0010(2) |
ЛАБОРАТОРНАЯ РАБОТА № 13
ОБУЧЕНИЕ РАБОТЕ НА СИМУЛЯТОРЕ МИКРОПРОЦЕССОРА Sim8085 Microprocessor Simulator
Цель работы
1 Изучить принципы работы симулятора МП Sim8085 Microprocessor Simulator.
2 Приобрести практические навыки ввода, отладки и выполнения линейных и циклических программ на языке Ассемблер на симуляторе Sim8085 Microprocessor Simulator.