Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratorny_praktikum_chast_4_A5_dorabotanny.docx
Скачиваний:
122
Добавлен:
13.02.2016
Размер:
4.75 Mб
Скачать

Вопросы для самоконтроля

  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)

1

2

3

4

5

6

7

8

9

1

M2 = 2((C) + (D)) – (M1)

05

1A

10

2

M1 = (B̅) ˅ (A) ˄ (M2)

03

05

F0

3

M2 = ((M1) – (A)) : 2 + 15 h

15

25

4

M1 = (C̅) ˅ (M2)) ˄ (A)

2D

E1

32

5

M2 = (D) – 2 (M1) + 10 h

30

08

6

M1 = (E̅) ⊕ (A) ()

35

1F

30

7

M2 = ((C) – (A)) : 4 – (M1)

05

2D

05

8

M1 = (D̅) ˄ ((A) ⊕ (M2))

1E

32

A0

9

M2 = 4((D) – (M1)) + (A)

10

0A

05

Окончание таблицы 12.1

1

2

3

4

5

6

7

8

9

10

M1 = ((B) ⊕ (D̅)) ˄ ()

25

11

2F

11

M2 = (A) + ((M1) – (D)) : 2

03

11

1A

12

M1 = (B) ˄ (A) ⊕ ()

05

07

FE

13

M2 = 2((M1) – (B)) + (A)

1E

1A

2B

14

M1 = (C̅) ⊕ (M2) ˄ (A)

05

01

04

15*

M2 = ((B) ⊕ ()) ˄ (A) +02 h

51

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

Адрес

Метка

Команда

Операнд

Машинный код

Комментарий

1

2

3

4

5

6

2.3 Определить ожидаемый результат вычисления. Для этого при выполнении арифметических операций следует подставить в заданное уравнение значения переменных в десятичной системе счисления и выполнить указанные арифметические операции в десятичной системе счисления. Порядок расчета и ожидаемый результат записать в отчет в десятичной и шестнадцатеричной системах счисления.

Логические операции следует выполнять в двоичной системе счисления поразрядно, при этом следует помнить, что логические операции обладают приоритетом. Порядок расчета и ожидаемый результат записать в отчет в двоичной и шестнадцатеричной системах счисления (см. пример в методических указаниях к данной лабораторной работе).

3 Выполнить индивидуальное задание № 12.2 Составить программу циклического вычислительного процесса на языке Ассемблер для МП 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 предназначен для анализа очередного разряда множителя. Для этого содержимое аккумулятора сдвигается влево, в результате чего очередной разряд множителя пересылается в триггер 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 Оформить отчет и сдать зачет.