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

Індивідуальні завдання

1. Скласти таблицю контролю вмісту регістрів для практичної реалізації прикладу на рис. 7.4.

2. Скласти алгоритм розгалуженого процесу з використанням команд переходів.

3. Реалізувати алгоритм в командах КР580ВМ80 і закодувати отриману програму.

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

1. Виконати учбову програму (рис. 7.4) і зафіксувати в таблиці стан регістрів A, SP, PC на кожному кроці виконання програми.

2. Записати послідовність адрес виконуваних команд програми.

3. Занести в пам’ять мікро лабораторії індивідуальну програму і. виконавши її в покроковому режимі, зафіксувати в таблиці (див. табл. 3.1) регістри, вміст яких використовується в програмі.

4. Зробити висновки з роботи.

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

1. Пояснити суть команди переходів, звертання та повернення за парністю.

2. Як виконується команда переходу PCHL?

3. Як здійснюється повернення до наступної після PCHL команди ?

4. Як організуються підпрограми з кількома точками входу до них ?

5. Охарактеризувати різницю у виконанні дій команд переходу і звертання до підпрограми.

Лабораторна робота № 8 Тема: вивчення команд введення / виведення, керування і рестарту

Мета: набути навичок роботи з мікро лабораторією при виконанні команд, що вивчаються; ознайомитись з послідовністю дій при обробці переривань.

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

В складі системи команд МП КР580ИК80 є спеціальні команди запису в пам’ять і читання з неї за адресою, що зберігається у вказівнику стеку, введення/виведення, керування і рестарту (рис. 8.1).

4. Переривання

Мнемоніка

Код

RST

0

С7

RST

1

CF

RST

2

D7

RST

3

DF

RST

4

Е7

RST

5

EF

RST

6

F7

RST

7

FF


1. Операції із стеком

Мнемоніки

Код

Мнемоніки

Код

PUSH

В

C5

рор

в

C1

PUSH

D

D5

POP

D

D1

PUSH

H

E5

pop

н

E1

PUSH

PSW

F5

pop

PSW

F1

XTHL

E3

SPHL

F9

2. Введення / виведення

Мнемоніка

Код

OUT #

IN #

D3 DB

3. Керування

DI

F3

ЕІ

FB

NOP

00

HLT

76


Рис. 8.1. Команди введення / виведення, керування і рестарту (переривання)

При виконанні попередніх лабораторних робіт використовувалась одна з команд керування NOP, яка не виконує ніяких дій і може використовуватись для заміни діючих команд при відлагодженні програми або для створення потрібної тимчасової затримки. На виконання команди витрачається чотири такти, що для мікро лабораторії складає 2 мкс.

Команда HLT (зупинка) заносить в РЛ адресу наступної команди. Потім процесор не працює до приходу запиту на переривання. Регістри і прапорці не змінюють свого стану.

Виконання команди IN # і OUT # будуть розглянуті в лабораторній роботі № 9.

Виконання команди PUSH гр (засилання в стек вмісту регістрової пари) забезпечує роботу з парами регістрів ВС, DE, HL, PSW. Під парою регістрів PSW (слово стану програми) мається на увазі акумулятор і регістр прапорців. Організація регістрових пар показана на рис. 8.2.

PSW [16]

A[8]

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

15 8

7 0

В [B,C] [16]

D [D,E] [16]

H [H,L] [16]

PC [16]

SP [16]

Рис. 8.2. Організація регістрових пар.

Вміст старшого регістру пари регістрів гр пересилається у вічко пам’яті, адреса якого на одиницю менша вмісту вказівника стеку SP. Вміст молодшого регістру пари регістрів пересилається у вічко пам’яті, адреса якого на два менша вмісту SP. Вміст SP в результаті виконання команди зменшується на два. Для виконання команди треба три звертання до пам’яті — читання команди, запис вмісту першого і другого регістра пари. Крім того, в кожному циклі виконується декрементування SP, для чого необхідний додатковий такт. В результаті виконання команди потребує 12 тактів. Вміст регістру прапорців при виконанні команди не змінюється.

Команда POP (зчитати з стеку вміст пари регістрів) забезпечує пересилання в молодший регістр пари вмісту вічка пам’яті, адреса якого на одиницю більша вмісту SP. Потім в старший регістр пари пересилається вміст ОЗП за адресою SP, збільшеній на два, в результаті чого формується новий вміст SP, який відрізняється від початкового (до виконання команди) на +2. Час виконання той же, що і для команди PUSH rр. Вміст прапорців для команди POP не змінюється.

Для команд операцій із стеком неприпустимо вказувати як операнд пару регістрів SP.

Для розширення можливостей при роботі із стеком є дві додаткові команди. Команда XTHL здійснює обмін вмісту верхівки стеку і вмісту пари регістрів H,L. Під верхівкою стеку мають на увазі вічко пам’яті, адреса якого визначається SP. Вміст за адресою SP пересилається в регістр Н, а вміст за адресою (SP +1) — в регістр L. В результаті виконується п’ять операцій звертання до пам’яті і додатково інкрементується SP. Команда виконується за п’ять циклів, що складає 16 тактів. Команда SPHL здійснює пересилання вмісту регістрів Н і L в SP. Отже, SP отримує нові значення, а в Н і L переноситься попереднє значення SP.

Що розуміється під поняттям «стек» і для чого розроблена велика група команд для роботи з ним? Цей стек реалізований апаратно і призначений, в першу чергу, для роботи з підпрограмами і з перериваннями. Його робота описується фразою «останній ввійшов – перший вийшов» (рис. 8.3).

стек

A 5

А 5

0

0

0

1

SP

1

1

SP

2

0

1

1

2

SP

2

1

0

0

3

3 A5

1

0

0

3

4 A4

4 A4

4 A4

Вихідний

5 A3

Операція

5 A3

Операція

5 A3

стан

6 A2

завантаження

6 A2

видобування

6 A2

7 Al

7 Al

7 Al

Рис. 8.3. Робота стекової області пам’яті (SP – вказівник стеку; Аі – вміст вічка стеку).

Робота із стековою пам’яттю в КР580ИК80 організована через вказівник стеку SP. При кожному звертанні до стека при записі (завантаженні) вміст SP зменшується на одиницю і, отже, SP завжди вказує на верхнє зайняте вічко стека в пам’яті — на верхівку стеку. Після кожного читання SP збільшується на одиницю, тобто переходить до наступного вічка стеку. Організований в такий спосіб стек має необмежені розміри і дозволяє забезпечувати будь-яке вкладання підпрограм. Послідовність дій по входу і поверненню з підпрограм розглянута в лабораторній роботі № 7.

При розробці програм часто виникає потреба в запам’ятовуванні поточного вмісту регістрів, так як далі ці регістри необхідні для розміщення інших операндів Для запису в стек для тимчасового зберігання використовуються команди PUSH rр. Згодом вміст регістрів повинен бути відновлений, що досягається виконанням команди POP rp. Цей механізм особливо важливий при обробці переривань.

Розглянемо режим обробки переривань, що використовується в МП КР580ИК80А Переривання необхідні для забезпечення роботи з зовнішніми пристроями системи. Обмін за перериванням передбачає ініціювання обміну з боку зовнішнього пристрою. При виконанні будь-якої команди програми перевіряється наявність запиту на переривання. Аналіз запиту на переривання може бути програмно заборонений (командою DI) або дозволений (командою ЕI). Якщо запити на переривання дозволені, то команда виконується до кінця, після чого здійснюється перехід на обслуговування запиту переривання.

Переривання може бути викликане апаратно за запитом зовнішнього пристрою або програмно командою RST n. В обох випадках дії по обробці аналогічні: здійснюється перехід за адресою (n × 8) (рис. 8.4).

При наявності апаратного запиту на переривання МП виставляє сигнал INTE (дозвіл переривання) для читання з шини даних коду команди переривання RST n, яка надходить з пристрою, що ініціює переривання (а не з пам’яті як звичайно). Старші 8 бітів адреси наступної команди (вмісту PC) пересилаються в стекову пам’ять за адресою (SP-1), молодші 8 бітів — за адресою (SP-2). У вказівнику стеку фіксується (SP-2), і в програмний лічильник PC заноситься адреса початку програми обробки переривання, відповідна коду RST n за вектором переривань. Потім виконується перехід за адресою PC і виконується команда, що записана за цією адресою (див. рис. 8.4).

Мнемоніка команди переривання

Код команди

Адреса, з якої починається програма обробки переривання

RST 0

С7

0000

RST 1

CF

0008

RST 2

D7

0010

RST 3

DF

0018

RST 4

Е7

0020

RST 5

EF

0028

RST 6

F7

0030

RST 7

FF

0038

Рис. 8.4. Таблиця переривань (вектори переривань).

Отже обробка переривання аналогічна звертанню до підпрограми за винятком того, що звертання незапрограмоване, а виникає при певних обставинах.

При виконанні команди RST n вміст регістра прапорців не змінюється. Для кожного з векторів переривань виділяється вісім адрес пам’яті для команд програми обробки переривання. Якщо програма обробки потребує більшого адресного простору, то у виділеній області пам’яті записується команда переходу за адресою, де фактично розміщена програма обробки переривання.

В мікролабораторії ряд векторів переривань призначений для обробки переривань під керуванням монітору. Команда RST 1 виводить програму користувача на монітор. По команді RST 7, якщо перемикач «ШАГ–АВТ» встановлений в положення «ШАГ» здійснюється перехід в покроковий режим. Команда RST 2 також зафіксована при конструюванні мікролабораторії і не може бути змінена. При її виконанні здійснюється перехід за адресою 83D1. За адресою 83D1 необхідно записати перехід на власну підпрограму обробки переривання.

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

Розглянемо приклад програми з використанням переривань мікро лабораторії:

8000

00

NOP

8001

D7

RST 2

8002

76

HLT

За адресою 83D1 запишемо команду безумовного переходу

83D1 СЗ 02 80 JMP 8002

Виконаємо програму в покроковому режимі. Тоді після виконання команди RST 2 на ІАР з’явиться адреса 83D1. Наступний крок дозволяє перейти до чергової команди програми за адресою 8002. При такому рестарті ми не скористувались тим, що вміст PC завантажується в стек. При ініціалізації мікро лабораторії (після натискання кнопки «Сброс») здійснюється завантаження SP програмою монітору адресою початкового вічка стекової області 83С7, Занесемо за адресою 83D1 команду

83D1 С9 RET

і в покроковому режимі повторимо записану програму, контролюючи вміст SP. Після виконання команди RST 2 вміст SP (за адресами 83Е2, 83ЕЗ) стає рівним 83С5, тобто виконано два звертання до ОЗП для запису вмісту РЛ. Проконтролювавши адреси 83С7, 83С6, впевнимось, що за ними записані байти 02, 80, тобто 8002, що є адресою повернення в програму. Після виконання команди RET впевнимось, що в SP відновлений початковий стан 83С7.

Цю програму можна виконати в автоматичному режимі, щоб спостерігати дію команди HLT. Встановивши пускову адресу 8000 і натиснувши кнопку «Пуск», впевнимось, що ніяких змін на індикаторах не відбувається. Однак, якщо повернути перемикач в положення «ШАГ», то на ІАР висвітлюється адреса 8003. Очевидно, що після виконання команди HLT процесор не виконує ніяких дій. Переведення перемикача викликав появу переривання, відпрацювавши яке програма монітору висвітлила адресу наступної після HLT команди.

Проведемо експеримент по використанню точки переривання. Введемо в пам’ять програму, що на рис. 8.5. Головна програма, що записана в вічках 8000 ... 800F, уявляє собою програму лічильника з точкою переривання. Лічба ведеться у вічку 83F7. Вміст цього вічка виводиться на крайньому правому індикаторі. Перед кожним збільшенням лічильника відбувається переривання програми по команді RST 2 і починається виконуватись програма з адреси 8015.

Адреса

Код команди

XX XX XX

Мітка

Мнемоніка команди

Коментар

8000

LXI Н, 83Е7

Завантаження H, L адресою індикатора

8003

MVI М, 00

Очищення вічка індикатора

8005

LAB:

CALL SEG

Звертання до п/п висвітлювання

8008

LXI H, 83F7

Відновлення Н, L

800В

RST 2

Точка переривання

800С

BA:

INR M

Збільшення вічка індикатора

800D

JMP LAB

Перехід до висвітлювання

8015

КЕ:

CALL KEYIN

Опит клавіатури

8018

CPI 10

«Пуск» натиснутий ?

801А

JZ BA

Перехід до збільшення

801D

JMP LAB

Перехід до висвітлювання

83D1

JMP KE

Перехід до обробки переривання

Рис. 8.5. Програма з використанням переривання.

В цій програмі передбачений опит клавіатури підпрограмою KEYIN (за командою CALL KEYIN здійснюється перехід за адресою 0216), перевірка натискання кнопки «Пуск» і повернення в головну програму, де відбудеться чергове збільшення вмісту вічка 83F7. Висвітлювання символу здійснюється підпрограмою SEG (по команді CALL SEG відбувається перехід за адресою 01С0).

Отже, після кожного натискання кнопки «Пуск» вміст вічка 83F7 буде збільшуватись на одиницю. Виконаємо цю програму в автоматичному режимі і, натискаючи кнопку «Пуск», будемо спостерігати на правому індикаторі лічбу даних.