МИНИСТЕРСТВО СВЯЗИ И ИНФОРМАТИЗАЦИИ РЕСПУБЛИКИ БЕЛАРУСЬ
Учреждение образования «ВЫСШИЙ ГОСУДАРСТВЕННЫЙ КОЛЛЕДЖ СВЯЗИ»
Кафедра инфокоммуникационных технологий
ЦИФРОВЫЕ И МИКРОПРОЦЕССОРНЫЕ УСТРОЙСТВА
Лабораторный практикум для учащихся специальностей
2-45 01 33 – Сети телекоммуникаций 2-45 01 32 – Системы радиосвязи, радиовещания и телевидения
В 4 частях
Часть 4
Минск
2014
УДК 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 Поясните, как формируется адрес следующей команды в циклических программах при выполнении команд условных переходов на примере
3
команды 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) |
|
1 |
|
2 |
|
3 |
|
4 |
5 |
6 |
7 |
8 |
9 |
|
|
|
|
|
|
|
|
|
|
|
|
1 |
M2 |
= 2((C) + (D)) – (M1) |
– |
|
– |
05 |
1A |
– |
10 |
– |
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
M1 |
̅ |
|
03 |
|
05 |
– |
– |
– |
– |
F0 |
= (В) ˅ (A) ˄ (M2) |
|
||||||||||
3 |
M2 |
= ((M1) – (A)) : 2 + 15 h |
15 |
|
– |
– |
– |
– |
25 |
– |
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
M1 |
̅ |
|
2D |
|
– |
E1 |
– |
– |
– |
32 |
= ((С) ˅ (M2)) ˄ (A) |
|
||||||||||
5 |
M2 |
= (D) – 2 (M1) + 10 h |
– |
|
– |
– |
30 |
– |
08 |
– |
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
M1 |
̅ |
̅̅̅̅ |
35 |
|
– |
– |
– |
1F |
– |
30 |
= (Е) (A) |
(М2) |
|
|||||||||
7 |
M2 |
= ((C) – (A)) : 4 – (M1) |
05 |
|
– |
2D |
– |
– |
05 |
– |
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
M1 |
̅ |
|
1E |
|
– |
– |
32 |
– |
– |
A0 |
= (D) ˄ ((A) (M2)) |
|
||||||||||
9 |
M2 |
= 4((D) – (M1)) + (A) |
10 |
|
– |
– |
0A |
– |
05 |
– |
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
|
|
Окончание таблицы 12.1
1 |
|
2 |
|
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
M1 |
̅ |
̅̅̅̅ |
– |
25 |
– |
11 |
– |
– |
2F |
= ((B) (D)) ˄ (М2) |
||||||||||
11 |
M2 |
= (A) + ((M1) – (D)) : 2 |
03 |
– |
– |
11 |
– |
1A |
– |
|
12 |
M1 |
= (B) ˄ (A) |
̅̅̅̅ |
05 |
07 |
– |
– |
– |
– |
FE |
(М2) |
||||||||||
13 |
M2 |
= 2((M1) – (B)) + (A) |
1E |
1A |
– |
– |
– |
2B |
– |
|
14 |
M1 |
̅ |
|
05 |
– |
01 |
– |
– |
– |
04 |
= (С) (M2) ˄ (A) |
||||||||||
15* |
M2 |
̅̅̅̅ |
|
51 |
2C |
– |
– |
– |
0F |
– |
= ((B) (М1)) ˄ (A) + 02 h |
||||||||||
Примечания
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
Адрес |
Метка |
Команда |
Операнд |
Машинный код |
Комментарий |
1 |
2 |
3 |
4 |
5 |
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.3 Определить ожидаемый результат вычисления. Для этого при выполнении арифметических операций следует подставить в заданное уравнение значения переменных в десятичной системе счисления и выполнить указанные арифметические операции в десятичной системе счисления. Порядок расчета и ожидаемый результат записать в отчет в десятичной и шестнадцатеричной системах счисления.
Логические операции следует выполнять в двоичной системе счисления поразрядно, при этом следует помнить, что логические операции обладают приоритетом. Порядок расчета и ожидаемый результат записать в отчет в двоичной и шестнадцатеричной системах счисления (см. пример в методических указаниях к данной лабораторной работе).
3 Выполнить индивидуальное задание № 12.2 Составить программу циклического вычислительного процесса на языке Ассемблер для МП
5
Intel 8085A по заданному алгоритму, которая реализует умножение двух восьмиразрядных двоичных чисел без учета знака (кодовое умножение) согласно варианту, заданному в таблице 12.3. Начальный адрес программы
2000 h.
Таблица 12.3 – Исходные данные к индивидуальному заданию № 12.2
Номер |
Значения операндов |
Номер |
Значения операндов |
||||
(P = 16) |
|
|
(P = 16) |
||||
варианта |
|
варианта |
|
||||
(DE) |
|
(A) |
(DE) |
|
(A) |
||
|
|
|
|
||||
1 |
00A3 |
|
B2 |
8 |
00C3 |
|
5B |
2 |
00B4 |
|
C3 |
9 |
00B3 |
|
74 |
3 |
00D5 |
|
24 |
10 |
00D2 |
|
A3 |
4 |
00E6 |
|
35 |
11 |
00B1 |
|
57 |
5 |
00F1 |
|
DA |
12 |
00C1 |
|
61 |
6 |
00D4 |
|
35 |
13 |
00D1 |
|
73 |
7 |
00B2 |
|
47 |
14 |
00E1 |
|
83 |
Пусть множимое хранится в паре регистров 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 |
предназначен для анализа |
очередного разряда |
|||
6 |
|
|
|
|
|
множителя. Для этого содержимое аккумулятора сдвигается влево, в результате чего очередной разряд множителя пересылается в триггер 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? Укажите необходимую команду и ее особенности.
7
|
|
|
|
|
|
|
|
Начало |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
Ввод |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
сомножителей |
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
HL |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
B |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
HL Сдв. Л (HL) |
M2 |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
A Сдв. Л (A) |
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
6 |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
(TC) |
|
||||
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
1 |
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
HL (HL) + (DE) |
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
B |
(B) - 1 |
M1 |
|||||
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
9 |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
(TZ) |
|
||||
|
|
|
|
|
|
|
|
|
|
|
||||
1
Останов
Рисунок 12.1 – Схема алгоритма кодового умножения восьмиразрядных двоичных чисел
8
Требования к знаниям и умениям учащихся
В результате выполнения лабораторной работы учащийся должен знать:
–систему команд МП Intel 8085A (К1821BM85A);
–приемы составления линейных и циклических программ. Должен уметь:
–составлять линейные и циклические программы для простых восьмиразрядных МП на языке Ассемблер;
–расшифровывать команды МП Intel 8085A;
–определять время выполнения программы.
Методические указания
Рассмотрим пример составления алгоритма, программы на языке Ассемблер и расчета ожидаемого результата для варианта № 15* индивидуального задания № 12.1 (таблица 12.1).
1 Составим алгоритм решения задачи (рисунок 12.2).
Начало
Ввод исх. данных
С ← (A)
A ← (M)
A ← ( A )
A ← (A) (B)
A ← (A) ˄ (C)
A ← (A) + 02 h
M ← (A)
Останов
Рисунок 12.2 – Схема алгоритма решения задачи к варианту № 15* индивидуального задания № 12.1
2 Составим программу решения задачи на языке Ассемблер (таблица 12.4).
9
Таблица 12. 4 – Пример линейной программы на языке Ассемблер к варианту № 15* индивидуального задания № 12.1
Адрес |
Метка |
Команда |
Операнд |
Машинный |
Комментарий |
||||
|
код |
|
|||||||
|
|
|
|
|
|
|
|
|
|
2000 |
|
MVI |
A, 51 h |
3E |
51 |
|
; A ← 51 h |
||
2002 |
|
MVI |
B, 2C h |
06 |
2C |
|
; B ← 2C h |
||
2004 |
|
LXI |
HL, 2020 h |
21 |
20 |
20 |
; HL ← 2020 h |
||
2007 |
|
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 ← ( 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 |
||
2011 |
|
STA |
2021 h |
32 |
21 |
20 |
; М ← (A) |
||
2014 |
|
HLT |
|
76 |
|
|
; Останов |
||
Примечание – При загрузке исходных данных в ячейку памяти (ЯП) рекомендуется использовать косвенную адресацию, а при загрузке результата решения задачи – прямую.
3 Вычислим ожидаемый результат операции. Для удобства введем
|
|
|
|
|
|
|
|||
следующие обозначения: ( M1 ) (B) = X1; X1 ˄ (A) = X2. |
|
||||||||
|
|
|
(M1) = 0F(16) = 0 0 0 0 1 1 1 1 ( 2 ) |
||||||
|
|
|
|
|
|
||||
|
|
|
( M1 ) = F0(16) = 1 1 1 1 0 0 0 0 (2) |
||||||
|
(B) = 2C(16) = 0 0 1 0 |
1 1 0 0 |
(2) |
||||||
|
|
˄ |
|
X1 = DC(16) = 1 1 0 1 |
1 1 0 0 |
(2) |
|||
|
|
|
(A) = 51(16) |
= 0 1 0 1 0 0 0 1 (2) |
|||||
|
|
|
|
||||||
|
|
|
|
|
|
|
|
||
+ |
|
X2 = 50(16) |
= 0 1 0 1 |
0 0 0 0 |
(2) |
||||
02(16) |
= 0 0 0 0 0 0 1 0 (2) |
||||||||
|
|
|
|||||||
|
|
|
|
|
|
||||
|
|
|
(M2) = 52(16) |
= 0 1 0 1 |
0 0 1 0 (2) |
||||
10
