Мета роботи: дослідження методів під'єднання та організації обміну інформацією з найпростішими пристроями введення-виведення. Вивчення програмних засобів маскування даних та організації умовних переходів в мікро-ЕОМ.
Короткі відомості з теорії
До команд введення-виведення МП БІС КР580ИК80 відносяться команди IN<A1> та OUT<A1>. При виконанні команди IN<A1> мікро-ЕОМ зчитує число з вхідного пристрою за адресою (A1) (A1) і записує його в акумулятор. При виконанні команди OUT<A1> МП БІС записує число з акумулятора у вихідний пристрій за адресою (A1) (A1). Так як адреса пристрою вказується в одному байті, то за допомогою цих команд мікро-ЕОМ може обмінюватися інформацією не більше ніж з 256 зовнішніми пристроями.
Як найпростіший пристрій введення-виведення можуть використовуватись 8-розрядні регістри (наприклад, багаторежимний буферний регістр (ББР) К589ИР80). Обмін даними між мікро-ЕОМ і зовнішніми пристроями може викликатися як у визначених місцях в програмі, так і за сигналами переривання. В останньому випадку підпрограма обміну даними з зовнішнім пристроєм буде викликатися за рахунок переводу мікро-ЕОМ в режим обслуговування переривання.
Викликана підпрограма обслуговування переривання заставляє мікро-ЕОМ звертатися до вхідного пристрою для отримання даних. При надходженні сигналу запиту від зовнішнього пристрою (ЗП) на вхід STB багаторежимний буферний регістр виробляє сигнал низького рівня на виході , який може подаватися на вхід переривання МП БІС. Підпрограма обслуговування цього переривання записує дані в ББР за сигналами вибірки. Цими ж сигналами скидається внутрішній тригер запиту переривання ББР, що призводить до появи сигналу одиничного рівня на виході , який сповіщає зовнішній пристрій про прийом даних від мікро-ЕОМ в ББР.
Як пристрій введення-виведення можуть застосовуватись і більш складні схеми, наприклад програмований пристрій введення-виведення інформації в паралельному коді (КР580ИК55). При замкнутому перемикачеві на вхід регістру подається "0", а при розімкненому – "1". Перемикачі використовуються для імітації передачі даних від зовнішнього пристрою. До регістру можна під'єднати світлодіоди для індикації чисел, записаних в ньому. Світлодіоди вказують число, записане у вихідному пристрої.
Найпростіша програма (програма 3.1) перезапису числа з вхідного пристрою (за адресою FA) у вихідний пристрій (за адресою F9) має наступний вигляд:
Програма 3.1
Адреса |
Машиний код |
Команда |
Коментар |
8000 |
3E |
MVI A,81
OUT FB |
Запис в акумулятор даних для програмування інтерфейсу. Програмування інтерфейсу hhhhhhhhhhhhhhhhhhhhhhhh |
8001 |
81 |
||
8002 |
D3 |
||
8003 |
FB |
||
8004 |
DB |
IN FA |
Записати число з вхідного пристрою з адресою FA в акумулятор |
8005 |
FA |
|
|
8006 |
D3 |
OUT F9 |
записати число з акумулятора у вихідний пристрій з адресою F9 |
8007 |
F9 |
|
|
8008 |
C3 |
JMP |
Цикл |
8009 |
05 |
|
|
8010 |
80 |
|
|
Організація умовних переходів в мікро-ЕОМ здійснюється за допомогою команд управління переходами, які керуються станом відповідних флагів та регістра ознак.
Флаги.
В МП 580ІК80 Є п’ять умовних флагів, пов’язаних з виконанням команд: нуля Z, знаку S, парності P, пененосу CY, допоміжного переносу AC. Кожний флаг являє собою однобітний регістр. Флаг встановлений, якщо біт рівний логічній 1, флаг скинутий , якщо біт рівний логічному 0.
Флаг нуля (Z) – встановлюється, якщо результат операції рівний 0, скидається , якщо результат не рівний 0.
Флаг знаку (S) – встановлюється, якщо старший біт результата операції рівний 1, в протилежному разі флаг скидається.
Флаг парності (P) – якщо сума по модулю 2 біт в результаті операції рівна 0 (тобто результат містить парну кількість одиниць), то флаг встановлюється. Якщо результат містить непарну кількість одиниць, флаг скидається.
Флаг переносу (CY) – якщо при виконанні операції відбувається перенос (при додаванні) або позика з старшого біту (при відніманні і порівнянні), то флаг встановлюється, в іншому випадку - флаг скидається.
Допоміжний перенос (AC) – якщо при виконанні операції відбувається перенос з 3-го в 4-ий біт результату, то флаг встановлюється. Якщо це не відбувається , флаг скидається. Цей флаг встановлюється, при додаванні , відніманні, зменшенні, збільшенні, порівнянні і логічних операціях, але звичайно він використовується при додаванні і порівнянні, що передують команді DAA (десяткове доповнення акумулятора).
Регістр ознак має п'ять розрядів, кожний з яких встановлюється по визначеному правилу у відповідності з виконанням МП БІС останньої команди. Цими розрядами є:
1. Розряд переповнення C-CARRY. В нього записується 1. Якщо при виконанні арифметичної команди або команди зсуву було переповнення акумулятора, в протилежному випадку в розряд записується 0.
2. Розряд знаку S-SING. В нього записується 1, якщо при виконанні арифметичної або логічної команди в старшому, сьомому, розряді акумулятора записана 1, в протилежному випадку записується 0.
3. Розряд нульового результату Z-ZERO. В нього записується 1, якщо при виконанні арифметичної або логічної команди у всіх розрядах числа в акумуляторі є 0, в протилежному випадку в розряд записується 0.
4. Додатковий розряд переповнення AC-AUX. CARRY. В нього записується 1, якщо при виконанні команд в акумуляторі виникає одиниця переносу з третього розряду числа.
5. Розряд парності P-PARITY. В нього записується 1, якщо при виконанні команди кількість одиниць в розрядах акумулятора буде парною.
В багатьох випадках при виконанні програм необхідно перевіряти або змінювати (маскувати) стан одного або декількох розрядів числа в акумуляторі. Це можна здійснити за допомогою наступних операцій:
1) логічне множення числа в акумуляторі і масці, яке очищує розряд числа, якщо у відповідному розряді маски буде записаний 0, і не змінює його, якщо в розряді маски буде записана 1;
2) логічне складання числа в акумуляторі і масці, яке встановлює розряд числа в 1, якщо в такому ж розряді маски буде записана 1, і не змінює його, якщо в цьому розряді записаний 0;
3) логічного "що виключає АБО" числа в акумуляторі і масці, яке інвертує зміст розряду числа, якщо у відповідному розряді маски записана 1, і не змінює його, якщо в цьому розряді записаний 0.
Приклади використання цих команд наведені в табл. 8.2.
Таблиця 3.2.
Мнемокод |
Машин ний код |
Число в акумуляторі |
Маска |
Коментар |
Результат в акумуляторі |
AN1<D1> |
E6<D1> |
00111010 11111111 00000000 10101010 11110000 00001111 00100010 |
10101100 00100010 00100010 00100010 11111111 11111111 00000000 |
Логічне множення змісту акумулятора з байтом D1 |
00101000 00100010 00000000 00100010 11110000 00001111 00000000 |
0R1<D1> |
F6<D1> |
00111010 00001111 1111000 |
10101100 00001111 00001111 |
Логічне складання змісту акумулятора з байтом D1 |
10111110 00001111 11111111 |
XR1<D1> |
EF<D1> |
00111010 00001111 11110000 |
10101100 00001111 00001111 |
Логічне "що виключає АБО" змісту акумулятора з байтом D1 |
10010110 00000000 11111111 |
Проведення логічний операцій можливо також зі змістом акумулятора і внутрішніми регістрами МП БІС. В цьому випадку команди – однобайтні. При виконанні всіх логічних команд задіяні розряди Z, S, P, AC регістра ознак (в розряд С записується 0). Це дозволяє перевіряти стан будь-якого розряду числа і виконувати умовні переходи в програмах. Програма маскування окремих розрядів числа (програма 3.2), записаного у вхідному пристрої, наведена нижче. Програма містить результат маскування у вихідний пристрій.