Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка для лаб Арх_комп(Схемтех).doc
Скачиваний:
6
Добавлен:
08.05.2019
Размер:
1.76 Mб
Скачать

Порядок виконання лабораторної роботи

  1.  Включити живлення мікролабораторії. Натиснути кнопку «Сброс».

  2.  Встановити початкову адресу ПЗП (див. табл. 2.2).

  3.  Виконати вказаний фрагмент програми в покроковому режимі, здійснюючи контроль вмісту внутрішніх регістрів МП після виконання кожної команди. Результати звести в табл. 3.1, що започаткована в лаб. роб. № 2.

  4.  Повторити п. 3 і, якщо при повторному покроковому виконанні програми буде інший вміст регістрів, зафіксувати відхилення і пояснити їх.

  5.  Зробити короткі висновки по роботі.

Зауваження:

  1.  Аналогічно лабораторній роботі № 2 при неочікуваній зміні адреси (перехід до підпрограми, умовні і безумовні переходи) здійснити примусове повернення до адреси наступної команди, встановивши її адресу на ІАР.

  2.  З метою зручності заповнення таблиці для читання регістрів встановлювати адресу 83Е0 (молодший байт регістру РЛ), тобто читати коди в порядку зростання їх адрес, натискаючи кнопку «Ад +».

Контрольні питання

  1.  Схарактеризувати розрядність регістрів МП.

  2.  Описати послідовність обробки потоків командних слів.

  3.  Описати послідовність обробки потоків інформаційних слів.

  4.  Описати типову послідовність виконання команд.

  5.  Як проконтролювати зміни вмісту регістра після виконання чергової команди?

  6.  Як здійснити циклічне виконання фрагмента програми задану кількість разів?

  7. Призначення прапорців.

 

Таблиця 3.1. Дослідження регістрів МП при покроковому режимі виконання програми.

Адреса ПЗП

Вміст

Код

команди

Мнемонічне

позначення

команди

Вміст регістрів:

A

Регістр ознак

B

C

D

E

H

L

SP

PC

хххх

хх

хх хх хх

хххх хх хххх

хх

хх

хх

хх

хх

хх

хх

хх

хххх

хххх

Лабораторна робота № 4 Тема: вивчення команд пересилання даних.

Мета: вивчити групу команд пересилання даних і скласти прості програми з їх використовуванням.

Коротка інформація

Всі команди МП КР580ИК80А поділяються на п’ять груп:

команди пересилання даних – здійснюють пересилання даних між регістрами або між пам’яттю і регістрами;

команди арифметичні – призначені для виконання складання, віднімання, збільшення або зменшення вмісту регістрів або вічок пам’яті;

команди логічні – виконують логічні операції «І», «АБО», «Виключаюче АБО», порівняння, зсув і доповнення даних в регістрах і вічках пам’яті;

команди переходів (умовних і безумовних), звертанню до підпрограм і повернення із підпрограм;

команди введення / виведення, керування і роботи із стеком — призначені для виконання операцій введення/виведення, роботи із стеком, керування прапорцями, дозвіл і заборону переривань.

Вивчення будь-якої з груп команд не можна здійснити без залучення команд інших груп. Тому в цій і наступних лабораторних роботах крім команд групи, що вивчається, з мінімальними поясненнями будуть використовуватись окремі команди будь-якої з груп, необхідні для ілюстрації прикладів.

В цій лабораторній роботі розглянуті команди групи пересилання даних. На рис. 4.1 показані мнемонічні позначення (оператори) і коди цієї групи команд.

Прийняті такі умовні позначення:

A, B, C, D, E, H, L – імена регістрів загального призначення МП;

M (memory) – вічко пам’яті, до якого здійснюється звертання і адреса якого міститься в регістровій парі HL ;

# – безпосередньо однобайтний операнд, є другим байтом команди;

## – безпосередньо двобайтний операнд, є другим і третім байтом команди;

** – безпосередньо двобайтна адреса.

1. Пересилання

Мнемоніка

Код

Мнемоніка

Код

Мнемоніка

Код

Мнемоніка

Код

MOV

MOV

A,A

A,B

A,C

A,D

A,E

A,H

A,L

A,M

E,A

E,B

E,C

E,D

E,E

E,H

E,L

E,M

7F

78

79

7A

7B

7C

7D

7E

5F

5B

59

5A

5B

5C

5D

5E

MOV

MOV

B,A

B,B

B,C

B,D

B,E

B,H

B,L

B,M

H,A

H,B

H,C

H,D

H,E

H,H

H,L

H,M

47

40

41

42

43

44

45

46

67

60

61

62

63

64

65

66

MOV

MOV

C,A

C,B

C,C

C,D

C,E

C,H

C,L

C,M

L,A

L,B

L,C

L,D

L,E

L,H

L,L

L,M

4F

48

49

4A

4B

4C

4D

4E

6F

68

69

6A

6B

6C

6D

6E

MOV

MOV

D,A

D,B

D,C

D,D

D,E

D,H

D,L

D,M

M,A

M,B

M,C

M,D

M,E

M,H

M,L

57

50

51

52

53

54

55

56

77

70

71

72

73

74

75

XCHG

EB

2. Безпосереднє пересилання

3. Безпосереднє завантаження

4. Завантаження / зберігання

Мнемоника

Код

Мнемоніка

Код

Мнемоніка

Код

MVI

A,#

3E

LXI

B, ##

01

LDAX

B

0A

B,#

06

D, ##

11

LDAX

D

1A

C,#

0E

H, ##

21

LHLD

**

2A

D,#

16

SP, ##

31

LDA

**

3A

E,#

1E

STAX

B

02

H,#

26

STAX

D

12

L,#

2E

SHLD

**

22

M,#

36

STA

**

32

Рис. 4.1. Команди пересилання даних.

Для роботи з командами пересилання даних необхідно мати їх опис.

Для команди виду MOV r1, r2 здійснюється пересилання (копіювання) байта даних з регістра r2 в регістр r1. Для виконання такої команди треба виконати один машинний цикл, причому такти Т1, Т2, Т3 займає вибірка команди, а в такті Т4 здійснюється виконання команди.

Команди MOV r, M виконуються за два машинних цикли, які складаються з сімох тактів, забезпечуючи пересилання (копіювання) вмісту вічка пам’яті за адресою, що є вмістом регістрів HL, в регістр r.

Команди MOV M, r виконуються аналогічно, але пересилання (копіювання) виконується в зворотному напрямку.

Команди безпосереднього пересилання даних виду MVI r, # забезпечують пересилання другого байта команди у вказаний регістр r. Виконуються за два цикли (сім тактів).

Команди MVI M, # здійснюють пересилання байта за адресою, яка є вмістом пари регістрів H, L за три машинних цикли, що складає 10 тактів.

Для безпосереднього завантаження пар регістрів використовують команди LXI rp, ##. Тут rp — регістрова пара з пар регістрів B і C, D і E, H і L. Другий байт команди завантажується в rh (старший з пари регістр), третій — в rl (молодший з пари регістр). Команди виконуються за три цикли, що складає 10 тактів.

Далі учбові програми будемо записувати операторами Асемблера. В загальному вигляді вони записуються так:

LABEL : MOV C,A ; rem , де:

LABEL – символьна мітка, адреса передачі керування, складається з букв і цифр (може бути відсутня);

[:] – символ відділення мітки від оператора;

[,] – символ розподілу параметрів команди;

[;] – символ відділення оператора від коментару, якщо коментар присутній;

rem – коментар (може бути відсутнім).

Окремі елементи в операторі можуть бути відсутніми, наприклад, один або обидва параметри, мітка, коментар. Такий запис уніфікує програму, полегшує її запис, аналіз і розуміння.

Розглянемо програму, складену з команд пересилання. При складанні програми буде використана одна з команд, що відноситься до групи арифметичних команд — INX H, яка забезпечує збільшення на одиницю вмісту пари регістрів H, L. В програмі (рис. 4.2) забезпечується завантаження регістрів і запис їх вмісту в пам’ять.

LXI

H, 8020

;

завантаження пари регістрів H, L

MVI

B,77

;

завантаження регістра B байтом 77

MOV

A,B

;

пересилання вмісту B в A

MOV

M,B

;

запис вмісту B в пам’ять за адресою HL

INX

H

;

збільшення вмісту H, L на одиницю

MOV

M,A

;

запис в пам’ять за адресою HL

SHLD

8030

;

запис вмісту HL в пам’ять

Рис. 4.2. Учбова програма з використанням команд пересилання.

Використовуючи рис. 4.1, здійснимо кодування програми і перенесемо її на мал. 4.3. Тут же зафіксуємо вміст регістрів (див. рис 3.2), значення яких змінюється при виконанні програми. Перевіривши правильність запису програми, виконаємо її в покроковому режимі. Після кожного кроку заповнимо відповідні графи таблиці (рис. 4.3) вмістом регістрів A, B, H, L. Після повного виконання програми перевіримо вміст вічок пам’яті, в які записувались результати, і перенесемо їх в таблицю (рис. 4.4).

Адреса

Код

Мнемонічне

Регістр

команди

позначення команди

A

B

H

L

8000

21

20

80

LXI

H,8020

-

-

80

20

8003

06

77

MVI

B,77

-

77

80

20

8005

78

MOV

A,B

77

77

80

20

8006

70

MOV

M,B

77

77

80

20

8007

23

INX

H

77

77

80

21

8008

77

MOV

M,A

77

77

80

21

8009

22

30

80

SHLD

8030

77

77

80

21

Рис. 4.3. Учбова програма в кодах МП КР580ВМ80А.

Адреса

Вміст

8020

77

8021

77

8030

21

8031

80

Рис. 4.4. Вміст пам’яті з результатами роботи учбової програми.

Дії стосовно занесенню програми і її контролю в пам’яті розглянуті в попередніх лабораторних роботах. При покроковому виконанні програми для повернення в точку переривання програми і виконання наступної команди треба натиснути кнопку «Возвр».

Для розглянутої програми доцільно оцінити час її виконання. Цей параметр може виявитись вирішальним для роботи системи керування в реальному часі. Всі відомості про час виконання команди даються в описі кожної окремої команди. Програма складається з семи команд, які будуть виконані за 10 + 7 + 4 + 7 + 5 + 7 + 16 = 56 тактів. Оскільки тривалість такту складає 0,5 мкс, час виконання програми дорівнює 28 мкс.

Для прямого завантаження акумулятора за адресою «**» використовується команда LDA **. Для її виконання необхідно чотири цикли, що складає 13 тактів. Прямий запис вмісту акумулятора за адресою здійснюється командою STA **.

Можливий режим непрямого завантаження (запису) вмісту акумулятора за адресою пари регістрів B, C або D, E командами LDAX rp (STAX rp). Для їх виконання потрібно два цикли, або сім тактів.

Для прямого завантаження пари регістрів H, L використовується команда LHLD **, при виконанні якої вміст вічка пам’яті за адресою [B3 B2] завантажується в регістр L, а для завантаження регістру H використовується байт, зчитаний за адресою [BB+ 1], тобто збільшеній на одиницю. Команда виконується за п’ять циклів, або 16 тактів. Прямий запис вмісту регістрів H, L в пам’ять здійснюється аналогічно при виконанні команди SHLD **.

Обмін вмісту пар регістрів за схемою  D,  E здійснюється командою XCHG за один цикл, або чотири такти.

При роботі з командами пересилання даних вміст регістру прапорців не змінюється і не використовується.

Схемна реалізація пересилання даних вміст регістрів

Н а схемі рис. 4.5 та інших показані лише ті кола, про які безпосередньо йде мова. Якщо, наприклад, говориться, що регістр Рг1 містить код слова, то існують кола, по яких цей код заноситься в регістр, але щоб не захаращувати малюнок, ці кола не показані.

Показані регістри на RS-тригерах і група схем «І1» та «І2». Для прискорення використана парафазна передача інформації з регістра на регістр. При цьому в кожному розряді залучені обидва входи тригера і по ним одночасно подаються сигнали 1 і 0. Код, записаний в регістр Рг1, передається при наявності на шині Пр керуючого сигналу прийому інформації в регістр Рг2.

Передача коду здійснюється через групу схем І1 і І2 (при цьому через схеми І1 передаються прямі, а через    схеми І2 — інверсні значення змінних). На одиничних і нульових входах кожного  тригера регістра Рг2 виникає комбінація 1 і 0 або 0 і 1 вхідних сигналів, що встановлюють тригери цього регістра в потрібний стан незалежно від його початкового стану.