Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

цимпу / Практика / content / Пособия / Лаб. практикум, часть IV, лаб. работы № 12...20 (ЦиМПУ)_ДФО

.pdf
Скачиваний:
144
Добавлен:
13.02.2016
Размер:
3.83 Mб
Скачать

МИНИСТЕРСТВО СВЯЗИ И ИНФОРМАТИЗАЦИИ РЕСПУБЛИКИ БЕЛАРУСЬ

Учреждение образования «ВЫСШИЙ ГОСУДАРСТВЕННЫЙ КОЛЛЕДЖ СВЯЗИ»

Кафедра инфокоммуникационных технологий

ЦИФРОВЫЕ И МИКРОПРОЦЕССОРНЫЕ УСТРОЙСТВА

Лабораторный практикум для учащихся специальностей

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