“МІКРОПРОЦЕСОРНІ ПРИСТРОЇ”
“Інформаційна безпека”
Мікропроцесор (МП) – це пристрій, який здійснює прийом, обробку і видачу інформації. Конструктивно МП містить одну або декілька інтегральних схем і виконує дії за програмою, записаною в пам’яті.
Мікропроцесорна система (МПС) – обчислювальна, контрольно-вимірювальна або керувальна система, в якій основним пристроєм обробки інформації є МП.
Мультипроцесорна система – система, яка утворюється об’єднанням деякої кількості універсальних або спеціалізованих МП, завдяки чому забезпечується паралельна обробка інформації і розподілене керування.
Мікропроцесорний комплект (МПК) – сукупність інтегральних схем, сумісних за електричними, інформаційними та конструктивними параметрами і призначених для побудови електронно-обчислювальної техніки та мікропроцесорних систем керування. Зазвичай МПК містить: ВІС МП, ВІС оперативних запам’ятовувальних пристроїв (ОЗП), ВІС постійних запам’ятовувальних пристроїв (ПЗП), інтерфейси або контролери зовнішніх пристроїв, службові ВІС (тактовий генератор, регістри, шинні формувачі, контролери шин, арбітри шин).
Мікроконтролер – являє собою пристрій, виконаний конструктивно в одному корпусі ВІС і містить основні складові МПК: процесор, пам’ять даних, пам’ять програм, програмовані інтерфейси.
Інтерфейс – визначає правила взаємодії компонентів системи, а також правила побудови технічних засобів призначених для реалізації цієї взаємодії.
Класифікація МП
МП та МПК класифікують за такими ознаками: призначенням, кількістю ВІС, способом керування, типом архітектури, типом системи команд.
За призначенням МП поділяють на універсальні та спеціалізовані:
1. Універсальні МП – це МП загального призначення, які розв’язують широкий клас задач обчислення, обробки та керування. Ці МП застосовуються в обчислювальних системах: персональних комп’ютерах, потужних серверах, робочих станціях та інших засобах обчислювальної техніки, а також при проведенні науково-технічних розрахунків з використанням операцій з плаваючою комою над 64-розрядними і більш довгими операндами.
На світовому ринку універсальних МП домінують МП компанії Intel - Pentium (P5, P6), та їх клони компанія AMD: K5, K6, компанія Cyrix: M1, M2 з системою команд х86 (CISC-процесори). Решта виробників універсальних МП випускають RISC-процесори, що складає біля 10% ринку. RISC- процесори: Архітектура Power PC – компанія Motorola: Power PC 603, 604, 620, Архітектура PA – компанія HP: PA-8000, Архітектура Alpha – компанія DEC: лінія Alpha (21064, 21164,21164A), Архітектура SPARC – компанія SUN: лінія SPARC, Архітектура MIPS – компанія Silicon Graphics: лінія MIPS R-x (R10000).
Мікропроцесори архітектури CISC в основному застосовуються у персональних комп’ютерах, а архітектури RISC-в потужних серверах та робочих станціях.
Спеціалізовані МП призначені для розв’язання задач лише певного класу. До спеціалізованих МП належать: сигнальні, медійні та мультимедійні МП, однокристальні мікроконтролери (ОМК), трансп’ютери.
Цифрові сигнальні процесори (ЦСП) або сигнальні процесори (DSP – Digital Signal Processors) – призначені для цифрової обробки сигналів у реальному масштабі часу (наприклад, фільтрація сигналів, обчислення згортки, пряме та зворотне перетворення Фур’є). Для них характерними є: 1) наявність достатніх об’ємів внутрішньокристалічної пам’яті для даних і програм; 2) можливість захисту програм від несанкціонованого доступу; 3) підтримка режиму енергозбереження. Робото в реальному часі вимагає від технічних засобів DSP: 1) високої продуктивності; 2) забезпечення можливості інтенсивного обміну даними з зовнішніми пристроями.
В DSP зараз це досягається завдяки розділу пам’яті та шин програм і даних (так звана гарвардська архітектура) та апаратному помножувачеві даних, за допомогою якого перемноження двох чисел здійснюється протягом одного такту.
Крім цього в DSP використовуються методи скорочення тривалості командного циклу, характерні для універсальних RISC-процесорів: 1) конвеєризація виконання команд; 2) розташування операндів більшості команд в регістрах МП; 3) використання внутрішніх регістрів для зберігання результатів обчислень; 4) реалізація в системі команд таких операцій як множення з нагромадженням МАС (С=А(В+С); 5) реалізація можливості виймання з пам’яті одного або декількох операндів в циклі виконання команди.
DSP різних компаній-виробників утворюють два класи, що суттєво відрізняються ціною:
1) більш дешеві МП з обробкою даних в форматі з фіксованою комою;
2) дорожчі МП, що апаратно підтримують операції над даними в форматі з плаваючою комою.
Можливості DSP роблять їх привабливими для використання не тільки в ролі спеціалізованих обчислювачів, але й в ролі контролерів у промислових роботах, побутових приладах, системах керування зброєю, засобах безпровідного зв’язку. Серед найпоширеніших сімейств сигнальних процесорів TM320Cxx – фірми Texas Instruments, 21xx, 210xx – Analog Devices, DSP560xx та DSP9600x – фірми Motorola.
Мікроконтролери призначені для застосування у вбудованих системах управління, в тому числі і у побутових приладах. Звідси й назва “мікроконтролери”. Число різних типів МК на сьогодні перевищує 500, і всі вони знаходять своє застосування. Серед них найпоширеніші AVR – фірми Atmel, MSP430 – Texas Instruments, MCS-196/296 – Intel, PIC16/17 – MicroChip, НС05/08/11 – Motorola.
Сучасний МК є складною цифровою системою, розміщеною на кристалі. До її складу входять: 1) один 8ми або 16ти, чи рідше 32х розрядний процесор; 2) внутрішня пам’ять програми (від 1го до 10ків кбайт) та даних; 3) широкий набір інтерфейсних і периферійних пристроїв, зокрема, портів вводу/виводу, таймерів, аналого-цифрових перетворювачів та інших.
Для МК характерні: 1) широкі функціональні можливості; 2) високі технічні параметри; 3) низька вартість.
Медійні та мультимедійні процесори призначені для обробки аудіосигналів, графічної інформації, відеозображень, а також для розв’язування ряду задач у мультимедіакомп’ютерах, іграшкових приставках, побутовій техніці за рахунок створення симетричної мультипроцесорної системи з більш простими процесорами, що опрацьовують цілочисленні операнди. До медійних і мультимедійних процесорів належать процесори фірм MicroUnity – Mediaprocessor, Philips – Trimedia, Nvidia – NVІ.
У зв’язку з більш простою схемотехнікою вартість медійних процесорів досить низька, а значення показника “продуктивність/вартість” на два-три порядки вища.
Трасп’ютери – призначені для масових паралельних обчислень і роботи у мультипроцесорних системах. Трансп’ютер – це мікрокомп’ютер з власною внутрішньою пам’яттю та каналами (links) для з’єднання з іншими трансп’ютерами. Термін “трансп’ютер” виник внаслідок об’єднання слів “транзистор” і “комп’ютер”. Основна область його застосування – це масово-паралельні обчислювальні системи, в яких трансп’ютер відіграє роль базового обчислювального елементу.
Для трансп’ютерів характерним є наявність внутрішньої пам’яті та вбудованого міжпроцесорного інтерфейсу, тобто каналів зв’язку з іншими ВІС МП. Перший трансп’ютер Т414 був представлений фірмою Inmos Inc. (Великобританія) у 1983 році. Комунікаційні канали можуть здійснювати обмін даними одночасно з обчисленнями, практично не знижуючи продуктивності. Завдяки цьому системи на основі трансп’ютерів характеризуються високими показниками ефективності – продуктивність/вартість.
Зараз, крім фірми Inmos, трансп’ютероподібні МП випускають фірми Texas Instruments – TM320C4x i Analog Devices – ADSP2106x.
За кількістю ВІС у МПК розрізняють багатокристальні МПК і однокристальні МК. До багатокристальних комплектів відносять МПК з однокристальними і секційними МП.
Однокристальний МП є конструктивно завершеним виробом у вигляді однієї ВІС, інша назва – МП з фіксованою розрядністю даних. До цього типу належать процесори фірм Intel (P5, P6, P7), AMD – K5, K6, Cyrix – 6x86, Motorola – Power PC 603, 604, 620, серії К580, 1801, 1806, 1810, 1821 та інші.
У секційних МП в одній ВІС реалізується лише деяка функціональна частина (секція) процесора. Інша назва секційних МП – розрядно-модульні МП або МП з нарощенням розрядності. Секційність ВІС МП зумовлює значну гнучкість МПС, можливість нарощення розрядності даних, створення специфічних команд із набору мікрокоманд. До секційних належать МП серій К582, К583, К584, К589, К1800, К1802, К1804.
За способом керування розрізняють МП із схемним та МП з мікропрограмним керуванням.
МП зі схемним керуванням мають фіксований набір команд, розроблений фірмою-виробником, який не може змінювати користувач.
У МП з мікропрограмним керуванням систему команд розробляють при проектуванні конкретного МПК на базі набору найпростіших мікрокоманд з урахуванням класу задач, для розв’язання яких призначений МПК.
За типом архітектури, або принципом побудови розрізняють МП з фоннейманівською архітектурою і МП з гарвардською архітектурою.
За типом системи команд розрізняють CISC (Complete Instruction Set Computing) – процесори з повним набором команд, в яких швидкодія опрацювання інформації визначалася тактовою частотою МП. Тому підвищення швидкодії опрацювання інформації в них йшло по шляху підвищення тактової частоти. RISC (Reduced Instruction Set Computing) – процесори зі зменшеним набором команд, в яких велика швидкодія опрацювання інформації навіть при використанні невисокої тактової частоти досягалася за рахунок технології опрацювання інформації.
Основними параметрами МП є система (набір) команд, розрядність і тактова частота.
Система команд весь час вдосконалюється. З’являються нові команди, що замінюють цілі групи попередніх. Наприклад, команда множення, що є в системі команд МП i8086/8088 замінила цілі підпрограми множення чисел попередніх МП. Сучасні МП можуть виконувати до кількох сотень команд (інструкцій).
Розрядність показує, скільки двійкових розрядів (бітів) інформації опрацьовується , або передається за один такт, а також скільки двійкових розрядів використовується для адресації пам’яті.
Об’єм пам’яті, що адресується, або по іншому адресний простір, залежить від кількості ліній шини адреси МП. Якщо ліній 20, то адресний простір становить 220=1Мбайт і т.д.
Тактова частота вказує, скільки елементарних операцій (тактів) МП виконує за секунду. Але вона є лише відносним показником продуктивності МП. Через архітектурні відмінності в деяких МП за один такт виконується робота, на яку інший МП затрачає кілька тактів.
За прогнозами економістів та спеціалістів розвиток технології виробництва МП у найближчі роки ітиме в напрямку: 1) збільшення густини транзисторів на кристалі, яка на сьогодні складає біля 0,05 мкм (5(10-8м) при кількості транзисторів на кристалі близько 40 млн.; 2) росту числа шарів металізації; 3) підвищення тактової частоти; 4) зменшення напруги живлення та питомої (на один транзистор) споживаної потужності; 5) зменшення питомої (на один транзистор) теплової потужності, що виділяється в кристалі.
На шляху подальшої мініатюризації крім фізичних обмежень є і економічні. Справа в тому, що для кожного наступного покоління вартість технології подвоюється. Так у 1986 році МП Intel80386 містив 250(103 транзисторів і випускався на заводі, що коштував 200 млн. $. В 1998 році завод фірми Intel, призначений тільки для обробки напівпровідникових кристалів коштував вже 2,4 млрд. $. Також зростає термін виготовлення МП, а також відсоток браку.
Але основною проблемою є відвід тепла. Вже зараз на кристалі розсіюється потужність до 60 Вт.
Основні області застосування
Основними областями застосування МП можна вважати: по-перше, традиційні для застосування засобів обчислювальної техніки області:
1) використання для створення комп’ютерів, як засобів обчислювальної техніки;
2) використання у вбудованих мікро-ЕОМ, які враховують конкретні умови об’єкту управління;
по-друге, нетрадиційні області (замість структур з “жорсткою” логікою, в яких до появи мікропроцесорів використання засобів обчислювальної техніки і не передбачалось).
Тепер ця нетрадиційна область стала переважаючою областю використання МП і з часом очевидно буде розширюватись. За різними даними з усіх МП, що використовують в нетрадиційних областях, 28% – припадає на застосування в системах автоматики і управління, 25% – засобах вимірювальної техніки, 17% – економіці та управлінні, 11% – зв’язку, 4.5% – засобах металообробки, 4% – медицині, 1.5% – транспорті, 9% – інших сферах використання. Це середні цифри, які мають тенденцію весь час змінюватися.
ЛЕКЦІЯ № 2
Структура мікропроцесорного пристрою. Архітектурні особливості мікропроцесорів. Поняття про систему команд МП.
Типова архітектура універсального МП.
Робота та призначення внутрішніх елементів.
Основні способи адресації у мікропроцесорах
Структура мікропроцесорного пристрою
Узагальнену структурну схему МП пристрою (МПП) чи системи показано на рис. 2.1. До складу МПП входять: центральний процесор (ЦП), ПЗП, ОЗП; система переривань, таймер, пристрої вводу/виводу (ПВВ). ПВВ приєднані до системної шини через інтерфейс вводу/виводу.

Рис. 2.1.
Шина – це інформаційний канал, який об’єднує всі функціональні блоки МПП і забезпечує обмін даними. Конструктивно шина являє собою n провідників. У паралельній шині n бітів передаються по окремих лініях одночасно. Усі основні блоки МПП з’єднують з єдиною паралельною шиною, яка називається системною шиною (СШ, System Bus). Системна шина містить три шини: адреси, даних і керування.
Шина адреси (ША, Address Bus) – є однонапрямленою. Вона призначена для передавання адреси комірки пам’яті або ПВВ. Напрям передачі по ША – від МП до зовнішніх пристроїв (ЗП). Позначається

Шина даних (ШД, Data Bus) – є двонапрямленою. Вона призначена для передавання даних між блоками МПП. Інформація по ШД передається у двох напрямках по одних і тих самих лініях: як до МП так і від нього. Позначається

Шина керування (ШК, Control Bus) – призначена для передавання керувальних сигналів. Хоча напрям керувальних сигналів може бути різним, однак ШК не є двонапрямленою, оскільки для сигналів різного напряму використовуються окремі лінії.
ПЗП та ОЗП складають систему пам’яті, призначену для збереження інформації. ПЗП призначений для збереження програм, таблиць, констант, ОЗП – проміжних результатів обчислень. Пам’ять організовано у вигляді масиву комірок, кожна з яких має свою адресу і містить байт (8 біт) або слово (може мати будь-яку довжину, переважно – 16 біт).
Для звернення до комірки пам’яті треба видати її адресу на ША. На рис. 2.2 зображено структуру пам’яті з 4 однобайтових комірок:

Рис. 2.2.
Робота МПП полягає в опрацюванні даних та інтенсивному обміні інформацією між ЦП, пам’яттю та ПВВ. Режими роботи, напрямки передачі інформації задаються сигналами управління, що передаються від ЦП по ШУ. При виконанні програми, записаної в ПЗП, мікропроцесор виймає команди з ПЗП, розшифровує їх та виконує дії, що приписуються тією чи іншою командою. При виконанні команд, що включають читання або запис МП звертається до пам’яті, а при виконанні команд вводу-виводу – до ПВВ. Ефективність вирішення задачі обміну інформацією в МПП в значній мірі визначається організацією цього обміну та структурою зв’язків між мікропроцесором, пам’яттю та ПВВ.
Основою ЦП є МП, але крім ЦП ще можуть входити мікросхеми системного генератора (СГ), системного контролера (СК), мікросхеми, призначені для буферування СШ. Модуль ЦП обробляє дані та керує всіма іншими модулями системи. ЦП вибирає коди команд з пам’яті, дешифрує їх і виконує. Протягом часу виконання команди – командного циклу ЦП виконує такі дії:
- виставляє адресу команди на ША;
- отримує код команди з пам’яті та дешифрує його;
- обчислює адреси операнда та зчитує його;
- виконує операцію, визначену командою;
- сприймає зовнішні керувальні сигнали (напр., запити переривань);
- генерує сигнали стану і керування, потрібні для роботи пам’яті та ПВВ.
ПВВ або ЗП – це пристрої, призначені для введення інформації у МП або виведення інформації з нього. Прикладами ПВВ є дисплеї, клавіатура, АЦП, ЦАП, реле. Для з’єднання ПВВ з СШ їх сигнали мають відповідати певним стандартам. Це досягається за допомогою інтерфейсів ВВ.
Інтерфейси ВВ (ІВВ) виконують функцію узгодження сигналів ПВВ із сигналами СШ. Їх називають також контролерами або адаптерами. Поняття інтерфейсу включає систему шин, допоміжних технічних засобів (наприклад контролери вводу-виводу) та алгоритмів, реалізованих за допомогою програмних та технічних засобів і призначених для організації обміну між МП, пам’яттю та ПВВ.
Система переривань дозволяє МПП реагувати на зовнішні сигнали – запити переривань, джерелами яких можуть бути: сигнали готовності від ЗП, сигнали з виходу датчиків. Із появою запиту переривання ЦП перериває основну програму і переходить до виконання підпрограми обслуговування запиту переривання.
Таймер призначений для реалізації функцій, пов’язаних з відліком часу. Після того, як МП завантажує в таймер число, яке задає частоту, затримку, або коефіцієнт ділення, таймер реалізує потрібну функцію самостійно.
Архітектурні особливості мікропроцесорів
Особливість самого МП, як пристрою з програмованою логікою, полягає у підпорядкованості його структури програмі. Це означає, що функції, які реалізує МП, визначаються не стільки його структурою, скільки послідовністю команд, тобто керуючих інструкцій чи директив, що поступають з пам’яті на виходи МП. При зміні цієї послідовності змінюється функція, яку виконує МП.
Оскільки можливості МП залежать не тільки від його структури, але й від програмного забезпечення, для комплексної характеристики можливостей МП ввели таке поняття як архітектура МП.
Архітектура МП – це поняття, що включає в себе структуру, систему (набір) команд МП, призначення вхідних та вихідних сигналів, формати даних і команд, способи адресації до даних.
Тобто, поняття архітектури об’єднує як апаратні, так і програмні засоби МП.
Існують два основних типи архітектури – фоннейманівська та гарвардська.
Особливістю фоннейманівської архітектури є те, що програма і дані знаходяться у спільній пам’яті, доступ до якої здійснюється по одній шині даних і команд (рис. 2.3.а).

Рис. 2.3.
Особливістю гарвардської архітектури є те, що пам’ять даних і програм розділені та мають окремі ШД і шину команд, що дозволяє підвищити швидкодію МПС (рис. 2.3.б).
Аналіз кодів програм, які генеруються компілятором мов вищого рівня, показав, що компілятори з усієї системи команд МП використовують тільки обмежений набір простих команд. Це команди типу ”регістр-регістр”, ”регістр-пам’ять”. Компілятори не в стані ефективно використовувати складні команди. Це спостереження привело до формування концепції процесорів зі скороченим набором команд, так званих RISC-процесорів. Сприяв розвиткові RISC-процесорів також розвиток конвеєрних процесорів. В них кожна команда розбивається на невелику кількість кроків з однаковим часом виконання (вибирання команди з пам’яті, дешифрування команди, виконання команди, запис результатів і т.п.). Це дозволяє запускати на виконання з зсувом на один крок паралельно багато команд, створюючи таким чином ефективний конвеєр процесора, і за один такт видавати результати виконання команди.
Після виділення RISC-процесорів в окремий клас процесори з традиційними наборами команд стали називати CISC-процесорами. Ці МП мають команди з різними форматами (в тому числі з – довгими), що вимагають для зберігання різного числа комірок пам’яті.
Звідси виникає необхідність визначення типу команди в ході її дешифрування. При цьому може ускладнюватися пристрій управління процесора. Це є перепоною для CISC-процесорів в досягненні тактової частоти RISC-процесорів на тій же елементній базі.
Зараз багато сучасних МП є поєднанням процесорів типу CISC I RISC. В таких МП влаштовується апаратний транслятор, що перетворює команди формату CISC в команди формату RISC. При цьому одна команда формату CISC може породжувати до 4х команд формату RISC.
Фірма Intel, наприклад, використала цей підхід в МП Pentium Pro.
Команди мікропроцесора. Мнемонічна форма запису команд
Обробка даних – одна з основних функцій МП, яка включає арифметичні обчислення, логічні операції та різноманітні маніпулювання з даними.
Елементи структури МП, що виконують цю функцію, складають так званий арифметико-логічний пристрій (АЛП). В результаті роботи АЛП дані змінюються. До операції обробки даних, наприклад, можна віднести:
1) додавання – відповідна команда в наборі (системі) команд МП позначається ADD (від англійського слова (addition));
2) віднімання – SUB (subtraction);
3) логічне множення – ANA (and);
4) порівняння – CMP (compare) та інші.
Програма МП складається з послідовності інструкцій (команд), що зберігаються в пам’яті і виконуються одна за одною. Отже, команди записані в пам’ять визначають майбутню роботу МП.
Всі команди і дані в МПП представлені в двійковій системі числення. Програмування в машинних (об’єктних) кодах, тобто в двійкових є копіткою стомлюючою роботою, оскільки команди представляють собою довгі послідовності одиниць і нулів.
Задача скорочення запису команд, полегшення запам’ятовування та ототожнення їх з фактичним призначенням вирішується шляхом використання мнемонічного позначення команд. Мнемонічне позначення команди означає її скорочений запис. Для цього звичайно використовують перші букви назви операції, що виконується по команді. Наприклад, мнемонічне позначення команди додати (англ. ADDition) вміст регістра В до вмісту акумулятора А має такий вигляд
ADD B,
де ADD – мнемонічне позначення коду операції; В – адреса місцезнаходження операнда (даного); другий операнд знаходиться в акумуляторі A.
Якщо ж команда оперує безпосередніми числовими даними, або адресами областей пам’яті, то в адресній частині команди використовують числа у вісімковій, частіше шістнадцятковій системі.
Наприклад, візьмемо команду, код операції якої має мнемонічне позначення JMP (jump – безумовний перехід). Ця команда вимагає вказування адреси переходу. Повністю запис команди може мати вигляд JMP 5F4EH. Тут адреса переходу вказана шістнадцятковим числом.
Мнемонічна форма запису команд використовується в мові асемблер. Асемблером називається і мова програмування і спеціальна програма-транслятор, що переводить мнемокоди у машинні коди МП (двійкові еквіваленти).
Документація по використанню МП, містить описи відповідних наборів команд з вказівкою кодів операцій, як у вигляді мнемонічного запису, так і в числовій формі.
Поняття про систему команд мікропроцесора
Кожен МП має свій індивідуальний набір команд або, як ще кажуть, систему команд (СК). Команда, як було сказано вище, представляє собою двійкове слово. Структуру цього слова, тобто будову, прийнято називати форматом команди. Формати різних команд можуть суттєво відрізнятися і складатися з одного, двох, трьох і більше машинних слів. Машинне слово – це двійкове число певної розрядності, з яким оперує МП. У 8-розрядних МП довжина машинного слова дорівнює байту. В 16-розрядного – 2 байти і т. д. Довжина різних команд не однакова, і визначається це способом адресації до операнда.
За форматом набір команд МП можна поділити на дві категорії:
1) безадресні команди (без посилання на дані);
2) команди зі звертанням до пам’яті або зовнішніх пристроїв.
Безадресні команди містять тільки код операції і складаються з одного машинного слова, наприклад, такі команди як: HLT (HaLT) - ЗУПИН, NOP (No OPeration) - ХОЛОСТА ОПЕРАЦІЯ, RET (RETurn) - ПОВЕРНЕННЯ та інші, які не оперують з даними.
Крім того безадресними вважають команди, в яких дані (операнд) не вказані, але цілком певно визначені. Практично, найчастіше в таких командах мається на увазі слово (дані, операнд), розташоване в одному з внутрішніх регістрів МП.
Прикладами таких команд можуть бути наступні команди: RAR (rotate right through carry) - циклічно зсунути вправо вміст акумулятора і прапорця C; STC (set carry) - встановити прапорець переносу С в одиницю; CMA (complement accumulator) – інвертувати акумулятор, СМС (complement carry) – інвертувати прапорець переносу С та інші.
Формати команд другої групи складаються з кількох машинних слів, щоб задати адресу даних в пам’яті або адресу даних зовнішнього пристрою, інколи може задаватися проміжна адреса або дані.
Наприклад, щоб можна було адресуватися до 256 зовнішніх пристроїв необхідно мати зону адреси у вісім біт, а до пам’яті 64 Кбайт - шістнадцять біт. Відповідно формат команди буде складатися з двох і трьох 8-розрядних машинних слів.
За призначенням всі команди МП прийнято ділити на п’ять функціональних груп:
1) переміщення даних;
2) перетворення даних (група арифметичних і логічних команд);
3) управління програмою;
4) вводу-виводу;
5) спеціальні.
Команди переміщення даних організовують передачу інформації в акумулятор з пам’яті або навпаки, в акумулятор з пристрою вводу-виводу або навпаки, а також обмін інформацією між різними регістрами мікропроцесора. В залежності від команди може здійснюватися переміщення одного або кількох слів даних.
Прикладами команд переміщення є команди: MOV A, M (move accumulator from memory) - переслати байт даних з комірки пам’яті, адреса якої знаходиться у відповідній регістровій парі МП, в акумулятор; MOV B, C (move C to B) – переслати байт даних з регістра С в регістр В; IN 45 – перемістити дані з порту ПВВ, адреса якого дорівнює 45, в акумулятор МП.
Команди перетворення даних використовуються для перетворення інформації, тобто для виконання арифметичних, наприклад ADD, SUB, логічних, наприклад, AND, OR, дій. Дії виконуються над даними (здебільшого це два слова), які знаходяться в регістрах МП. Завжди одним з регістрів МП, що використовується при цьому, є акумулятор А. Інколи дані знаходяться в акумуляторі МП та комірці пам’яті. Після виконання операції результат завжди залишається в А.
Команди управління змінюють вміст внутрішнього регістра МП, який називається програмним лічильником (Program Counter), або скорочено (PC), вміст якого є адресою наступної команди. Якби не було команд управління, то алгоритм програми складався б з ряду операцій, які виконувалися б тільки послідовно в порядку занесення команд в пам’ять.
Команди управління можуть бути умовними і безумовними.
По команді безумовного переходу вміст програмного лічильника РС, або інколи кажуть лічильника команд, приймає значення, яке вказане в команді безумовного переходу. Тому наступною після команди безумовного переходу буде виконуватися команда, записана за адресою, яка вказана в команді безумовного переходу. Прикладом такої команди може бути команда JMP 8092. Після неї буде виконуватися команда, що записана за адресою 8092.
Якщо команда умовна, то вона супроводжується вказівкою на стан, який повинен бути попередньо перевіреним, наприклад, додатне значення результату або від’ємне, переповнення регістру або відсутність його, наявність нульового результату і т.д. Якщо умова виконується, то має місце перехід на нову адресу, що вказана в команді умовного переходу. В противному разі команда умовного переходу пропускається.
Можливість програмувати процедуру перевірки і приймати рішення дозволяє писати програми, що мають кілька гілок, кожна з яких може виконатися тільки після виконання заданої умови. Прикладом такої команди може бути команда RZ (return zero) – ПОВЕРНЕННЯ (з підпрограми) ЯКЩО НУЛЬ.
Команди вводу-виводу організовують обмін інформацією з зовнішніми пристроями. Прикладами таких команд є IN 80 або OUT 40. Перша з них означає, що треба ввести інформацію з зовнішнього пристрою, адреса якого дорівнює 80, в акумулятор МП, а друга – вивести інформацію з акумулятора МП в зовнішній пристрій, адреса якого дорівнює 40.
Спеціальні команди призначені для виконання деяких специфічних функцій. Прикладами таких команд можуть бути команди EI (Enable Interrupt) – дозволити переривання програми; DI (Disenable Interrupt) - заборонити переривання програми.
Типова структура 8-розрядного однокристального мікропроцесора
Типова структура 8-розрядного однокристального МП Intel 8080 (КР580ІК80А) представлена на рис. 2.4.
Як видно зі схеми МП складається з таких основних чотирьох частин: 1) арифметико-логічного пристрою (АЛП); 2) множини регістрів; 3) пристрою керування; 4) 8-розрядної внутрішньої шини даних (ВШД).
АЛП призначений для виконання однієї з головних функцій МП – обробки даних. АЛП являє собою комбінаційну схему, яка виконує арифметичні чи логічні операції – додавання, віднімання, І, АБО, зсув і т.д. Він має два входи та один вихід, через які вводяться і виводяться дані. Перед входами АЛП розташовані буферні регістри (БР), які можуть зберігати для АЛП по одному слову даних. Буферні регістри приймають дані з ВШД, крім того один буферний регістр ще має можливість приймати дані із спеціального регістра, що зветься акумулятором (А). Після виконання операції дані (результат) пересилаються з АЛП через його вихід в А.
В залежності від виду операції АЛП оперує з одним або двома словами. При маніпуляціях з одним словом це слово вибирається з А.
Регістри МП приймають участь в реалізації основних функцій. Їх можна розділити на регістри загального (РЗП) та спеціального призначення. РЗП можуть використовуватися програмістом за його розсудом. До них відносяться 8-розрядні регістри B, C, D, E, H, L. До регістрів спеціального призначення належать – A, F, PK, БА, БД, ІР/PC, SP.
Акумулятор (А) – це регістр, призначений для зберігання даних, що надходять з АЛП або з ВШД. Він є основним регістром МП при різних маніпуляціях з даними, бо для виконання будь-якої операції над ними їх перш за все необхідно помістити в акумулятор. Розрядність акумулятора відповідає довжині слова МП. Інколи розрядність акумулятора може бути подвійної довжини, або МП може мати кілька акумуляторів. Напр.
ADD B ; A A + B
Лічильник команд ІР/PC (Instruction Pointer/Command Pointer) – це один з найбільш важливих регістрів, у якому зберігається адреса команди, що виконується.
Щоб пристрій міг виконувати свої функції, команди в МП повинні поступати з пам’яті в строго визначеному порядку. Цей порядок задає лічильник команд. Розрядність лічильника команд РС часто більша ніж розрядність самого МП. Так у 8-розрядних МП, що можуть адресуватися до пам’яті 64 Кбайт, число розрядів РС дорівнює 16.
Лічильник команд інколи ще називають вказівником команд. Він з’єднаний через мультиплексор з ВШД МП. Тому в принципі він може одержувати адреси команд з будь-якого вузла МП, під’єднаного до ВШД.
Коли МП тільки починає працювати, то по сигналу початкової установки RESET в лічильник команд РС завантажується заздалегідь визначена адреса (звичайно це адреса 0000Н), і виконання програми починається з цієї адреси.
Після читання першої команди програми за вказаною адресою МП автоматично дає приріст лічильнику команд РС. Цей приріст РС одержує в той момент, коли МП приступив до виконання команди. Тобто з цього моменту РС вказує адресу наступної команди. Лічильник команд може відступати від такої послідовності, коли зустрічається команда безумовного переходу JMP ADDR або коли є необхідність виконати підпрограму (команда CALL ADDR) або такі ж команди умовного переходу чи виклику підпрограми та в результаті виконання деяких інших команд. При цьому адреса переходу вказується в самій команді і з неї завантажується в лічильник команд.

Рис. 2.4.
Буферний регістр адресу (БА). При кожному звертанні до пам’яті або порту вводу-виводу БА вказує адресу пам’яті, яка буде використана МП. Вихід регістра адреси пам’яті називають шиною адреси. Найчастіше БА завантажується від РС. Але інколи може завантажуватися і від інших елементів, наприклад, від регістрових пар, які можуть використовуватися як вказівники адрес комірок пам’яті. Протягом часу виймання команди з пам’яті БА і РС мають однаковий вміст, тобто БА вказує місце знаходження команди, що виймається з пам’яті. Після декодування команди РС одержує приріст, а вміст БА не змінюється.
Деякі команди надають можливість змінювати вміст БА шляхом виконання обчислень.
Оскільки БА підключений до ВШД МП, то він може завантажуватися від різних джерел. Більшість МП мають команди, що дозволяють завантажувати БА вмістом РС, РЗП або якої-небудь області пам’яті.
Звичайно в МП розрядність РС і БА однакова.
Регістр команд (РК) призначений для зберігання коду команди, яка виконується. РК з’єднаний з ВШД і може лише приймати дані. З виходу РК код команди подається на дешифратор команд (ДШК), який команду дешифрує і повідомляє МП, що йому робити для реалізації команди.
Розрядність РК співпадає з розрядністю МП.
Мультиплексом (М) – пристрій, що з’єднує один з РЗП з ВШД.
Регістр стану або прапорців F призначений для зберігання деяких перевірок, що здійснюються в процесі виконання програми. Тобто при виконанні операції в АЛП розряди регістра F можуть приймати те чи інше значення, яке і є результатом здійснюваних перевірок. Зберігання результатів перевірок в регістрі F дозволяє реалізувати програми, що містять умовні переходи (тобто порушувати задану послідовність виконання команд).
Наприклад, якщо при додаванні двох 8-бітних чисел одержується результат більший ніж
11111111,
то з’являється біт перенесення, який в свою чергу встановлює в 1 однойменний розряд регістра F. Якщо перенесення нема, то цей розряд буде встановлений в 0.
Або якщо після якої-небудь операції всі розряди акумулятора приймають значення 0, то в регістрі F відповідний біт нульового стану встановлюється в 1.
Формат регістра стану F 8-розрядного однокристального МП і8080 подано на рис. 2.5.
Коротко охарактеризуємо розряди регістра F.
1. Розряд перенесення / позики С. 1 в даному розряді показує, що остання операція, яка була виконана, супроводжувалася перенесенням або позикою (від’ємним переносом). Нагадаємо, що при додаванні маємо перенесення з старшого розряду, а при відніманні більшого числа від меншого маємо позику у старший розряд.
2. Розряд нульового результату Z. 1 в цьому розряді означає, що після виконання операції у всіх розрядах акумулятора (або іншого регістра) є нулі.
3. Знаковий розряд S встановлюється в 1, якщо старший розряд результату операції дорівнює 1, тобто результат від’ємний.
4. Розряд парності Р. 1 в цьому розряді означає, що число одиниць в результаті операції парне.
5. Розряд додаткового переносу АС встановлюється в 1 при появі переносу з 3-ого розряду в 4-ий при операціях додавання та віднімання. Ознака використовується при обробці двійково-десяткових чисел.

Рис. 2.5.
Як бачимо, не всі розряди регістра F використовуються МП.
16-розрядний вказівник стека SP (Stack Pointer) призначений для зберігання адреси комірки пам’яті, яка є початком області пам’яті, відведеної під стек. Вміст SP зменшується на 1 перед кожним занесенням слова в стек, або збільшується на 1 після кожного витягування слова зі стека.
Регістри загального призначення (РЗП). Ці регістри всі є програмно-доступними і мають багатоцільове призначення, через що і одержали назву регістрів загального призначення. Вони можуть служити як комірки надоперативного запам’ятовувального пристрою (НОЗП). Функціональні можливості деяких з них не поступаються можливостям А. Це досягається тоді, коли АЛП може розташовувати в них дані.
Звичайно, 8-розрядний МП має шість 8-розрядних програмно-доступних регістрів В, C, D, E, H, L, які можуть використовуватися цілком окремо і незалежно. Крім цього, ці регістри можуть використовуватися як три 16-розрядні програмно-доступні пари BC, DE, HL, які також можуть позначатися тільки першими буквами, тобто В, D, H.
Регістрові пари B, D, H звичайно використовуються в ролі регістрів-вказівників при непрямій адресації, коли виконуються арифметичні, логічні операції та операції. При цьому основною регістровою парою є пара H.
При додаванні 16-розрядних слів регістрові пари B, D, H використовуються для їх зберігання. При цьому вміст будь-якої пари побайтно може сумуватися в АЛП з вмістом регістрової пари H і результат заноситься в регістрову пару H. Тобто при додаванні 2-байтових чисел регістрова пара H виконує роль акумулятора.
Схема інкремента/декремента (СІД) – пристрій, який дозволяє без участі АЛП збільшити або зменшити на одиницю вміст одного з РЗП, РС або SP.
Пристрій керування (ПК) відповідно до дешифрованих кодів команд та зовнішніх керувальних сигналів генерує керувальні сигнали для всіх блоків структурної схеми.
Для ПК дуже важливими є вхідні лінії мікропроцесора, що з’єднують її з генератором тактових імпульсів, які синхронізують роботу МП. Вхідні тактові сигнали можуть бути однофазними або двофазними.
Схема управління генерує керуючі сигнали у відповідності з початковою фазою синхросигналів F1 чи F2 і формує в ці моменти часу сигнали для зовнішніх по відношенню до МП компонентів, таких як, наприклад, пам’ять або пристрої вводу-виводу інформації.
В ролі генератора тактових імпульсів звичайно використовується генератор, стабілізований кварцовим резонатором. Сам генератор може бути зовнішнім по відношенню до МП, як, наприклад, це є у мікропроцесора і8080 (КР580ІК80А), або внутрішнім – як це є у мікропроцесора і8085 (КМ1821ВМ85), хоча сам кварцовий резонатор і тут є зовнішнім.
Внутрішня шина даних МП – це 8-розрядна шина з 8 провідних ліній, що з’єднує між собою АЛП і внутрішні регістри та забезпечує передачу даних в середині МП.
Кожен функціональний компонент МП завжди підключений до ВШД, однак скористатися нею може лише після одержання відповідного сигналу від схеми управління.
Більшість компонентів мають з ВШД двосторонній зв’язок, тобто вони можуть і посилати дані на шину і приймати їх з шини. Зрозуміло, ВШД – це лінія двостороннього зв’язку, по якій передаються слова даних, а не окремі біти.
Лінії ШК будуть розглянуті в подальшому.
Програмною моделлю МП називається сукупність програмно доступних регістрів, тобто тих регістрів, вміст яких можна зчитати або змінити за допомогою команд. Програмну модель МП складають акумулятор, РЗП, регістр прапорців, вказівник стеку та вказівник команд.
Основні способи адресації до даних у мікропроцесорах
Не дивлячись на те, що різні МП мають різні СК, тобто набори команд, способи адресації до даних, що в цих наборах команд використовуються, одні і ті ж.
Способом адресації прийнято називати спосіб звертання до даних. Є багато найрізноманітніших способів адресації до даних. Розглянемо основні з них, які найчастіше використовуються у 8-розрядних МП.
Неявна адресація – при такій адресації місцезнаходження операнду і результату фіксоване. Наприклад команда RAL – циклічний зсув акумулятора вліво, або XСHG – поміняти вміст регістрів HL і DE.
Безпосередня адресація. При безпосередній адресації дані задає програміст при записі команди. Код операції команди з безпосередньою адресацією розташовується як звичайно в першому байті. Наступні байти є тими даними (операндом), які задає програміст.
Наприклад, команда завантаження регістра Е МП безпосередніми даними 5СН має вигляд MVI E, 5CН. Формат такої команди представлений на рис. 2.6.

Рис. 2.6. Формат команди MVI E, 5CН
Формат команди завантаження регістрової пари Н, наприклад, і8080 двохбайтовим числом 801FН складає три байти (рис. 2.7). Причому зразу за кодом операції розташовується молодший байт, а за ним – старший.

Рис. 2.7. Формат команди LXI H, 801FН
В цій команді в першому байті код регістрової пари задається в п’ятому і четвертому розрядах. Коди регістрових пар вказані в таблиці
Регістрова пара
Код

B
00

D
01

H
10

SP
11

Таким чином, при використанні безпосередньої адресації дані розміщені в команді. Інколи може виникнути необхідність розташовувати дані в пам’яті і мати можливість адресуватися до них. Тоді використовується пряма адресація.
Пряма регістрова використовується тоді, коли необхідно адресуватися до даних за допомогою однобайтової команди. Однобайтові команди, звичайно, адресуються до даних, розташованих у внутрішніх регістрах або регістрових парах МП.
Наприклад, однобайтова команда MOV B, C переміщення даних з регістра С в регістр В складається з коду операції, коду приймача даних В і коду джерела даних С. Адреси регістрів в цій команді вказані неявно (тобто в першому байті команди, який вважається кодом операції). Іноді говорять, що адреси вбудовані в команду. Формат команди MOV B, C подано на рис.2.8.

Рис. 2.8. Формат команди з неявною адресацією MOV B, C
В таких командах, наприклад в МП і8080, використовують наступне кодування адрес (номерів) регістрів.
Регістр
Код
Регістр
Код

В
000
H
100

C
001
L
101

D
010
M(HL)
110

E
011
A
111

В таблиці M(HL) не є внутрішнім регістром МП. Це комірка пам’яті М (memory), адреса якої знаходиться в регістровій парі H МП.
Однобайтові команди виконуються швидше будь-яких інших, бо для вибирання однобайтової команди з пам’яті треба найменше часу.
В командах з прямою адресацією у першому байті вказується код операції. Другий і третій байт призначений для задання адреси комірки пам’яті або пристрою вводу-виводу, в яких знаходяться дані. Команди з прямою адресацією можуть мати формат довжиною в два або три байти. Наприклад, команда запису вмісту регістрової пари Н за адресою, вказаною у другому і третьому байтах команди, SHLD 415F (store HL direct). Формат команди три байти: код операції – перший байт, адреса пам’яті - другий і третій байти. Або відома вже нам команда IN 25. Формат команди два байти. Перший – код операції, другий – адреса зовнішнього пристрою.
Непряма адресація використовується як спосіб адресації до пам’яті командою тільки в одне машинне слово. Інколи її називають непрямою регістровою. Тут в одному байті команди крім коду операції вказується ще номер (код) регістрової пари, вміст якої є адресою місцезнаходження даних в пам’яті.
Прикладом може бути команда завантаження комірки пам’яті вмістом акумулятора МП з використанням непрямої адресації через регістрову пару В: STAX B (store A M(B)). Формат команди - один байт. По цій команді вміст акумулятора завантажується в комірку пам’яті М, адреса якої вказана в регістровій парі В.
Непряма адресація зручна при звертанні до часто використовуваної області пам’яті, а найчастіше тоді, коли дані хочемо організувати у вигляді набору або списку. Даючи приріст вмісту регістра В можемо послідовно завантажувати дані в пам’ять.
Стекова адресація використовується тоді, коли є необхідність при виконанні програми звертатися до підпрограми. Крім того, якщо для виконання основної програми необхідно зберегти вміст регістрів МП, то їх на час виконання підпрограми поміщають в стек. Прикладом може служити команда PUSH H. Команда однобайтова. По ній вміст регістрової пари Н заноситься в стек, а по команді РОР Н вміст регістрової пари Н може бути відновлений. Адреса пам’яті, відведеної під стек, задається регістром, що називається вказівником стеку SP.
В МП більшої розрядності використовують ще й інші види адресації. Розглянемо деякі з них.
Автоінкрементна та автодекрементна адресація. Тут адреса операнда визначається так, як і при неявній адресації вмістом якоїсь регістрової пари, але цей вміст попередньо збільшується або зменшується на 1.
Розглянуті вище способи адресації не дозволяють переміщати програми в пам’яті без модифікації адрес. Це дозволяють робити базова та відносна адресації.
Базова адресація. Тут адреса операнда обраховується додаванням вмісту базового регістра, з додатнім або від’ємним зміщенням до адреси, вказаної в команді.
Відносна адресація. В цьому випадку адреса операнда формується додаванням базової адреси (базового зміщення) до адреси, вказаної в команді. За базову адресу звичайно приймають вміст програмного лічильника.
Для створення враження (ілюзії) необмеженої ємності пам’яті використовують віртуальну адресацію.
Віртуальна адресація. Тут операційна система створює таблицю відповідності віртуальних (у зовнішній пам’яті) і фізичних (у внутрішній пам’яті) сторінок. Якщо здійснюється звертання до фізичної сторінки, якої нема в основній пам’яті (внутрішній), то вона вилучається з зовнішньої пам’яті і завантажується в основну, а непотрібна сторінка з внутрішньої пам’яті ховається у зовнішню.
ЛЕКЦІЯ № 3
МП комплект серії КР580. МП типу КР580ІК80А. Умовне позначення, структура та призначення виводів. Формати даних і команд.
Види адресації.
Мікропроцесорний комплект серії КР580 (і82) призначений для побудови МПП будь-якої конфігурації на основі МП і8080 та і8085. МС цього МПК використовуються також і для побудови МПП на основі 16-розрядних МП і8086/88.
МПК серії КР580 представляє собою набір функціонально закінчених НВІС, призначених для використання в пристроях управління, автоматики та обробки даних.
Мікросхеми характеризуються наступними параметрами:
- діапазон робочих температур МС МПК КР580 – від -10 до +70 С; а К580 – від -60 до +85С;
- потужність споживання: КР580ІК80 – 1,25Вт; К580ВМ80 – 1,7Вт; решта мікросхем – 0,7Вт;
- напруга живлення: КР580ІК80А, К580ВМ80 – +5В, +12В, -5В; решта мікросхем – +5В;
- допустиме відхилення напруги живлення МС: КР580 – + 5%; 580 – + 10%;
- навантажувальна здатність кожного виходу МС – один вхід елементу ТТЛ;
Склад МПК КР580

МП і8080 являє собою однокристальний 8-розрядний МП з фіксованими розрядністю та системою команд (78), виконаний по n-канальній МДН технології. Він має 16-розрядну ША і 8-розрядну ШД. Адресна шина забезпечує адресацію пам’яті об’ємом до 64 КБайт та 256 пристроїв вводу-виводу. Номінальне значення тактової частоти - 2 МГц, число рівнів переривань – 8.
МП використовує шість способів адресації (неявну, пряму, пряму регістрову, безпосередню, непряму регістрову та стекову), які розглянуті вище.
Умовне позначення МП і8080/КР580ІК80А на принципових схемах

Формати даних і команд
МП працює з пам’яттю, що має байтову організацію, тобто структура або формат даних, які обробляє МП складає один байт. Інтерпретація цього байту залежить від програміста. Байт машинного слова можна інтерпретувати як:
1) ціле додатне число в прямому коді, що може змінюватися в діапазоні від 0 до 255, тобто
00010 = 000000002 = 00Н
( ( (
25510 = 111111112 = FFН;
2) число із знаком в доповняльному коді, в якому старший розряд є знаковим і кодується 0 для додатних чисел та 1 для від’ємних чисел, а решта сім молодших розрядів визначають величину числа, яке може змінюватися в діапазоні від +127 до –128. При цьому додатне число в доповняльному коді співпадає з таким же числом в прямому коді. Діапазон зміни чисел у цьому випадку в різних системах числення можна подати так
12710 = 011111112 = 7FH;
( ( (
010 = 000000002 = 00Н;
-110 = 111111112 = FFH;
( ( (
-12810 = 100000002 = 80H;
3) двохрозрядне двійково-десяткове число без знаку, діапазон зміни якого лежить в межах від 0 до 99
0010 = 000000002/10 = ООН;
( ( (
9910 = 100110012/10 = 99Н;
4) байт логічних даних.
При виконанні деяких операцій числа можуть представлятися в 2-байтовій формі в прямому або доповняльному коді. При використанні доповняльного коду діапазон зміни чисел лежить в межах від +32767 до -32768.
Всі арифметичні операції (додавання, віднімання, приріст та зменшення на одиницю) виконуються МП за правилами двійкової арифметики над числами в двійковому коді.
Мікропроцесор може обробляти інформацію не тільки в двійкових кодах, але й у двійково-десяткових кодах.
Тому при опрацюванні двійково-десяткових чисел (виконанні над ними арифметичних операцій) двійковий результат необхідно перетворювати в двійково-десятковий. В МП це робиться за допомогою команди двійково-десяткової корекції DAA (decimal adjust accumulator – десяткова корекція акумулятора), яку програміст ставить після кожної команди виконання арифметичної операції. Команда DAA коректує результат у двох випадках: 1) якщо значення тетради перевищує число 9; і 2) якщо було перенесення 1 з тетради. Корекція здійснюється додаванням до тетради числа 6 у двійковій формі.
Результатом виконання МП операції є число, яке заноситься в акумулятор, Але крім цього в регістрі стану F зберігається байт ознак результату, занесеного в А. Значення окремих розрядів регістра F розглянуто вище.
Формат команди залежить від типу команди. В залежності від способу адресації до даних команди мікропроцесора можуть бути однобайтовими, 2-байтовими та 3-байтовими. В команді будь-якого формату перший байт команди це – завжди код операції. В 2-байтовій команді 2-й байт команди це – дані або адреса. В 3-байтовій команді 2-й і 3-й байт також завжди дані або адреса, причому після коду операції завжди іде молодший байт даних або адреси, а потім старший байт.
Багатобайтові команди зберігаються в сусідніх комірках пам’яті і адресуються по першому байту, в якому закладена інформація про формат команди.
До цього можна додати те, що 16-розрядний БА та 8-розрядний БД мають на виході буфери з трьома станами. Їх третій стан призначений для відключення МП від СШ в режимі прямого доступу до пам’яті ЗП тобто в режимі захоплення шин ЗП, який бере на себе керування СШ.
Класифікація виводів МП і8080 за призначенням
Через виводи мікропроцесора здійснюється приймання та видача даних, видача адрес, а також приймання та видача синхронізуючих та керуючих сигналів.
За призначенням виводи МП і8080 можна розділити на 7 груп. Розглянемо їх.
1. Виводи ШД:
D7…D0 – 8 тристабільних входів/виходів для передачі даних до МП або від нього.
2. Виводи ША:
А15…А0 – 16 тристабільних виходів для видачі МП адресних сигналів, що однозначно визначають елемент МПП, з яким МП буде обмінюватися даними.
3. Виводи синхронізації :
F1, F2 – 2 входи двох послідовностей тактових імпульсів, що не перекриваються. Приклад такої послідовності подано на рис.
SYNC – вихід сигналу синхронізації, що означає початок кожного машинного циклу (МЦ) команди. МЦ – це час необхідний МП, щоб звернутись до пам’яті або ЗП. Цей сигнал разом з байтом стану несе інформацію про те, що буде робити МП в даному МЦ.

RESET – вхід сигналу ВСТАНОВЛЕННЯ МП У ПОЧАТКОВИЙ СТАН. По закінченні цього сигналу (його тривалість не менше трьох періодів синхроімпульсів F1 або F2) лічильник команд РС встановлюється в нульовий стан.
4. Виводи управління очікування:
READY – вхід сигналу ГОТОВНІСТЬ, який вказує готовий (READY = 1) чи ні (READY = 0) ЗП або пам’ять до обміну інформацією. Використовується для організації обміну з ЗП чи пам’яттю, в яких швидкодія більш низька, ніж в МП. Дозволяє організувати покроковий, покомандний або з зупинкою на заданій адресі режими роботи МП.
WAIT – вихід сигналу, який вказує, що МП знаходиться в стані ОЧІКУВАННЯ (WAIT = 1).
5. Виводи управління шиною даних:
– вихід сигналу управління записом інформації в пам’ять або ЗП. Активний низький рівень сигналу ( = 0) означає, що МП видав дані на шину даних D7. . .D0.
DBIN – є виходом сигналу, який вказує, що шина даних D7 . . . D0 знаходиться в режимі приймання даних з пам’яті або ЗП (DBIN = 1).
6. Виводи управління переривання:
INT – вхід сигналу ЗАПИТ ПЕРЕРИВАННЯ. Сигнал поступає від ЗП, що просять в МП обміну в режимі ПЕРЕРИВАННЯ. Коли INT = 1 від ЗП прийшов запит на переривання. Чи буде сприйнято запит залежить від стану виводу INTЕ.
INTE – вихід сигналу ДОЗВІЛ ПЕРЕРИВАННЯ (INTE = 1), який вказує, що МП готовий сприймати сигнали ЗАПИТу ПЕРЕРИВАННЯ. Після сприймання сигналу ЗАПИТ ПЕРЕРИВАННЯ МП переводить вихід INTE в стан 0. Після цього МП стає нечутливим до інших сигналів ЗАПИТу ПЕРЕРИВАННЯ. Відновити цю чутливість можна лише програмним шляхом. Вихід INTE використовується для управління апаратними засобами формування сигналу запиту на переривання.
7. Виводи управління захопленням шин в режимі ПДП:
HOLD – вхід сигналу ЗАПИТ ЗАХОПЛЕННЯ ШИН D7. . .D0, А15. . .А0 та ШУ ЗП. При сприйнятті цього сигналу (HOLD = 1) МП відключається від цих шин (його вихідні регістри БА та БД переходять у третій стан), в результаті цього шини можуть використовуватися ЗП.
HLDA – вихід сигналу ПІДТВЕРДЖЕННЯ ЗАХОПЛЕННЯ ШИН (HLDA = 1), що вказує про те, що МП відключився від шин, і вони можуть використовуватися ЗП.
ЛЕКЦІЯ № 4
Система команд МП і8080/КР580ІК80А
З точки зору програміста МП представляє собою множину програмно-доступних регістрів, які можуть бути джерелом або приймачем даних і над вмістом яких можуть виконуватися вказані в командах операції.
В МП і8080 програмно-доступними є: 8-розрядні регістри A, B, C, D, E, H, L, окремі розряди (ознаки) регістру стану F; 16-розрядні - регістр слова стану програми PSW (Program Status Word) (регістри F і A), регістрові пари BC, DE, HL, вказівник стека SP, лічильник команд PC, а також тригер дозволу переривання INTE.
В залежності від характеру операцій, що виконуються по команді, команди МП і8080 розбивають на три групи:
1) група команд переміщення;
2) група арифметичних та логічних команд;
3) група команд управління.
Кожну команду будемо описувати за такою схемою:
- мнемокод та ім’я команди;
- опис операцій, які реалізуються командами;
- кількість байт/тактів;
- пояснення символічного запису та деталізація умов виконання команди.
Символіка, що використовується при описуванні команд:
RBD (D-destination) – 8-розрядний регістр (А, B, C, D, E, H, L) в який пересилається результат;
RBS (S-source) – 8-розрядний регістр (А, B, C, D, E, H, L) з якого береться операнд (джерело);
RWD – 16-розрядний регістр (регістрова пара B, D, H, SP/PSW) в який пересилається результат;
RWS – 16-розрядний регістр (регістрова пара B, D, H, SP/PSW) з якого береться операнд;
RW – 16-розрядний регістр B, D, H, SP/PSW;
RW* – 16-розрядний регістр (ВС, DE);
DADDR – 16-розрядна адреса;
ADDR – 8-розрядна адреса ЗП;
DATA8 – 8-розрядна константа;
DATA16 – 16-розрядна константа;
( – оператор пересилання;
( – оператор обміну;
high(DATA16) – старший байт 16-розрядних даних;
low(DATA16) – молодший байт 16-розрядних даних;
RW:H (register high) – старший регістр в парі;
RW:L (register low) – молодший регістр в парі;
M(RW) – комірка пам’яті, адреса якої вказана в регістровій парі RW;
Група команд переміщення
Команди цієї групи здійснюють обмін даними між регістрами мікропроцесора та пам’яттю МПС. Розряди регістра ознак F не змінюються при виконанні цих команд.
a)однобайтові переміщення;
MOV RBD, RBS (move register) - передати вміст регістра RBS в регістр RBD.
(RBD) ( (RBS) (1/5)
MOV RBD, M (move memory) - переслати з пам’яті.
(RBD) ( M(HL) (1/7)
В регістр RBD передається вміст комірки пам’яті, адреса якої знаходиться в регістровій парі HL.
MOV M, RBS (move to memory) - переслати в пам’ять.
M(HL) ( (RBD) (1/7)
Вміст регістра RBS, передається в комірку пам’яті М за адресою, що визначається вмістом регістрової пари HL.
MVI RBD, DATA8 (move immediate) - переслати безпосередні дані
(RBD) ( DATA8 (2/7)
Завантажити 8-розрядний регістр RBD 8-розрядною константою.
MVI M, DATA8 (move to memory immediate) - передати в пам’ять безпосередній операнд
M(HL) ( DATA8 (2/10)
Вміст другого байту команди (8-розрядної константи DATA8) передається в комірку пам’яті, адреса якої знаходиться в регістровій парі HL.
LDAX RW* (load A indirect) - завантажити акумулятор А вмістом комірки пам’яті з непрямою регістровою адресацією
(А) ( M(RW*) (1/7)
Вміст комірки пам’яті, адреса якої є вмістом регістрової пари RW*, завантажується в регістр А.
STAX RW* (store A indirect) - запам’ятати вміст акумулятора в комірці пам’яті з непрямою регістровою адресацією
M(RW*) ( (А) (1/7)
STA DADDR (store A direct) - запам’ятати вміст акумулятора А в комірці пам’яті М з прямою адресацією
M(DADDR) ( (A) (3/13)
Вміст акумулятора А запам’ятати в комірці пам’яті, адреса якої (DADDR) вказана у другому та третьому байтах команди.
LDA DADDR (load direct) - завантажити акумулятор А вмістом комірки з прямою адресацією
(A) ( M(DADDR) (3/13)
Вміст комірки пам’яті, адреса якої (DADDR) вказана у другому та третьому байтах команди, завантажується в акумулятор.
IN ADDR (input) - ввести
(A) ( (ADDR) (2/10)
Байт інформації, розташований в порту вводу-виводу з адресою (ADDR), що вказана у другому байті команди, завантажується в акумулятор.
OUT port (output) - вивести
(ADDR) ( (A) (2/10)
Вміст акумулятора завантажується в порт вводу-виводу, адреса якого (ADDR) задана в другому байті команди.
б)двобайтові переміщення:
LHLD ADDR (load H and L direct) - завантажити регістрову пару HL прямо.
(L) ( M(DADDR) (3/16)
(H) ( M(DADDR+1)
Вміст комірки пам’яті М з адресою DADDR завантажується в регістр L, а вміст комірки пам’яті М з адресою DADDR+1 завантажується в регістр H.
SHLD DADDR (store H and L direct) - запам’ятати вміст регістрів H та L прямо.
M(DADDR) ( (L) (3/16)
M(DADDR+1) ( (H)
Вміст регістра L запам’ятовується в комірці пам’яті M з адресою DADDR, а вміст регістра H - в комірці пам’яті М з адресою DADDR+1.
LXI RWD, DATA16 (load register pair immediate) - завантажити безпосередньо 16-розрядні дані в регістрову пару
(RWD:L) ( low(DATA16) (3/10)
(RWD:H) ( high(DATA16)
Другий байт команди передається в молодший регістр RWD:L регістрові пари, а третій байт - передається в старший регістр RWD:H регістрової пари
PUSH RW (push) - занести в стек
M(SP-1) ( (RW:H) (1/11)
M(SP-2) ( (RW:L)
(SP) ( (SP) -2
Вміст регістрової пари RW або слова PSW побайтно заноситься в стек.
POP RW (pop) – виштовхнути із стека
(RW:L) ( M(SP) (1/10)
(RW:H) ( M(SP+1)
(SP) ( (SP)+2
Два верхні байти вмісту стека заносяться у відповідну регістрову пару, або в регістри A and F (PSW).
PCHL (move H and L to PC) – переслати вміст регістрової пари H в лічильник команд PC.
(PC:H) ( (H) (1/5)
(PC:L) ( (L)
SPHL (move H and L to SP) - завантажити вказівник стека SP вмістом пари HL
(SP) ( (HL) (1/5)
Вміст регістрової пари H передається у вказівник стека SP. Команда використовується для встановлення початкової адреси стека.
XTHL (exchange stack top with H and L) – взаємно обміняти вміст стека і регістрової пари HL.
(L) ( (SP) (1/18)
(H) ( (SP+1)
Два верхніх елементи стека через регістри тимчасового зберігання пересилаються в регістрову пару HL, а вміст регістрової пари HL - у звільнені комірки в стеку.
XCHG (exchange H and L with D and E) – взаємно обміняти вміст регістрових пар DE та HL.
(H) ( (D) (1/4)
(L) ( (E)
Група арифметичних і логічних команд
Ця група команд керує виконанням арифметичних операцій над даними, що знаходяться в регістрах МП або в пам’яті. При виконанні цих команд формуються ознаки результату, які зберігаються в регістрі F. Команди логічних операцій реалізують порозрядні логічні операції над даними, розташованими в регістрах та в пам’яті. Цю групу команд можна розбити на дві підгрупи: команди операцій з двома операндами і команди операцій з одним операндом.
а) команди операцій з двома операндам.
Ці команди можуть бути однобайтними і двобайтними. Формат однобайтних команд має два 3-розрядних поля, в яких задається код операції (КОП) та джерело (S-source) одного з операндів. Другим джерелом даних є акумулятор А:
ADD RBS (add register) - додати з регістром
(A) ( (A) + (RBS) (1/4)
ADD М (add register) - додати з коміркою пам’яті
(A) ( (A) + M(HL) (1/7)
ADC RBS (add register with carry) - додати з регістром і з переносом
(А) ( (А) + (RBS) + (C) (1/4)
ADC M (add register with carry) - додати з коміркою пам’яті і з переносом
(А) ( (А) + M(HL) + (C) (1/7)
SUB RBS (subtract register) - відняти вміст регістра
(А) ( (А) - (RBS) (1/4)
SUB M (subtract register) - відняти вміст комірки пам’яті
(А) ( (А) – M(HL) (1/7)
SBB RBS (subtract register with borrow) - відняти вміст регістра з позикою
(A) ( (A) - (RBS) - (C) (1/4)
SBB M (subtract register with borrow) - відняти вміст комірки пам’яті з позикою
(A) ( (A) – M(HL) - (C) (1/7)
ANA RBS (AND register) – логічне I з регістром
(A) ( (A) & (RBS) (1/4)
ANA M (AND register) – логічне I з коміркою пам’яті
(A) ( (A) & M(HL) (1/7)
XRA RBS (exclusive OR register) - додавання по модулю 2 з регістром
(A) ( (A) ( (RBS) (1/4)
XRA M (exclusive OR register) - додавання по модулю 2 з коміркою пам’яті
(A) ( (A) ( M(HL) (1/7)
ORA RBS (OR register) - логічне АБО з регістром
(А) ( (A) || (RBS) (1/4)
ORA RBS (OR register) - логічне АБО з коміркою пам’яті
(А) ( (A) || M(HL) (1/7)
CMP RBS (compare register) - порівняти з регістром
(S), (Z), (AC), (P), (C) ( (А) - (RBS) (1/4)
Порівняти вміст акумулятора з вмістом 8-розрядного регістра RBS. Порівнювані величини не змінюються. Якщо прапорець Z = 1, величини рівні; С = 1, Z=0 – вказують, що вміст акумулятора менше, ніж RBS, коли С=0, Z=0 – більше.
CMP M (compare register) - порівняти з коміркою пам’яті
(S), (Z), (AC), (P), (C) ( (А) – М(HL) (1/7)
Порівняти вміст акумулятора з вмістом комірки пам’яті, адреса якої в регістровій парі HL.
DAD RW (add register pair to H and L) - додати вміст регістрової пари до пари HL
(HL) ( (HL) + (RW) (1/10)
б) Команди з безпосередньою адресацією:
ADI DATA8 (add immediate) – додати безпосередньо
(А) ( (А) + DATA8 (2/7)
ACI DATA8 (add immediat with carry) – додати безпосередньо із переносом
(А) ( (A) + DATA8 + (C) (2/7)
SUI DATA8 (subtract immediate) - відняти безпосередньо
(A) ( (A) - DATA8 (2/7)
SBI DATA8 (subtract immediate with borrow) - відняти безпосередньо із позикою
(A) ( (A) - DATA8 - (C) (2/7)
ANI DATA8 (AND immediate) - логічне І з безпосереднім операндом
(А) ( (A) & DATA8 (2/7)
ORI DATA8 (OR immediate) - логічне АБО з безпосереднім операндом
(A) ( (A) || DATA8 (2/7)
XRI DATA8 (exlusive OR immediate) – виключаюче АБО з безпосереднім операндом
(A) ((A) ( DATA8 (2/7)
CPI DATA8 (compare immediate) - порівняти з безпосереднім операндом
(S), (Z), (AC), (P), (C) ( (А) – DATA8 (2/7)
Порівняти вміст акумулятора з 8-розрядною константою.
Команди операцій з одним операндом:
INR RBD (increment register) – збільшити на 1 вміст регістра
(RBD) ( (RBD) + 1 (1/5)
INX RW (increment register pair) – збільшити на 1 вміст пари регістрів
(RW) < (RW) + 1 (1/5)
INR M (decrement register) – збільшити на 1 вміст комірки пам’яті
M(HL) < M(HL) + 1 (1/10)
DCR RBD (decrement register) – зменшити на 1 вміст регістра
(RBD) < (RBD) – 1
DCX RW (decrement register pair) – зменшити на 1 вміст пари регістрів
(RW) < (RW) – 1 (1/5)
DCR M (decrement register) – зменшити на 1 вміст комірки пам’яті
M(HL) < M(HL) – 1 (1/10)
DAA (decimal adjust accumulator) – виконати десяткову корекцію вмісту акумулятора А (1/4)
Команда десяткової корекції (DАA) результат звичайного (двійкового) додавання двійково–десяткових чисел перетворює в двійково–десятковий код. Корекція здійснюється наступним чином:
а) якщо величина чотирьох молодших розрядів вмісту акумулятора А більше 9 або ознака АС встановлена, то до вмісту акумулятора додається число 06H, при цьому відповідним чином змінюється ознаки регістра прапорців F?
б) якщо після цього величина чотирьох старших розрядів вмісту акумулятора А більша 9 або встановлений прапорець С регістра F, то до вмісту акумулятора додається число 60H.
RLC (rotate left) – циклічно зсунути вліво вміст акумулятора
(An+1) < (An); (A0) < (A7); (C) < (A7) (1/4)
Вміст акумулятора А зсувається циклічно на 1 розряд в бік старших розрядів (вліво). В нульовий розряд акумулятора A0 та прапорець С регістра F поступає значення старшого розряду акумулятора A7.
RRC (rotate right) – циклічно зсунути вправо
(An) < (An+1); (A7) < (A0); (C) < (A0) (1/4)
RAL (rotate left through carry) – зсунути вліво через прапорець С
(An+1) < (An); (C) < (A7); (A0) < (C) (1/4)
RAR (rotare right through carry) – зсунути вправо через прапорець С
(An) < (An+1); (A7) < (C); (C) < (A0) (1/4)
СМА (complement accumulator) – інвертувати вміст акумулятора
(А) < () (1/4)
СMC (complement carry) – інвертувати біт переносу С
(C) < () (1/4)
STC (set carry) – встановити біт переносу С
(C) < 1 (1/4)
Група команд управління
Основне призначення команд цієї групи – це зміна ходу обчислювального процесу, тобто реалізація переходів у програмі. В цю групу входять команди безумовного та умовного переходів (JMP), безумовного та умовного звертання до підпрограм (CALL), безумовного та умовного повернення з підпрограм (RET). При виконані цих команд змінюється вміст програмного лічильника РС.
Команди встановлення – скидання тригера (INTE) – EI, DI здійснюють програмним шляхом дозвіл або заборону переривання. Команда зупину (HLT) зупиняє виконання команд.
Команда NOP є холостою і не виконує ніяких операцій, окрім збільшення вмісту програмного лічильника РС на +1.
В командах безумовних переходів в лічильник команд РС заноситься адреса, що знаходиться в другому третьому байтах команди. В командах звертання до підпрограми (CALL ADDR) спочатку адреса наступної команди (адреса повернення), що міститься в РС, заноситься в стек, а вже потім в РС заноситься адреса переходу (адреса підпрограми) з другого та третього байтів команди. В командах повернення з програми (RET) в РС зі стека заноситься адреса повернення.
В командах умовних переходів перехід в програмі здійснюється при виконані умови переходу. Умови, з якими оперують команди умовних переходів МП і8080 такі:
NZ (no zero) – ненульовий результат (прапорець Z = 0);
Z (zero) – нульовий результат (прапорець Z = 1);
NC (no carry) – відсутність переносу, С = 0;
C (carry) – перенос (позика), C = 1;
PO (parity odd) – непарне число 1 в результаті (прапорець P = 0);
PE (parity even) – парне число 1 в результаті, P = 1;
P (plus) – результат додатній, S = 0;
M (minus) – результат від’ємний, S = 1;
Безумовні команди.
JMP DADDR (jump) – перейти безумовно.
(PC) < DADDR (3/10)
CALL DADDR (call) – викликати підпрограму
M(SP-1) < (PC:H) (3/17)
M(SP-2) < (PC:L)
(SP) < (SP) - 2
(PC) < DADDR
RET (return) – повернутися в основну програму
(PC:L) < M(SP) (1/10)
(PC:H) < M(SP+1)
(SP) < (SP) + 2
Команди умовного переходу.
J condition DADDR (conditional jump) – перейти по умові. Сама умова задається полем ССС в форматі коду команди. Формат команди 3 байти
Варіант виконання команди
Виконувана дія
Байт/Тактів

JNZ DADDR (jump on no zero) – перехід по ненульовому результату (Z=0)
Якщо Z=0 (PC) < DADDR,
якщо Z=1 (PC) < (PC) + 3
3/10

JZ DADDR (jump on zero) – перехід по нульовому результату (Z=1)
—”—
—”—

JNC DADDR (jump on no carry) – перехід по відсутності переповнення (C=0)
—”—
—”—

JC DADDR (jump on carry) –перехід по переповненню (C=1)
—”—
—”—

JPO DADDR (jump on parity odd) – перехід по непарному результату (P=0)
—”—
—”—

JPE DADDR (jump on parity even) – перехід по парному результату (P=1)
—”—
—”—

JP DADDR (jump on positive) – перехід по додатному результату (S=0)
—”—
—”—

JM DADDR (jump on minus) – перехід по від’ємному результату (S=1)
—”—
—”—


Умовний перехід на підпрограму.
C condition DADDR (condition call) – викликати по умові. Формат команди 3 байти. Умова кодується 3–розрядним полем ССС в першому байті команди по аналогії з командами Jump condition DADDR.
Варіант виконання команди
Виконувана дія
Байт/Тактів

СNZ DADDR (jump on no zero) – виклик по ненульовому результату (Z=0)
Якщо Z = 0 M(SP-1) < (PC:H) M(SP-2) < (PC:L)
(SP) < (SP) - 2
(PC) < DADDR,
якщо Z = 1 (PC) < (PC) + 3
Якщо Z = 0 3/17,
якщо Z = 1
3/11

СZ DADDR (jump on zero) – виклик по нульовому результату (Z=1)
—”—
—”—

СNC DADDR (jump on no carry) – перехід по відсутності переповнення (C=0)
—”—
—”—

СC DADDR (jump on carry) – виклик по переповненню (C=1)
—”—
—”—

СPO DADDR (jump on parity odd) – виклик по непарному результату (P=0)
—”—
—”—

СPE DADDR (jump on parity even) – виклик по парному результату (P=1)
—”—
—”—

СP DADDR (jump on positive) – виклик по додатному результату (S=0)
—”—
—”—

СM DADDR (jump on minus) – виклик по від’ємному результату (S=1)
—”—
—”—


Будь-яка команда виклику підпрограми, перш ніж передати управління першій команді підпрограми, заносить в стек адресу повернення, бо кожна підпрограма закінчується командою повернення RET.
Умовне повернення з підпрограми.
R condition (condition return) – вернутися по умові. Формат команди 3 байти. Умова кодується 3–розрядним полем ССС в першому байті команди по аналогії з командами Jump condition DADDR.
Варіант виконання команди
Виконувана дія
Байт/Тактів

RNZ DADDR (jump on no zero) – виклик по ненульовому результату (Z=0)

Якщо Z = 0 (PC:L) < M(SP)
(PC:H) < M(SP+1)
(SP) < (SP) + 2,
якщо Z = 1 (PC) < (PC) + 1
Якщо Z = 0 3/11,
якщо Z = 1
3/5

RZ DADDR (jump on zero) – виклик по нульовому результату (Z=1)
—”—
—”—

RNC DADDR (jump on no carry) – перехід по відсутності переповнення (C=0)
—”—
—”—

RC DADDR (jump on carry) – виклик по переповненню (C=1)
—”—
—”—

RPO DADDR (jump on parity odd) – виклик по непарному результату (P=0)
—”—
—”—

RPE DADDR (jump on parity even) – виклик по парному результату (P=1)
—”—
—”—

RP DADDR (jump on positive) – виклик по додатному результату (S=0)
—”—
—”—

RM DADDR (jump on minus) – виклик по від’ємному результату (S=1)
—”—
—”—


RST VVV (restart) – повторний пуск. Команда однобайтова.
M(SP-1) < (PC:H) (1/11)
M(SP-2) < (PC:L)
(SP) < (SP) – 2
(PC) < (VVV) * 8
При виконані цієї команди старший байт адреси наступної команди з лічильника команд PC заноситься в стек в комірку зовнішньої пам’яті за адресою (SP) – 1, а молодший байт в комірку пам’яті за адресою (SP) – 2. Вміст SP зменшується при цьому на 2.
Керування передається команді, адреса якої визначається як добуток вмісту 3–розрядного поля VVV команди RST на 8, тобто поле VVV заноситься в лічильник команд PC в розряди PC5 – PC3, тобто (PС) < 00000000 00VVV000. Команда RST VVV використовується для обслуговування запитів на переривання і завантажує в лічильник команд PC дійсну початкову адресу відповідної програми обслуговування переривання.
В команді переходу на підпрограму обслуговування переривань RST VVV адреса переходу вказується кодом VVV (так званий вектор переривань) в 3, 4, 5, розрядах коду операції. Значення коду VVV та відповідні адреси переходу приведені в таблиці
Код VVV
Адреса переходу
Назва вектора

000
0000Н
RST0

001
0008Н
RST1

010
0010Н
RST2

011
0018Н
RST3

100
0020Н
RST4

101
0028Н
RST5

110
0030Н
RST6

111
0038Н
RST7

Тобто є можливість звертатися до восьми підпрограм обслуговування переривань.
EI (enable interrupt) – переривання дозволене (1/4).
Команда безадресна, дозволяє роботу засобам переривання. По команді EI в мікропроцесорі встановлюється внутрішній тригер переривання INTE в 1.
DI (disenable interrupt) – переривання заборонено (1/4).
Команда забороняє роботу засобам переривання. Встановлює тригер INTE в 0.
HLT (halt) – стоп (1/7).
Команда безадресна. Вона блокує роботу лічильника команд PC і фіксує вміст всіх регістрів МП. Команда використовується для зупину роботи системи, для того, щоб можна було перевірити хід процесу обчислення та прийняти рішення про доцільність подальших обчислень.
NOP (no operation) – холоста команда (1/4).
Безадресна команда. Використовується для формування часових затримок.
ЛЕКЦІЯ № 5
Виконання команд МП КР580ІК80А, командний та машинний цикли,
типи МЦ, ідентифікація МЦ. Послідовність тактів в МЦ.
Часова діаграма виконання МЦ.
Виконання команд МП КР580ІК80А, командний та машинний цикли
Інтервал часу, протягом якого виконується команда, називається командним циклом (КЦ). В свою чергу командний цикл складається з підциклів вибирання та виконання. Оскільки формати команд МП i8080 різні, то тривалість підциклу вибирання команд не однакова і визначається кількістю байтів у форматі команди.
Так, наприклад, для вибирання однобайтової команди ADD B необхідно один раз звернутися до пам’яті, а для вибирання 3–байтової команди LDA 5F8C – три звертання.
Тривалість підциклу виконання також залежить від типу команди та способу адресації до даних.
При виконані, наприклад, команди ADD B з неявною (прямою регістровою) адресацією немає необхідності звертатися до пам’яті за операндом. Він розташований у регістрі МП, і тому команда виконується в циклі вибирання.
При виконанні команди SUB M з непрямою адресацією необхідно один раз звернутися до пам’яті за операндом, який адресується регістровою парою HL.
А щоб виконати CALL 5F2A необхідно двічі звернутися до пам’яті, щоб занести в стек 16–розрядну адресу повернення.
Таким чином тривалість КЦ визначається числом звертання до пам’яті або ЗП.
Інтервал часу, протягом якого здійснюється одне звертання до пам’яті або зовнішнього пристрою, називається машинним циклом (МЦ). Машинні цикли позначають буквою М, після якої ставлять його порядковий номер, наприклад, M1, M2, і т.д.
Отже, командний цикл МП складається з того чи іншого числа МЦ. Число МЦ в командному циклі може бути від 1 до 5.
В свою чергу машинний цикл розбивається на деяке число машинних тактів T. Тривалість такту визначається періодом тактових імпульсів F1, а саме, як інтервал часу між фронтами двох сусідніх імпульсів послідовності F1. За час одного такту мікропроцесором виконується одна елементарна дія (мікрооперація). Число тактів в машинному циклі може бути від 3 до 5.
Типи машинних циклів МП КР580ІК80А
Тип машинного циклу визначаться послідовністю дій в ньому. В МП і8080 є 10 типів машинних циклів.
1. В кожній команді першим машинним циклом завжди є цикл, що називається ВИБИРАННЯ. В цьому циклі з пам’яті за адресою, що вказує програмний лічильник PC, вибирається байт коду операції. В цьому ж циклі вміст програмного лічильника (вказівника команд) збільшується на 1.
Однобайтові команди з неявною (прямою регістровою) адресацією виконується протягом одного машинного циклу ВИБИРАННЯ.
2. Для того, щоб вибрати з пам’яті двох–трьохбайтову команду, крім циклу ВИБИРАННЯ потрібні ще один або два машинних цикли для читання другого і третього байтів команди. Ці цикли виконуються аналогічно циклу ВИБИРАННЯ, але їх прийнято називати циклами ЧИТАННЯ ПАМ’ЯТІ.
Цикл ЧИТАННЯ ПАМ’ЯТІ має місце також тоді, коли необхідно вибрати операнд при виконанні команд з непрямою та прямою адресаціями.
3. Запис даних або адрес на зберігання в пам’яті здійснюється в циклі ЗАПИС В ПАМ’ЯТЬ.
4-5. Звертання до стеку здійснюється в циклах ЧИТАННЯ СТЕКА та ЗАПИС В СТЕК. При цьому адреса пам’яті формується вказівником стека SP.
6-7. Для виконання команд вводу–виводу даних з ЗП (IN port, OUT port) використовуються цикли ВВІД та ВИВІД.
8. ПЕРЕРИВАННЯ – цикл для організації переривань, в цьому циклі з ЗП вводиться в МП команда RST VVV.
9. ЗУПИНКИ – в цьому МЦ МП переходить в стан ЗУПИН.
10. ПЕРЕРИВАННЯ ПРИ ЗУПИНЦІ.
Наведемо приклад послідовності машинних циклів в деяких командах:
MOV B, C – М1(ВИБИРАННЯ). Підцикл виконання в тому ж МЦ.
MOV M, D – М1(ВИБИРАННЯ), М2(ЗАПИС В ПАМ’ЯТЬ).
SUB M – M1 (ВИБИРАННЯ), M2 (ЧИТАННЯ ПАМ’ЯТІ);
IN 60 – М1(ВИБИРАННЯ), М2(ЧИТАННЯ ПАМ’ЯТІ), М3(ВВІД).
PUSH – М1(ВИБИРАННЯ), М2(ЗАПИС В СТЕК), М3(ЗАПИС В СТЕК).
STA 8210 – М1(ВИБИРАННЯ), М2(ЧИТАННЯ ПАМ’ЯТІ), М3(ЧИТАННЯ ПАМ’ЯТІ), М4(ЗАПИС В ПАМ’ЯТЬ).
CM – М1(ВИБИРАННЯ), М2(ЧИТАННЯ ПАМ’ЯТІ), М3(ЧИТАННЯ ПАМ’ЯТІ), М4(ЗАПИС В СТЕК), М5(ЗАПИС В СТЕК).
CALL 450A – M1 (ВИБИРАННЯ), M2 (ЧИТАННЯ ПАМ’ЯТІ), M3 (ЧИТАННЯ ПАМ’ЯТІ), M4 (ЗАПИС В СТЕК), М5 (ЗАПИС В СТЕК).
Послідовність, в якій ідуть машинні цикли в тій чи іншій команді, різна. Але першим машинним циклом будь–якої команди завжди є цикл ВИБИРАННЯ.
Ідентифікація МЦ
Кожен з десяти машинних циклів МП ідентифікується (розпізнається) по так званому байту стану (БС). Байт стану видається МП короткочасно на шину даних на початку кожного МЦ. Видача БС на шину даних супроводжується сигналом початку МЦ на виводі SYNC. Байт стану несе інформацію про наступні дії МП, і використовується для формування сигналів шини управління. Інформація, яку несе кожен біт байта стану розкрита в таблиці.
Розряд
шини
Призначення окремих бітів
байта стану
Опис сигналів байта стану побітно

D0
INTA
(підтвердження ПЕРЕРИВАННЯ)
INTA=1 означає, що МП готовий до виконання підпрограми переривання.

D1

(ЗАПИС/ВИВІД)
=0 означає, що виконуються машинні цикли, запис в пам’ять або вивід (МП виставив на ШД дані для пам’яті або ЗП).

D2
STACK
(СТЕК)
STACK=1 означає, на ША МП виставлено зміст вказівника стека, тобто адреса верхньої комірки стека (МП буде читати або записувати в стек).

D3
HLTA
(підтвердження ЗУПИНУ)
HLTA=1 означає, що МП перебуває в стані ЗУПИНКИ (виконується команда HLT).

D4
OUT
(ВИВІД)
OUT=1 означає, що на ША МП виставлена адреса зовнішнього пристрою, на який здійснюється вивід інформації (цикл ВИВІД).

D5
М1
М1=1 означає, що виконується перший машинний цикл – ВИБИРАННЯ, тобто МП приймає з ШД код команди.

D6
INPUT
(ВВІД)
INРUT=1 означає, що на ША МП знаходиться адреса зовнішнього пристрою, з якого здійснюється ввід інформації (цикл ВВІД). МП вводить дані з ЗП.

D7
MEMR
(ЧИТАННЯ ПАМ’ЯТІ)
MEMR=1 означає, що ШД МП буде використовуватись для ЧИТАННЯ даних з пам’яті (ЧИТАННЯ ПАМ’ЯТІ). МП приймає дані з пам’яті.

В таблиці представлені значення байта стану в кожному машинному циклі.
Байт стану
М1
М2
М3
М4
М5
М6
М7
М8
М9
М10


ВИБИРАННЯ
ЧИТАННЯ ПАМ’ЯТІ
ЗАПИС В ПАМ’ЯТЬ
ЧИТАННЯ СТЕКА
ЗАПИС В СТЕК
ВВІД
ВИВІД
ПЕРЕРИВАННЯ
ЗУПИН
ПЕРЕРИАННЯ
ПРИ ЗУПИНІ

D0
INTA
0
0
0
0
0
0
0
1
0
1

D1

1
1
0
1
0
1
0
1
1
1

D2
STACK
0
0
0
1
1
0
0
0
0
0

D3
HLTA
0
0
0
0
0
0
0
0
1
1

D4
OUT
0
0
0
0
0
0
1
0
0
0

D5
M1
1
0
0
0
0
0
0
1
0
1

D6
INPUT
0
0
0
0
0
1
0
0
0
0

D7
MEMR
1
1
0
1
0
0
0
0
1
0


Оскільки БС видається на ШД короткочасно, а саме, на протязі дії синхроімпульсу SYNC, то щоб байт стану можна було використовувати для формування сигналів шини управління (ШУ), його треба запам’ятовувати в спеціальному регістрі. Цей регістр прийнято називати системним контролером. Запам’ятовування байту стану здійснюють в момент дії імпульсу тактового генератора F1, що співпадає з синхроімпульсом початку МЦ на виводі SYNC. У МПК 82 (КР580) є спеціальна МС 8228 (КР580ВК28), що призначена для: буферування ШД, запам’ятовування байту стану та формування сигналів ШУ. Для цього, крім байта стану, використовуються сигнали МП DBIN та .
Послідовність тактів в машинному циклі
В кожному машинному циклі здійснюється звертання до пам’яті або до зовнішнього пристрою. Кожен машинний цикл складається з певної послідовності машинних тактів.
Розглянемо, які мікрооперації виконуються в кожному такті. Як і машинні цикли в команді, машинні такти в машинному циклі нумеруються.
В першому такті Т1 МП з лічильника команд РС або вказівника адреси (при непрямій адресації) виставляє на ША адресу пам’яті або зовнішнього пристрою. Разом з цим на ШД виставляється байт стану та формується синхросигнал на виводі SYNС.
Початок усіх цих дій співпадає з фронтом імпульсу тактового генератора послідовності F2.
Якщо пам’ять або зовнішній пристрій не готові до обміну (сигнал на виводі READY=0), поступив запит на прямий доступ до пам’яті (ПДП) (HOLD=1) або виконується команда зупину (HLT), то обмін інформацією здійснюватися не може. МП при цьому повинен перейти в режим ОЧІКУВАННЯ (WAIT), ЗАХОПЛЕННЯ ШИН, ЗУПИНКИ. Аналіз сигналів на виводах READY, HOLD, а також виконання команди HLT МП здійснює в такті Т2 по спаду імпульсу F2. Якщо результати аналізу такі, що обмін інформацією відбуватися не може, то мікропроцесор переходить до виконання тактів очікування Точік. Число цих тактів визначається зовнішніми ознаками, про які було сказано вище. В цьому ж такті Т2 вміст лічильника команд РС збільшується на 1 для адресації наступного байту команди, або наступної команди.
Якщо умова переходу до тактів Точік. не виконується або під впливом зовнішніх сигналів здійснюється вихід із стану ОЧІКУВАННЯ, ЗАХОПЛЕННЯ ШИН, ЗУПИН, то МП переходить до такту Т3. В такті Т3 в залежності від МЦ здійснюється звертання до пам’яті або ЗП.
В результаті цього в МП вводиться через ШД вводиться байт команди, адреса або дані. В цьому випадку на виводах або DBIN формуються активні керуючі сигнали.
Коли є необхідність в обробці даних, то МП переходить до тактів Т4 та Т5, або ж тільки до Т4. Все визначається типом команди та типом машинного циклу.
Розподіл дій по тактах в машинному циклі представлено в таблиці.
Такти
Дії

Т1
На ША видається адреса пам’яті або зовнішнього пристрою. На ШД виставляється байт стану. На виводі SYNC формується синхросигнал, що супроводжує байт стану. Початок цих дій по фронту сигналу F2.

Т2
По фронту сигналу F2 закінчується синхросигнал SYNC і в тактах запису та виводу на ШД виставляються дані. Аналізуються сигнали на виводах READY та HOLD по спаду сигналу F2, а також здійснюється контроль команди ЗУПИНУ (HLT). Лічильник команд одержує приріст на 1.

Т3
В МП вводиться або з нього виводиться через ЩД байт команди, адреса або дані. На виводах МП або DBIN формуються відповідні керуючі сигнали.

Т4, Т5
Виконується операція. Такти Т4, Т5 обидва разом або тільки Т5 можуть бути відсутні в машинному циклі.

Процес виконання команди ADD В по тактах проілюстрований на рис. 5.1.

Рис. 5.1.
В команді арифметичної операції ADD D в циклі ВИБИРАННЯ в такті Т1 на ША видається вміст лічильника команд РС, на ШД виставляється байт стану і через вивід SYNC з’являється синхросигнал. В такті Т2 вміст лічильника команд РС збільшується на 1, та аналізуються сигнали на входах READY, HOLD та команда HLT. В такті Т3 код команди виймається з пам’яті, в такті Т4 проводиться підготовка операндів до виконання операції: операнд з регістра В пересилається по ВШД в буферний регістр БР1, а операнд з акумулятора А – в буферний регістр БР2. В такті Т5, який виконується протягом такту Т1 наступної команди, здійснюється додавання операндів і результат заноситься в акумулятор А.
Часова діаграма виконання машинного циклу

Як видно з діаграми тривалість такту задається періодом синхроімпульсів F1, а внутрішні операції обумовлюються імпульсами послідовності F2. На початку кожного машинного циклу в такті Т1 з’являється синхросигнал на виводі SYNC, фронт якого в часі прив’язаний до фронту сигналу F2, а спад – до фронту наступного імпульсу F2. Протягом цього інтервалу на шину даних ШД видається байт стану мікропроцесора. В такті Т1 по фронту сигналу F2 на ША виставляється адреса пам’яті або зовнішнього пристрою, яка зберігається до появи фронту імпульсу F2 після такту Т3.
В такті Т2 по спаду імпульсу F2 МП аналізує зовнішні сигнали на виводах SYNC, HOLD, а також визначає, чи не виконується команда HLT.
Якщо на виводі READY або HOLD мають місце відповідно сигнали низького або високого рівня, або виконується команда HLT, то МП переходить до виконання тактів ОЧІКУВАННЯ. При цьому по фронту імпульсу F1 на виводі мікропроцесора WAIT з’являється сигнал високого рівня, що підтверджує стан ОЧІКУВАННЯ.
МП буде знаходитися в стані ОЧІКУВАННЯ до того часу, поки сигнал на виводі READY не перейде у високий стан або на виводі HOLD – у низький стан. А при виконанні команди HLT вивести МП із стану ОЧІКУВАННЯ можна або сигналом початкової установки RESET або сигналом запиту ПЕРЕРИВАННЯ INT.
Хай МП перебуває в стані ОЧІКУВАННЯ в результаті того, що сигнал на виводі READY має низький рівень. Вийти з цього стану він може лише після того, якщо сигнал на виводі READY перейде у високий стан. Якщо перехід сигналу на виводі READY у високий стан передує спаду імпульсу F2, то наступний за ним імпульс F1 переводить сигнал на виводі WAIT у стан низького рівня, і МП переходить до виконання такту Т3.
В такті Т3 МП здійснює обмін інформацією через шину даних з пам’яттю або зовнішнім пристроєм.
При читанні даних МП формує сигнал високого рівня на лінії DBIN, який починається по фронту імпульсу F2 в такті Т2, а закінчується по фронту імпульсу F2 в такті Т3. Його тривалість залежить кількості тактів.
При записі даних в пам’ять або при виводі їх на зовнішній пристрій дані з’являються на ШД по фронту імпульсу F2 в такті Т2. При цьому знімається з ШД інформація про байт стану МП. По фронту за цим імпульсу F1 на виводі формується сигнал низького рівня, який закінчується по фронту імпульсу F1 в такті, що наступає після такту Т3 (це може бути такт Т4 або тактТ1 наступного машинного циклу). Тривалість сигналу низького рівня на виводі також залежить від кількості тактів.
Такти Т4 і Т5 використовуються для виконання команди. Тому вони мають місце не у всіх машинних циклах. Всі машинні цикли обов’язково складаються з тактів Т1, Т2, Т3.
Після завершення машинного циклу М1 МП переходить до циклу М2 команди і т.д. або ж до циклу М1 наступної команди, якщо команда, що виконувалася, одноциклова (тобто складається тільки з циклу М1).
В останньому такті останнього машинного циклу МП перевіряє наявність ЗАПИТу на ПЕРЕРИВАННЯ (сигнал високого рівня на виводі INT). Якщо він є, то МП переходить до виконання циклу М1 спеціального типу. В цьому циклі вміст лічильника команд РС не збільшується на 1 і заноситься в стек, а на вивід мікропроцесора INTE виставляється сигнал низького рівня (ДОЗВІЛ ПЕРЕРИВАННЯ). Пристрій, що запросив переривання виставляє на шину даних (ШД) команду RST V, в якій вказано вектор переривання, тобто адресу підпрограми, яка буде виконуватися при обслуговуванні цього переривання.
ЛЕКЦІЯ № 6
Системна шина, різновидності, основні функції та їх реалізація, проектування шини адреси (ША), та шини даних (ШД).
Технічні засоби буферування шини (ША та ШД).
Формування шини управління (ШУ).
Засоби запам’ятовування байту стану,
логіка та технічні засоби формування сигналів ШУ.
Центральним процесором (ЦП) або просто процесором прийнято називати складову частину МП-пристрою або комп’ютера, яка є пристроєм управління та виконання арифметичних дій. Дуже часто сам МП, наприклад, і8080, не може виконувати функцій ЦП. Для побудови ЦП на його основі необхідні зовнішні технічні засоби формування сигналів синхронізації, спряження з системною шиною (СШ), тощо.
Шиною називають фізичну групу ліній передачі сигналів, що мають подібні функції. Наприклад, певна група ліній може використовуватися для передачі сигналів, які є адресою пам’яті. Цю групу ліній називаємо шиною адреси (ША).
СШ комп’ютера або будь-якого МПП звичайно складається з кількох шин. Для МПП найбільш загальною є 3-шинна СШ, тобто вона складається з:
1) шини адреси (ША);
2) шини даних (ШД);
3) шини управління (ШУ).
Такі структури МПП з 3-шинною організацією є найбільш загальними. Їх поділяють на три групи:
1) з розділеними шинами;
2) з загальною шиною;
3) з мультиплексованою шиною.
На рис. 6.1. подана структура МПП з розділеними шинами. Особливість такої структури в тому, що при звертанні до пам’яті і до пристроїв вводу-виводу використовують різні системні шини, кожна з яких в свою чергу складається з трьох шин: ША, ШД і ШУ. Така структура шин використовується тоді, коли є необхідність одночасного звертання до пам’яті і до засобів вводу-виводу.

Рис. 6.1.
Структура з загальною шиною подана на рис 6.2. Будується на основі МП невеликої розрядності (не більше ніж 8) і використовується тоді, коли влаштовує послідовне звертання до пам’яті та пристроїв вводу-виводу.

Рис. 6.2.
Структура з мультиплексованою шиною (рис. 6.3.) використовується в МПП на основі МП розрядності від 8 до 64. Тут за рахунок використання однієї і тієї ж шини як для адреси, так і для даних вдається зменшити число виводів МП.

Рис. 6.3.
З приведених схем найчастіше використовується третя, особливо при використанні сучасних МП.
По ША передаються лише вихідні сигнали МП, які поступають з виводів, з’єднаних з буфером адреси пам’яті. За допомогою адресних сигналів здійснюється вибір того пристрою, з яким МП буде обмінюватися інформацією. Таким пристроєм може бути будь-яка електрична схема, що може приймати або видавати дані. ША завжди однонаправлена. Ємність шини визначається числом електричних ліній, з яких вона складається. У випадку МП серії і8080 ША містить 16 фізичних ліній.
ШД – це двонапрямлена шина, тобто передача даних по ній може відбуватися в обох напрямках, але в кожен заданий момент часу передача може здійснюватися лише в одному напрямку, який визначається режимом роботи МП.
Для МП і8080 ємність ШД дорівнює 8.
В найпростішому випадку ШУ повинна складатися з 5 фізичних ліній, по яких можуть передаватися такі сигнали:
1) (memory read) – читання пам’яті;
2) (memory write) – запис в пам’ять;
3) (input output read) – читання пристрою вводу-виводу;
4) (input output write) – запис в пристрій вводу-виводу;
5) (interrupt acknowledge) – підтвердження переривання.
Для МП і8080 активним сигналами ШУ є сигнали низького рівня. Спрощена структура ЦП систем з 3- шинами представлена на рис. 6.4.

Рис. 6.4.
Для першого ознайомлення з МПП, розглянемо п’ять її основних функцій:
1) запис даних в пам’ять системи;
2) читання даних з пам’яті системи;
3) запис даних в пристрій вводу-виводу;
4) читання даних з пристрою вводу-виводу;
5) виконання операцій над вмістом внутрішніх регістрів МП.
Додаткові функції визначають варіанти обслуговування МП ЗП.
1) Обслуговування ЗП в режимі програмного опитування;
2) Обслуговування ЗП в режимі переривання;
3) Обслуговування ЗП в режимі очікування;
4) Режим ПДП.
Розглянемо, як ці функції реалізуються.
ЗАПИС даних в ПАМ’ЯТЬ. Часова діаграма процесу записування даних в напівпровідникову пам’ять показана на рис. 6.5.

Рис. 6.5. Часова діаграма запису інформації в пам’ять
Сигнали на лініях адреси і даних повинні бути стабільними як до (інтервал t1) так і після (інтервал t3) видачі сигналу ЗАПИС В ПАМ’ЯТЬ () – інтервал t2. Інтервал часу t1 від моменту активізації адресних ліній (видачі адреси) до моменту появи сигналу називається часом доступу до пам’яті. І проміжок часу t1 не може бути меншим від числових даних, що вказані в технічних умовах для даного типу пам’яті. Так, наприклад, для пам’яті типу МДН t1 ( 200 нс, а для пам’яті типу ТТЛ t1 ( 30 нс.
Для МП і8080 інтервал t1(500 нс, бо активізація адресних ліній відбувається по фронту імпульсу F2 в такті T1, а видача сигналу має місце по фронту імпульсу F1 в такті T3. Тому t1 тут більше періоду послідовності імпульсів F1, який для МП і8080 серії рівний 500 нс.
Отже при організації записування даних в пам’ять необхідно виконати такі дії:
а) на ША виставити адресу комірки пам’яті;
б) виставити дані на ШД;
в) по лінії ШУ подати сигнал дозволу запису.
Таким чином ШУ здійснює управління за допомогою певним чином синхронізованих імпульсів.
ЧИТАННЯ даних з ПАМ’ЯТІ. Часова діаграма виконання операції читання даних з пам’яті приведена на рис. 6.6.

Рис. 6.6. Часова діаграма читання інформації з пам’яті
Як видно з діаграми спочатку активізують адресні лінії, щоб адресні сигнали до моменту подання по лінії ШУ сигналу ЧИТАННЯ ПАМ’ЯТІ були стабільними. Тобто від початку активізації адресних ліній до моменту появи імпульсу проходить інтервал часу t1R , який можна назвати часом доступу при читанні. Оскільки, як це буде видно пізніше, сигнал синхронізується сигналом МП DBIN і співпадає з ним, то для серії і8080 t1=500 нс, тобто рівний періоду тактових імпульсів F1 або F2, бо сигнал DBIN починається по фронту імпульсу F2 в такті T2 і закінчується по фронту імпульсу F2 в такті T3. ШД переводиться в режим, при якому дані будуть прийматися з неї. По сигналу ШУ дані з відповідної комірки пам’яті поступають на ШД і за час дії сигналу приймаються МП. Отже, щоб реалізувати ЧИТАННЯ ПАМ’ЯТІ, необхідно виконати такі дії:
а) забезпечити стабільність сигналів на ША;
б) підготувати ШД до приймання даних, тобто перевести ШД в режим приймання даних;
в) по лінії ШУ подати сигнал читання пам’яті.
При цьому дані з комірки пам’яті М подаються на ШД і приймаються МП.
ЗАПИС даних в пристрій ВИВОДУ. В ролі пристрою виводу може бути друкуючий пристрій, табло на світлодіодах, електронно-променева трубка, гнучкий диск або будь-який інший пристрій, крім внутрішньої пам’яті, що може сприймати дані, які передаються МП. Причому приймання цих даних відбувається тоді, коли на ШУ активізована лінія управління записом в пристрій виводу .
Функціонування пристрою виводу в якійсь мірі аналогічне пристрою пам’яті. Кожному пристрою виводу приписується певна адреса, подібно до адреси пам’яті, як це видно по часовій діаграмі зображеній на рис. 6.7.
Аналогічно, як і у випадку запису інформації в пам’ять, тут також важливо зрозуміти, що адреса пристрою виводу і дані, що виводяться, поступають на ША та ШД до того, як по лінії ШУ поступить імпульс , тобто послідовність дій аналогічна як і при записуванні інформації в пам’ять. В результаті цих дій встановлюється зв’язок між МП і пристроєм виводу.
ЧИТАННЯ даних з пристрою ВВОДУ. Як пристрій вводу може бути будь-яке джерело даних, крім пам’яті, що здатне передавати дані МП, наприклад, клавішний пульт, термінал, АЦП.

Рис. 6.7. Часова діаграма запису інформації в пристрій ВИВОДУ
Є МП, в яких не робиться різниці між пам’яттю та пристроями вводу-виводу.
Часова діаграма, що відображає взаємозв’язок між шинами системи при введенні інформації, зображена на рис. 6.8.

Рис. 6.8. Часова діаграма читання інформації з пристрою ВВОДУ
З часової діаграми видно, що адреса пристрою вводу поступає на ША до того, як по лінії ШУ подається сигнал ЧИТАННЯ пристрою ВВОДУ. Протягом часу, поки сигнал на лінії активний, дані з пристрою ВВОДУ поступають на ШД і приймаються.
Виконання операцій над вмістом внутрішніх регістрів. Ці операції описуються часовими діаграмами виконання машинних циклів МП. Прикладом може бути операція, мнемокод якої ADD B. Часова діаграма виконання операції ADD B аналогічна представленій на рис. 5.1. Операція виконується в тактах Т4 і Т5, в яких вміст акумулятора А додається до вмісту регістра В. Всі необхідні дії реалізуються в середині МП, так що зовнішні шини системи не використовуються.
Забезпечення функціонування ША та ШД
Для забезпечення нормальної роботи ША, а також і ШД, перш за все необхідно оцінити величину струмового навантаження на лінії шини IЛ і порівняти з тим допустимим струмовим навантаженням IЛдоп, при якому кожна лінія шини МП працює задовільно.
Аналіз струмового навантаження проведемо на прикладі адресної лінії, оскільки адресні лінії в МПП зв’язані з цілою множиною входів, що підключені паралельно.
Як видно з рис. 6.9 струм адресної лінії IАЛ можна знайти підсумовуючи вхідні струми кожного навантаження, що підключене до лінії, тобто
IАЛ = I1 + I2 + … + Iп.
Коли вийде, що IАЛ > IАЛдоп, то такі лінії необхідно буферувати.

Рис. 6.9. Схема підключення адресної лінії МП до навантаження
Буферування означає таку процедуру, при якій лінія забезпечується засобами знімання надлишкового струму.
Допустимо, що адресна лінія МПП повинна керувати адресними входами 8-ми блоків пам’яті та двох портів вводу-виводу. Така система показана на рис. 6.10, на якому зображена тільки одна адресна лінія А0.

Рис. 6.10. Схема підключення адресної лінії А0 до блоків пам'яті (1-8) та портів ВВОДУ-ВИВОДУ (9, 10)
Величина струму в адресній лінії IАЛ, що керує всіма блоками пам’яті та пристроями вводу-виводу дорівнює сумі вхідних струмів 8-ми блоків пам’яті та 2-х портів вводу-виводу, тобто
IАЛ=8Iп+2IВВ.
Хай для організації пам’яті використані мікросхеми ОЗП з організацією 1024(1 типу К565РУ2А. Якщо вхідний струм кожної мікросхеми не залежить від стану адресної лінії і рівний Iп = 10мкА, то це значить, що пам’ять споживає від адресної лінії струм 8Iп = 80мкА.
Якщо для побудови портів вводу-виводу використані мікросхеми типу К589ИР12, то у відповідності з технічними характеристиками цієї мікросхеми вхідні струми її залежать від того, в якому стані знаходиться лінія.
При високому стані лінії вхідний струм рівний
I1вх=10 мкА
а при низькому – відповідно
I0вх=250мкА.
Тепер можна підрахувати струмове навантаження лінії для різних станів
IАЛ1=8I1п+2I1вх=80мкА+20мкА=100мкА
IАЛО=8Iоп+2Iовх=80мкА+500мкА=580мкА.
Порівняємо це навантаження лінії з максимально допустимим IАЛдоп, що визначається характеристиками мікропроцесора і8080.
Для нього допустиме навантаження на адресну лінію відповідно складає I1АЛдоп=150мкА; I0АЛдоп=1,9мА.
Бачимо, що розраховане струмове навантаження не перевищує допустимого, тому МП може безпосередньо керувати пам’яттю та пристроями вводу-виводу.
Але частіше на практиці виникає необхідність в буферуванні шини, оскільки струмове навантаження є більшим, ніж може забезпечити МП.
Крім того, незалежно від струмового навантаження лінію обов’язково треба буферувати, якщо вона працює на велике ємнісне навантаження, тобто більше ніж 100 пф, яке допускає МП і8080.

Рис. 6.11. Спотворення форми імпульсу при допустимому а) та недопустимому б) ємнісному навантаженні
Прикладом ємнісного навантаження є кабель, який може під’єднуватися до МПС пристрій вводу-виводу. Такий кабель має велику ємність. При обмежених можливостях по формуванню струму імпульси на приймальному кінці кабелю будуть.
Отже, буферування шин необхідне коли:
1) струмове навантаження будь-якої адресної лінії більше номінального;
2) адресні лінії з’єднані з будь-якою схемою, розташованою за межами плати, на якій генеруються адресні сигнали;
3) велике ємнісне навантаження.
При виборі буфера слід також переконатися, що навантаження по входу вибраного буфера не перевищує вихідного навантаження.
Наприклад, якщо величина струму на вході буфера адресної лінії в стані логічного 0 складає 2мА, то МП не зможе керувати цим буфером, бо в нього IАЛдоп<2мА.
Для ША МП і8080 відповідно максимально і мінімально допустимими величинами є: Сн max=100 пф; I1АЛдоп=0,15 мА, I0АЛmax=1,9мА, U1АЛmin=3,7 В, U0АЛmax=0,45 В.
Для цього ж МП допустимими для шини даних є величини
U1ЛДmin=3,3 В; I0ЛДmax=1.7 мА.
На відміну від адресної шини, для буферування якої достатньо включити однонаправлені підсилювачі потужності, шина даних для свого буферування потребує двонаправлених підсилювачів потужності.
Технічні засоби буферування шин
В МПП та системах, побудованих на основі і8080 для буферування шин можуть використовуватися 8-розрядні шинні формувачі (ШФ) серії КР580ВА86 або КР580ВА87. Крім того треба пам’ятати про те, що ШФ КР580ВА87 інвертують вхідні сигнали, тоді як мікросхеми КР580ВА86 не змінюють рівня вихідного сигналу порівняно з вхідним.
Мікросхеми КР580ВА86 (КР580ВА87) виконані в 20-контактному корпусі. Це 8-розрядні двонаправлені формувачі з трьома станами. Вони можуть забезпечити в навантаженні струм до IН=32 мА. Умовне позначення формувачів типу КР580ВА86 (КР580ВА87) показані на рис. 4.17. Формувач має групу А з 8 виводів та групу В з 8 виводів, а також два керуючих виводи Т та . Дозвіл передачі залежить від рівня сигналу на виводі (output enable) – дозвіл шин, а напрямок передачі визначається рівнем сигналу на виводі Т. Група входів А забезпечує струм навантаження: ІВХ0 < 1.7 мА, ІВХ1 < 0.15 мА; Виводи В: ІВИХ0 ? 32 мА, ІВИХ1 < 6 мА.

Рис. 6.12.
На рис. 6.12. зображена функціональна схема формувача КР580ВА86/87. Передача сигналів через формувач можлива, якщо рівень сигналу на виводі =0. Напрямок передачі визначається станом виводу Т. При Т=1 передача сигналів іде від групи виводів A до групи виводів B. При Т=0 здійснюється передача від групи виводів В до групи виводів А.
При подачі на вивід рівня логічної 1 всі виходи груп А і В переходять у відключений третій стан.
Схеми використання формувачів КР580ВА86/87 для буферування адресної шини і шини даних показані на рис. 6.13. Для буферування ША необхідно два формувачі. При цьому група виводів А підключається до адресних виводів мікропроцесора, а група В-до адресних шин системної шини. Оскільки передача сигналів має бути однонаправленою, а саме, від виводів групи А до групи В, то вивід Т через резистор підключається до напруги +5 В. Вивід підключається до виводу мікропроцесора HLDA або до відповідного виводу блока прямого доступу до пам’яті.

Рис. 6.13.
При буферуванні ШД необхідно забезпечити двонаправлену передачу сигналів від виводів групи А до виводів групи В і навпаки. При цьому необхідно забезпечити різні рівні на виводі Т. Це досягається підключенням виводу DBIN мікропроцесора до виводу Т формувача через інвертор. А для відключення буфера в режимі ПДП вивід підключають до виводу HLDA мікропроцесора, або до відповідного виводу блока ПДП.
Організація шини управління. Технічні засоби формування сигналів ШУ
Сигнали шини управління формуються на основі байту стану, який видається на початку кожного машинного циклу на ШД і запам’ятовується у зовнішньому регістрі, та сигналів управління, що видаються МП через виводи DBIN та . Запам’ятований байт стану необхідно зберегти до того часу, поки через ШД не поступить новий байт стану.
Для запам’ятовування та зберігання байту стану використовується регістр стану, його ще називають системним контролером. Як системний контролер можна використати різні інтегральні схеми регістрів або тригерів. Найчастіше для цього використовується мікросхеми регістра КР580ИР82, а також спеціалізована схема системного контролера КР580ВК28.
Мікросхема КР580ИР82. Вона виконана в 20-контактному корпусі і являє собою 8-розрядний запам‘ятовувальний регістр, виконаний на синхронних D-тригерах з тристабільними формувачами на виході.
Умовне позначення регістра КР580ИР82, а також системного контролера КР580ВК28 показані на рис. 6.14.

Рис. 6.14.
Інформація в регістр КР580ИР82 записується по одиничному значенню сигналу на вході STB, а видається на виходи DO по сигналу . При =1 виходи в третьому стані. Мікросхема забезпечує струм навантаження 32 мА.
Деякі використання регістра КР580ИР82 в якості буфера адреси (а) та системного контролера (б) показані на рис.

Основні сигнали ШУ , , , формуються на основі окремих ознак байту стану та керуючих сигналів DBIN та на основі таких логічних співвідношень:



Оскільки адреси комірок пам’яті та пристроїв вводу-виводу передаються по спільній ША, то розділяються вони за допомогою сигналів управління , та , .
Сигнал підтвердження переривання , призначений для дозволу вводу команди RST V на шину даних (ШД), яка поступає від зовнішнього пристрою, що запросив переривання. Інші сигнали байта стану, які не приймали участі у формуванні керуючих сигналів ШУ, використовуються для побудови системи контролю та відладки мікропроцесорної системи.
На рис. 6.15. представлені технічні засоби, що дозволяють сформувати системну шину (СШ) центрального процесора.
Організація центрального процесора

Рис. 6.15.
Для МП і8080 необхідно дві послідовності тактових імпульсів амплітудою 12 В, які названі F1 та F2.
Крім формування послідовностей імпульсів F1 та F2 на генератор тактових імпульсів накладається й ряд інших функцій, таких як формування синхроімпульсів F1ттл та F2ттл рівнів ТТЛ для синхронізації зовнішніх кіл, формування і синхронізації сигналів READY та RESET.
Виходячи з цього схема системного ГТІ складається з задаючого генератора, формувача послідовностей імпульсів F1 та F2, а також вузлів, призначених для виконання додаткових функцій.
ЛЕКЦІЯ № 7
Класифікація запам'ятовувальних пристроїв (ЗП).
Будова і різновидності постійних
запам’ятовуючих пристроїв (ПЗП).
Класифікація запам'ятовувальних пристроїв.
Система пам’яті є функціональною частиною МПС, призначеною для запису, зберігання та видачі інформації. Технічні засоби, що реалізують функції пам’яті, називають запам’ятовувальними пристроями (ЗП).
За швидкістю обміну інформацією з АЛП розрізняють такі типи пам’яті: регістрова пам’ять МП, внутрішня кеш-пам’ять, зовнішня кеш-пам’ять, оперативна пам’ять, постійна пам’ять, зовнішня пам’ять.
Регістрова пам’ять МП або надоперативний ЗП являє собою сукупність РЗП. Звернення до НОЗП не потребує від МП виставлення адреси на шину під час зчитування/запису інформації. Час вибірки НОЗП – 5-7 нс. Загальна кількість 8- або 16-розрядних регістрів у МП зазвичай становить від 16 до 64.
Внутрішня кеш пам’ять – це оперативна пам’ять статичного типу ємністю 1-16 Кбайт, яку вбудовано безпосередньо у МП і працює на тактовій частоті процесора. Може бути спільною або роздільною для даних і команд.
Зовнішня кеш пам’ять – пам’ять статичного типу, але має значно більшу ємність. Працює на частоті шини. Ємність становить зазвичай 64-1 Мбайт.
Оперативна пам’ять – це пам’ять статичного або динамічного типу. Оперативна пам’ять може працювати в режимах запису, зчитування та зберігання інформації. ОЗП призначено для зберігання змінної інформації. Її ємність становить від десятків до сотень Мбайт, час доступу – 70-200 нс. ОЗП є енергозалежним, тому що інформація, записана в ньому втрачається після вимкнення живлення. Часто називають пам’яттю з довільним вибиранням (по англійські RAM- Random Access Memory).
Постійна пам’ять являє собою спеціальну мікросхему, що містить інформацію яка не має змінюватися у процесі виконання програми. Ця інформація заноситься у ПЗП на етапі виготовлення або програмування. Постійна пам’ять працює в режимах зберігання та зчитування. Зазвичай ємність 64-128 Кбайт. ПЗП є енергонезалежними, тобто інформація зберігається після вимкнення живлення. Клас ПЗП ще називають пам’яттю тільки для читання (по англійські ROM – Read Only Memory).
Зовнішня пам’ять – реалізується у вигляді: гнучких і твердих магнітних дисків, лазерних компакт-дисків (CD-ROM) тощо. Обмін інформацією з цією пам’яттю є найповільнішим, але така пам’ять найбільша за ємністю (1-100 Гбайт).
ЗП характеризуються такими основними параметрами:
розрядністю даних n (визначається розрядністю комірки пам’яті);
інформаційною ємністю. Позначають через Nxn, де N – кількість n-розрядних слів, n – розрядність ШД, напр. 2Кх8 – 2048 байт; Кількість комірок пам’яті N дорівнює 2m, де m – кількість адресних входів мікросхеми.
часом вибірки – інтервал часу від моменту видачі запиту на передачу даних з пам’яті до моменту появи інформації на виході ЗП;
тривалістю циклу звернення tЦ – визначається мінімально допустимим інтервалом часу між двома послідовними зверненнями до ЗП;
напругою живлення UЖИВЛ;
споживаною потужністю РСП;
питомою вартістю – відношення вартості ЗП до його інформаційної ємності.
Постійні запам’ятовувальні пристрої
За способом програмування розрізняють такі типи ПЗП: програмовані одноразово та багаторазово. До першої групи належать ПЗП програмовані маскою – ПЗПМ (замовленого фотошаблона) та одноразово програмовані користувачем способом перепалювання плавких перемичок на кристалі (ППЗП, PROM, програмований ПЗП). Друга група поділяється на ВІС з ультрафіолетовим стиранням – репрограмовані ПЗП–УФ (EPROM – Erasable Programmed Read Only Memory) та з електричним стиранням, які ще називають флеш-пам’ять (РПЗП, EEPROM – Electrical Erasable Programmed Read Only Memory, репрограмований ПЗП).
Постійні запам’ятовувальні пристрої програмовані маскою
До складу ПЗПМ входять пристрій декодування адреси, вихідні буфери і програмована логічна матриця (ПЛМ), яка зберігає інформацію. Матриця представляє собою ряд перетинающихся горизонтальних (адресних) і вертикальних (інформаційних) шин, які в певних точках з’єднані діодами. Підключення діоду до відповідної інформаційної шини еквівалентно запису 1, а відсутність – запису 0 (рис. 7.1).

Рис. 7.1.
Характер розміщення діодів на кристалі задається замовником. У ПЗПМ вихідні сигнали мають ТТЛ-рівні, виходи побудовані переважно за схемою з трьома станами.
Для позначення мікросхем ПЗПМ використовують літери РЕ, наприклад ВІС К568РЕ2 ємністю 8 К х 8.

Для зчитування інформації потрібно подати код адреси і сигнал керування = 0. Вхід (Chip Select) – вибір мікросхеми, якщо = 1, то виходи мікросхеми знаходяться у високоімпедансному стані. Типові представники ПЗПМ наведені в табл.
Тип мікросхеми
Ємність
tЦ, нс
UЖИВЛ, B
РСП, мВт

К563РЕ1
8 Кх8
580
5
50

КМ1656РЕ1
2 Кх8
80
5
925

К1809РЕ1
4 Кх16
300
5
275

К568РЕ5
128 Кх8
200
5; 12
300

К568РЕ2
8 Кх8
400
5; 12
600


Однократно програмовані постійні запам’ятовувальні пристрої
PROM за принципом побудови і функціонування аналогічні ПЗПМ, але допускають програмування на місці їх застосування користувачем. Програмування PROM полягає в руйнуванні (перепалюванні) частини плавких перемичок на кристалі імпульсами струму амплітудою 30…50 мА і тривалістю 50…100 мс у тих перетинах рядків і стовпців матриці, куди потрібно записати 0(1). Таке програмування – одноразове.

У позначеннях мікросхем ППЗП використовують літери РТ, наприклад ВІС К556РТ16 (8 Кх8).

Мікросхеми ППЗП переважно виконані за ТТЛШ-технологією (лог. 0 – 0.4 В, лог. 1 – 2.4 В), з єдиною напругою живлення +5 В, з виходами або з трьома станами або з відкритим колектором.
Репрограмовані ПЗП з ультрафіолетовим стиранням
Основна відмінна риса мікросхем EPROM полягає в їх здатності до багаторазового (від 100 до 10 тис.) перепрограмування самим користувачем. Ця властивість мікросхем забезпечує застосування елементів пам’яті із властивостями керованих перемичок, функції яких виконують n-МОН транзистори. У такого транзистора під затвором сформовано ізольовану провідну ділянку з металу або полікристалічного кремнію. Цей затвор називається плавучий (ПЗ). У режимі програмування на керувальний затвор, джерело і стік подають імпульс напруги 21-25 В. У зворотно зміщених p-n переходах виникає процес лавинного розмноження носіїв заряду і інжекція частини електронів у ПЗ. У результаті нагромадження на ПЗ негативного заряду передатна характеристика транзистора зміщується в область високої граничної напруги (праворуч), що відповідає запису 0.

Для стирання інформації слід витіснити нагромаджений під затвором заряд, що відповідає запису 1. Стирають інформацію опроміненням мікросхеми ультрафіолетовим світлом через спеціальне вікно у верхній частині корпусу. Час стирання інформації становить 30-60 хв. Час зберігання заряду для різних типів мікросхем становить від декілька тисяч годин – до декількох років.
У позначеннях мікросхем РПЗП використовують літери РФ, наприклад, ВІС К573РФ6 (8 Кх8). Такі мікросхеми містять вивід (Output Enable) – дозвіл виходу і (Programming) – логічний сигнал програмування. Сигнал діє так само, як і сигнал .

Тип
мікросхеми
Ємність,
біт
tЦ, мкс
РСП, мВт
UЖИВЛ, B
Uпр, B
tПР, с
tСТ, хв

К573РФ2
(100 циклів)
2 Кх8
0.45
580
+5
25
100
30

К573РФ3
(10 циклів)
4 Кх16
0.45
450
+5
18
40
30

К573РФ4
(25 циклів)
8 Кх8
0.5
700
+5; +12
25
800
30

К573РФ7
(10 циклів)
32 Кх8
0.3
600
+5
25
400
30

Недоліки: мала кількість циклів перепрограмування (від 10 до 100), значний час стирання, потреба в спеціальному устаткуванні. Переваги: порівняно висока швидкодія, невисока вартість.
Репрограмовані ПЗП з електричним стиранням
РПЗП-ЕС (електричним стиранням) припускають тисячі циклів програмування. Порівняно з мікросхемами ПЗПМ і ППЗП систему керувальних сигналів доповнено сигналами програмування і стирання (Erase). Багато мікросхем групи ЕС дозволяють вибіркове стирання за адресою.
У позначеннях мікросхем РПЗП використовують літери РР, наприклад ВІС К558РР3 (8 Кх8).

Тип
мікросхеми
Ємність,
біт
tЦ, мкс
РСП, мВт
UЖИВЛ, B
Uпр, B
tПР, с
tСТ, с

КР558РР2
2 Кх8
0.35
480
+5
18
20
1

КР1601РР3
2 Кх8
1.6
850
+5; -12
-36
40
0.2

К573РР2
2 Кх8
0.35
620
+5
22
100
0.05

К558РР3
8 Кх8
0.4
400
+5
24
40
20

Гарантійний термін зберігання інформації із вимкненим живленням становить від трьох тисяч годин до п’яти років.
Флеш-пам’ять (Flash-пам’ять). Мікросхеми Flash-пам’яті вперше розробила фірма Intel 1988 року. Пам’ять нового типу енергонезалежна, з електричним стиранням і перепрограмуванням з пониженою до 12 В напругою програмування і збільшеною у декілька разів кількістю циклів перезапису. Для стабільної роботи Flash-пам’яті вживають ряд заходів, що впливають на структуру й організацію роботи мікросхем:
- застосування спеціальних алгоритмів запису та стирання з контролем стану і завершення процесу за результатом контролю;
- включення до складу мікросхеми регістра, який зберігає ідентифікатор фірми виробника й типу мікросхеми, що дозволяє захистити елемент від помилок вибору алгоритму;
- вбудовування в мікросхеми кіл, що реалізують алгоритми стирання і запису.
Можна виділити три групи мікросхем Flash-пам’яті:
- мікросхеми першого покоління виконані у вигляді єдиного масиву або інакше – що цілком стираються (BULK-ERASE). До них належать 28F256, 28F512, 28F010.
- мікросхеми з поділом масиву пам’яті на блоки різного розміру, тобто мікросхеми зі стиранням блоків різного розміру (BOOT-BLOCK). До них належать 28F001BX-T/B, 28002BX-T/B(L). Ці мікросхеми застосовують для зберігання BIOS у ПК. Ці мікросхеми неможливо стерти не подавши на спеціальний вхід мікросхеми напругу програмування +12 В.
- мікросхеми третього покоління з найбільшим розміром масиву з незалежним стиранням (FLASH-FILE): 28F008SA(L), 28F016SA, 28F032SA. Використовуються для зберігання даних великого обсягу в Flash-картах.
Кількість циклів стирання/запису мікросхем Flash-пам’яті – не менше 100 000. Мінімальний час читання байту/слова – не перевищує 100 нс. Час запису приблизно 9 мкс, час стирання блоку (64 Кбайт) – близько 1 с. Інформаційна ємність мікросхем – від 256 Кбіт до 32 Мбіт. Напруга живлення – 5 В ± 10%, стирання і програмування – 12 В ± 5%.
ЛЕКЦІЯ № 8
Будова оперативних запам’ятовуючих пристроїв (ОЗП).
Статичні і динамічні ОЗП. Організація пам'яті МП системи.
Приклади підключення пам’яті до системної шини ЦП.
Принципи кешування. Кеш прямого відображення.
Набірно-асоціативний кеш.
ОЗП можуть бути статичними і динамічними. У статичних ОЗП елементом пам’яті є тригер. За наявності живлення тригер здатний зберігати свій стан як завгодно довго. Інформація під час зчитування не руйнується. У динамічних ОЗП елементи пам’яті ємнісного типу, зчитування інформації супроводжується її руйнуванням, і для зберігання інформації її треба періодично перезаписувати (регенерувати) заново.
Статичні ОЗП
Розрізняють ОЗП з однорозрядною та багаторозрядною організацією. Для ОЗП з однорозрядною організацією інформаційна ємність рівна 2mxn біт. ВІС ОЗП з багаторозрядною організацією 2mxn біт мають n інформаційних двонаправлених входів/виходів – DIOn. Для запису нуля або одиниці, що надходять на входи DIOn потрібно на адресні входи подати адреси, на вхід блоку керування – сигнал дозволу = 0 та сигнал читання/запису = 0. Виводи DIOn переходять у високоімпедансний (Z-стан) стан по сигналу = 1, який відключає підсилювач вводу/виводу ПВВ (рис. 8.1).

Рис. 8.1.
Найбільш швидкодіючі – мікросхеми пам’яті ТТЛ ( з часом звертання 9-90 нс). Мікросхеми КМДН (К537, К561) мають порівняно невисоку швидкодію 100-800 нс, але мають істотно менше енергоспоживання.
Тип
мікросхеми
Ємність,
біт
tЦ, нс
РСП, мВт

КМ185РУ8
256х8
45
925

К537РУ8А
2 Кх8
220
50

Умовне позначення мікросхем ОЗП статичного типу на рис.

Динамічні ОЗП
У мікросхемах ОЗП динамічного типу елемент пам’яті – це конденсатор p-n переходу МДН-транзистора. Заряджений конденсатор – вважають логічною 1, розряджений – 0. Такі елементи пам’яті не можуть тривалий час зберігати свій стан і тому потребують періодичного відновлення (регенерації) інформації. Час вибірки динамічного ОЗП становить 70-200 нс. Порівняно з ОЗП статичного типу ОЗП динамічного типу характеризується більшою інформаційною ємністю, меншою швидкодією, меншою потужністю споживання, меншою вартістю. Переважно модулі оперативної пам’яті сучасних МПС реалізують на базі ВІС ОЗП динамічного типу.
Структурна схема динамічного ОЗП з інформаційною ємністю Nx1 показано на рис.

ОЗП динамічного типу працюють у таких режимах: запису, зчитування, зчитування/модифікації/запису, сторінкового запису, сторінкового зчитування, регенерації. Для забезпечення адресування використовують мультиплексування адресних сигналів у часі. Спочатку відбувається зчитування або запис даних, адреса яких визначається m молодшими розрядами ША, що супроводжується сигналом стробу (Row Address Strobe), який надходить на дешифратор рядків. Після чого відбувається зчитування або запис даних, адреса яких визначається m старшими розрядами ША, що супроводжується сигналом строба , (Column Address Strobe) який надходить на дешифратор стовпців. Зчитування інформації відбувається за заднім фронтом сигналу при = 1, запис – при = 0.
Регенерація інформації відбувається зверненням до кожного з рядків, при цьому формується адреса рядка і сигнал , а сигнал дорівнює логічній 1. Процес регенерації припиняється при звернені МП до ОЗП. У цьому випадку обробляється вимога МП, після чого процес регенерації продовжується з тієї адреси, на якій його було припинено.



A
DI
DO
Режим роботи

1
1
х
Х
Х
Z
Зберігання

1
0
х
Х
Х
Z
Зберігання

0
1
х
А
Х
Z
Регенерація

0
0
0
А
0
Z
Запис 0

0
0
0
А
1
Z
Запис 1

0
0
1
А
х
D
Зчитування



Щоб забезпечити надійне зберігання інформації реалізують режим примусової регенерації через певний час, період регенерації ТРЕГ, типово ТРЕГ рівний 2 мс, в деяких ВІС – 1 мс. Регенерація автоматично виконується для всіх ЕП обраного рядка під час зчитування або запису інформації. Цикл регенерації складається з m звернень до матриці, де m – кількість рядків. Під час організації примусової регенерації найбільш доцільний і зручний для регенерації режим регенерації сигналом , коли виконують перебір адрес у супроводі сигналу стробування , якщо = 1.
Режим роботи зчитування/модифікація/запис полягає у зчитуванні інформації при наступному запису у той самий ЕП.
Тип
мікросхеми
Ємність,
біт
tЦ, нс
UЖИВЛ, B
РСП, мВт





Звернення
Зберігання

К565РУ5Б-Д
64 Кх1
230-460
5
250-160
21

К565РУ5Д3
16 Кх1
110-500
5
160
21

К565РУ7
16 Кх1
200
5
250
25

К565РУ8
256 Кх1
120
5
250
25


Організація внутрішньої пам’яті мікропроцесорної системи.
Підключення мікросхем пам’яті до СШ.
Внутрішні запам’ятовувальні пристрої мікропроцесорної системи автоматики – це оперативна (ОЗП) та постійна (ПЗП) пам’ять, що реалізується в області адрес загальної пам’яті.
Пам’ять мікропроцесорної системи має сторінкову організацію. Сторінка пам’яті складається з нагромаджувача, який нагромаджує інформацію, та інтерфейса або контролера, призначеного для реалізації функції спряження з системною шиною.
Нагромаджувач звичайно будується на одній або кількох інтегральних схемах пам’яті. Він забезпечує зберігання багаторозрядних слів (найчастіше, байтів). Число слів в сторінці визначається її об’ємом.
Число ІС, необхідних для створення сторінки, залежить від розрядності слова, що зберігається в одній комірці, тобто від організації мікросхеми. Мікросхеми мають організацію, наприклад, N слів ( 8 біт, або N слів ( 1 біт. Зокрема, мікросхема ОЗП типу 565РУ2А має організацію 1024 ( 1.Тому для організації пам’яті з байтовою розрядністю слова і об’ємом сторінки 1024 слова необхідно буде 8 мікросхем такого типу.
Інтерфейс пам’яті здійснює виділення сторінок та комірок за заданою адресою, спряження нагромаджувача з ША та ШД, а також забезпечує управління читанням/записом інформації.
Адресне поле комірок (слів) в сторінці пам’яті кодується двійковим кодом, який дешифрується внутрішніми колами мікросхем пам’яті. Сторінки вибираються зовнішнім адресним селектором пам’яті.
При двійковому кодуванні сторінок селектор реалізується на інтегральних схемах (ІС) дешифраторів або мультиплексорів. А при унітарному кодуванні кожен розряд адреси безпосередньо вибирає сторінку пам’яті. При унітарному кодуванні спрощується інтерфейс пам’яті, але об’єм адресованої пам’яті при цьому зменшується . Спряження ІС пам’яті з ША здійснюється безпосереднім підключенням адресних входів ІС або через шинний формувач (ШФ).
Спряження ІС пам’яті з шиною даних ШД найбільш просто реалізується для ІС постійних запам’ятовувальних пристроїв (ПЗП), бо вони мають тільки вихідну шину даних, як правило, з трьома станами. І, звичайно, вихідна шина ПЗП безпосередньо підключається до ШД, інколи через шинний формувач (ШФ). Так само просто узгоджуються з ШД оперативні запам’ятовувальні пристрої (ОЗП), які мають двонаправлену ШД.
Складніше стоїть справа з підключенням до ШД ОЗП з розділеними шинами входу і виходу даних. Для них необхідно використовувати узгоджувачі шин, які реалізуються при допомозі ШФ або буферних регістрів.
Керування пам’яттю здійснюється сигналами для ПЗП і та для ОЗП.
Звичайно, ПЗП не мають окремого входу управління читанням, тому лінія підключається до одного з входів вибору кристала () мікросхеми, або до входу вибору адресного селектора, а вихід адресного селектора відповідно до входу вибору ПЗП.
При використанні шинних формувачів для узгодження ОЗП з ШД лінія підключається до входу управління ШФ. Самі ж ОЗП, як правило, мають спільний вхід управління R/ читанням/записом, і на нього, звичайно, подають сигнал управління записом . Для ОЗП з спільною шиною входу-виходу сигнал подається на вхід, що керує читанням і записом R/.
Час циклу читання/запису становить для МП КР580ІК80А мінімум три періоди синхроімпульсів, що при частоті синхронізації 2.5 МГц рівний 1200 нс. Час вибірки при читанні становить близько 570 нс.

Одночасно до шини мікропроцесорної системи може бути підключена ціла множина вузлів, наприклад, мікросхем пам`яті, контролерів вводу-виводу і т.д. Однак мікропроцесор одночасно з усіма підключеними елементами не може працювати, а тільки з одним. Тому виникає потреба забезпечити розв`язку тих елементів та вузлів, до яких звертання нема.
Використати для цього серійні елементи типу ТТЛ нема можливості, бо вихід звичайного елементу ТТЛ може мати рівень або логічної 1, або – 0. В зв`язку з цим були розроблені спеціальні елементи ТТЛ, виходи яких можуть об`єднуватися на загальній шині. Ці елементи назвали тристабільними (тобто такими, що мають три стани). Вони, крім станів на виході логічного 0 і логічної 1, мають ще й особливий стан високого опору Z. Коли тристабільний елемент знаходиться в стані високого опору Z, його вихід відключається від шини.
У високоімпедансному стані вихід елемента від`єднується від шини, тобто не видає на шину і не приймає від неї ніякої інформації. На виходах більшості сучасних мікросхем пам`яті стоять такі тристабільні елементи, що дозволяє підключати їх безпосередньо до СШ МП.

В системах з шинною структурою застосовують три різновидності вихідних каскадів цифрових мікросхем: а) стандартний вихід або вихід з двома станами (2С, 2S); б) вихід з відкритим колектором (ВК); в) вихід з трьома станами (3С). У виходу 2С ключ замикається по черзі – лог. 1 (верхній ключ замкнений), лог. 0 (нижній ключ замкнений). У виходу ВК замкнений ключ – рівень лог. 0, розімкнений – лог. 1. У виходу 3С ключі можуть розмикатись одночасно, утворюючий третій, високоімпедансний стан (Z-cтан), керується сигналом на спеціальному вході EZ.
Принципи кешування
Збільшення ємності пам’яті МПС зумовлює зниження швидкодії операцій обміну інформацією між процесором та модулем пам’яті. Це приводить до потреби виконання тактів очікування. Підвищення швидкодії обміну інформацією можливе через реалізацію додаткової пам’яті порівняно невеликої ємності, звернення до якої відбувається на тактовій частоті процесора. Така пам’ять отримала назву кеш-пам’яті. Кеш-пам’ять реалізується на основі ВІС ОЗП статичного типу. Кеш-пам’ять для програми є прозорою, тобто не представляє собою додаткової адресованої області пам’яті. В основу роботи кеш-пам’яті покладено принципи часової і просторової локальностей програм.
Принцип часової локальності полягає у тому, що під час зчитування будь-яких даних із пам’яті існує висока ймовірність звернення програми протягом деякого невеликого проміжку часу знову до них.
Принцип просторової локальності ґрунтується на високій імовірності того, що програма через деякий невеликий проміжок часу звернеться знову до комірки пам’яті, наступної за тією, до якої вона зверталась перед цим.
Згідно першого принципу інформацію у кеш-пам’яті доцільно зберігати протягом деякого часу, а принцип просторової локальності вказує на доцільність розміщення у кеш-пам’яті вмісту декількох сусідніх комірок, тобто певного блоку.
Кеш зберігає обмежену кількість блоків даних і каталог (cache directory) – список їх відповідності областям основної пам’яті. При кожному звертанні до пам’яті контролер кеш-пам’яті по каталогу перевіряє чи є дійсна копія потрібних даних в кеші. Якщо є, то це випадок кеш-влучення (cache hit) і дані беруться з кешу. Якщо дійсної копії немає, це випадок кеш-помилки (cache miss), і дані беруться з основної пам’яті. У відповідності з алгоритмом кешування блок даних, зчитаний з основної пам’яті, при певних умовах замістить один з блоків кешу. Від інтелектуальності алгоритму заміщення залежить відсоток влучень і, отже, ефективність кешування. Звертання до основної пам’яті може починатися одночасно з пошуком в каталозі, а у випадку влучення – перериватись (архітектура Look aside). Це економить час, але лишні звертання до основної пам’яті збільшує енергоспоживання. Другий варіант: звертання до основної пам’яті починається тільки після фіксації промаху (архітектура Look Through), при цьому втрачається по крайній мірі один такт МП, але економиться енергія.
Залежно від способу відображення інформації з основної пам’яті на кеш-пам’ять розрізняють такі типи кеш-пам’яті:
- кеш-пам’ять з прямими відображенням (direct-mapped cache);
- повністю асоціативна кеш-пам’ять (fully associative cache);
- частково асоціативна пам’ять (set-associative cache).
Кеш-пам’ять з прямим відображенням
В кеш-пам’яті прямого відображення адреса пам’яті, за якою відбувається звертання, однозначно визначає рядок кешу, в якому може знаходитись потрібний блок. Принцип роботи такого кешу пояснимо на прикладі кешу об’ємом 256 Кбайт з розміром рядку 4 байти, при ємності ОЗП МПС 64 Мбайт, яка розбивається на 256 сторінок по 256 Кбайт кожна.
Ємність кеш-пам’яті становить 256 Кбайт, тому кількість рядків дорівнює 64 К (256 К / 4 = 64 К). Отже під кожну з 256 частин ОЗП у кеш-пам’яті відводиться один рядок: двадцятишести розрядна адреса поділяється на дві частини: молодші 18 розрядів адреси називають індексом, старші 8 розрядів – ознакою. Ознака пересилається в кеш-пам’ять ознак (директорію), яка містить 64 К рядків і має загальну ємність 64 Кбайт.

З кожним рядком кеш-пам’яті пов’язана інформація про адресу скопійованої в неї блоку основної пам’яті і про її стан. Рядок може бути дійсний (Valid=1) – це означає, що вона достовірно відображає вміст основної пам’яті в цей момент часу. Біт М (Modify) – вказує чи був запис у відповідний рядок кеш-пам’яті. Номер сторінки разом з бітами V і М називається тегом.
У разі потреби зчитування даних із пам’яті МП звертається спочатку до кеш-пам’яті та перевіряє, чи містить вона відповідні дані. Цей процес відбувається порівнянням бітів адреси тега з 8 старшими розрядами адреси, яку процесор виставляє на ША. Збіг цих величин означає, що у кеш-пам’яті зберігаються потрібні дані і вони зчитуються з кешу. Якщо величини не збігаються то, виконується копіювання даних з оперативної пам’яті у кеш-пам’ять.
Перевагою цього типу кеш-пам’яті є порівняно висока швидкодія, оскільки потрібно лише одну перевірку. Недолік: якщо в процесі виконання програми процесору будуть потрібні блоки пам’яті, зміщені відносно один одного на величину кратну розміру сторінки (розташовані на одній горизонталі в різних сторінках), то чергове звертання буде заміщувати дані, зчитані в попередньому і потрібні в наступному звертанні - тобто будуть суцільні кеш-промахи.
Повністю асоціативна кеш-пам’ять
У цій схемі усунено недолік кеш-пам’яті з прямим відображенням, оскільки будь який блок ОЗП може відображатися у будь-якому рядку кеш-пам’яті. При цьому всі біти адресу кешованого блоку (А25-А2, 24 біти) зберігаються в пам’яті тегів.
Коли кеш-пам’ять не заповнена, блок записується у будь-який вільний рядок. Коли кеш-пам’ять заповнена, блок ОЗП записується в той рядок кеш-пам’яті, до якого було найменше звернень. Це потребує додаткового обладнання, призначеного для визначення блоку до якого було найменше звернень. При цьому також збільшується час оброблення запитів через необхідність порівняння 24-розрядної адреси та тегів записаних у кеш-директорії. Максимальна кількість таких порівнянь може становити 64 К, звичайно послідовний перебір комірок пам’яті тегів відпадає – на це може піти надто багато часу. Залишається лише паралельний аналіз всіх комірок, щ о є складною апаратною задачею, яка поки що вирішена лише для невеликих об’ємів кешу (L1-кеш).
Частково асоціативний кеш
Поєднує переваги обох попередніх типів. Рядки цієї кеш-пам’яті об’єднуються в групи по два, чотири і більше, тобто кожен блок кешованої пам’яті претендувати на один з декількох рядків кешу, об’єднаних в набір (set). Можна вважати, що в цій архітектурі є декілька паралельно і узгоджено працюючих каналів прямого відображення.
В найпростішому випадку кожний блок пам’яті може поміщатися в один з двох рядків (Two Way SetAssociative Cache – двоканальний наборно-асоціативний кеш). Такий кеш містить два банки пам’яті і тегів.
Кеш пам’ять складається з 32 К груп, кожна з яких містить два рядки. Індекс, тобто 18 молодших розрядів адреси ОЗП, адресує байт у кеш-пам’яті даних (15 розрядів адресують одну з 32 К груп, один розряд – рядок у групі і два розряди – байт у рядку). Тег, тобто 8 старших розряди, записуються у каталог. Для блоків з одним і тим самим індексом відводиться два рядки кешу. Усередині групи кеш-пам’ять повністю асоціативна. Кількість порівнянь адрес ОЗП з ознаками рівне 2.

Усі розглянуті типи кеш-пам’яті мають властивість зберігати окремі копії інформації, яка міститься в основній пам’яті. Під час запису в кеш-пам’ять може порушуватись цілісність збережуваних даних, тобто вміст кеш-пам’яті перестане відповідати вмісту ОЗП. Існує дві основні політики відновлення інформації в ОЗП: наскрізний запис (Write Through, WT) і зворотний запис (Write Back, WB).
Політика наскрізного запису передбачає виконання кожної операції запису, яка попадає в керований блок, одночасно і в кеш і основну пам’ять. Алгоритм достатньо простий в реалізації, але має низьку ефективність запису.
Політика зворотного запису дозволяє зменшити кількість операцій запису на шині основної пам’яті. Якщо блок пам’яті, в який повинний проводитись запис, відображений в кеші, то фізичний запис спочатку буде здійснений в цей дійсний рядок кешу, і він буде відмічений як брудний (dirty), або модифікований (М), тобто потребуючий вивантаження в основну пам’ять. Тільки після цього вивантаження рядок стане чистим (clean), і його можна буде використати для кешування інших блоків без втрати цілісності даних. Це вивантаження може відкладатись контролером до настання крайньої необхідності – звертання до керованої пам’яті іншим абонентом, заміщення в кеші новими даними, або виконуватись у вільний час після модифікації всього рядку. Даний алгоритм складніший в реалізації, але суттєво ефективніший ніж WT.
ЛЕКЦІЯ № 9
Режими роботи МП при обслуговуванні зовнішніх пристроїв,
режим програмного опитування (з очікуванням та без).
Режим переривання, технічні засоби задання
запиту і вектора переривання.
Управління пріоритетами при перериванні.
Режим прямого доступу до пам’яті.
В МПП до центрального процесора звичайно підключено кілька пристроїв вводу-виводу. І будь-який з цих пристроїв в довільний момент часу може вимагати від МП обслуговування. МП може обслуговувати ці пристрої трьома способами: в режимі програмного опитування, в режимі очікування і в режимі переривання.
Режим програмного опитування
В режимі програмного опитування МП, працюючи по програмі опитування, виконує періодично перевірку або опитування регістрів стану пристроїв вводу-виводу. Мета такого опитування полягає у виявленні пристрою, який потребує обслуговування.
Один з можливих варіантів блок-схеми алгоритму програми опитування показано на рис. 9.1.

Рис. 9.1.
З блок-схеми видно, що після входу МП в програму опитування в акумулятор пересилається вміст регістра стану пристрою 01. Потім виконується перевірка значення розряду “Запит на обслуговування”. Якщо в цьому розряді 1, то викликається підпрограма обслуговування пристрою 01. Підпрограма виконується, а тоді здійснюється повернення в програму опитування.
Тепер МП завантажує в акумулятор вміст регістра стану пристрою 02 і перевіряє запит на обслуговування. Якщо запит на обслуговування відсутній то в акумулятор завантажується вміст регістра стану наступного пристрою і т.д. Таким чином послідовно перевіряється вміст регістрів стану зовнішніх пристроїв. При цьому в залежності від вмісту регістрів приймається рішення про виконання або невиконання підпрограми обслуговування.
Фрагмент програми опитування зовнішніх пристроїв приведено в табл.
Фрагмент програми опитування без очікування
Мітка
Мнемокод
Коментар

1
2
3

ZP
LXI H, 50 30
Встановити адресу пам’яті


IN 01
Ввести дані з регістра стану пристрою 01


ANI MASK
Виділити третій розряд даних регістра стану


CNZ PORT1
Якщо не нуль, то виклик підпрограми обслуговування пристрою 01


IN 02
Ввести дані з регістра стану пристрою

*
*
*

PORT1
IN 11
Ввести дані з пристрою 11


INX H
Збільшити вміст регістрової пари HL


MOV M, A
Переслати дані в пам’ять


RET
Вихід з підпрограми

В цьому фрагменті програми задається початкова адреса комірки, вводяться дані з регістра стану пристрою 01. Потім всі розряди даних маскуються, крім 3-розряду, в якому зберігається інформація про запит на обслуговування. Маскування здійснюється шляхом виконання операції логічного множення вмісту акумулятора на двійкове число 00001000. В результаті цього у всіх розрядах акумулятора встановлюються нулі, а в 3-розряді дані не змінюються. І тепер якщо вміст акумулятора рівний нулю, то запит є, і МП переходить до виконання підпрограми обслуговування PORT1. Дані, підготовані пристроєм 01 вводяться в акумулятор і пересилаються в комірку пам’яті за адресою 5031. Після цього відбувається повернення в основну програму.
Один з можливих варіантів блок-схеми алгоритму програми опитування з очікуванням показано на рис.
Фрагмент програми опитування з очікуванням
Мітка
Мнемокод
Коментар

1
2
3

ZP
LXI H, 50 30
Встановити адресу пам’яті


IN 01
Ввести дані з регістра стану пристрою 01


ANI MASK
Виділити третій розряд даних регістра стану


JZ ZP
Чекати поки ЗП1 буде потребувати обслуговування


CALL PORT1
Виклик підпрограми обслуговування пристрою 01


IN 02
Ввести дані з регістра стану пристрою

*
*
*

PORT1
IN 11
Ввести дані з пристрою 11


INX H
Збільшити вміст регістрової пари HL


MOV M, A
Переслати дані в пам’ять


RET
Вихід з підпрограми



Рис. 9.2.
Введення та виведення інформації виконується з допомогою портів вводу-виводу. В якості портів вводу-виводу можуть бути використані буферні регістри КР580ИР82, КР580ВА86 та ін. Використання регістра КР580ИР82 для з’єднання з пристроєм вводу та виводу показано на рис. 9.3.
Якщо регістр використовується як порт введення, то дані від пристрою введення надходять на регістр по лініях DI7-DI0 і записуються за стробом STB. Вихідні дані DО7-DО0 порту надходять у МПС по ШД. МП формує сигнал керування читанням і вибіркою порту, який надходить на вхід . Якщо регістр використовується як порт виведення то дані від МП надходять по ШД на входи DI7-DI0 порту і супроводжуються сигналами керування записом і вибірки ВІС.

Рис. 9.3.
Режим переривання
Інший спосіб запуску підпрограм обслуговування пристроїв вводу-виводу полягає в обробці так званих запитів на переривання, які подають пристрої вводу-виводу. Мікропроцесори мають спеціальні входи, наприклад, INT в МП КР580ІК80А на які подаються сигнали запитів переривання.
Спочатку розглянемо деякі загальні положення про переривання.
В багатьох випадках МП виконує команди програми в тому порядку, в якому вони були розташовані в пам’яті. Це означає, що ніякі дії користувача не можуть вплинути на хід виконання програми, по якій вже почав працювати МП.
Система переривань дозволяє змінити хід виконання програми за допомогою сигналів, що поступають в мікропроцесор.
Наглядне уявлення про переривання подано на рис. 9.4.
Випадок рис. 9.4.а відповідає послідовному виконанню 4-х кроків програми. У випадку рис. 9.4.б після кроку 2 програми поступає сигнал запиту на переривання, основна програма перестає виконуватися, а управління передається підпрограмі переривання. Як тільки виконання підпрограми переривання закінчується, відбувається перехід до перерваної основної програми і продовжується її виконання.
Сигнал запиту переривання, що поступає в МП, є асинхронним сигналом. Це значить, що він може поступати в будь-який момент виконання основної програми.

Рис. 9.4.
Перш ніж перейти до виконання підпрограми переривання МП повинен одержати від зовнішнього пристрою, що виставив запит на переривання, адресу, на яку необхідно перейти для виконання підпрограми переривання.
Такий принцип обслуговування переривання одержав назву переривання по вектору. Тут поняття вектора рівнозначне поняттю вказівника адреси, яку необхідно використати мікропроцесору.
Таким чином, переривання можна визначити як вимушений перехід МП на виконання певної підпрограми в момент приходу сигналу переривання.
В МП використовуються два типи переривань: масковані переривання і немасковані переривання.
Якщо переривання немасковані, то МП завжди буде реагувати на сигнал запиту переривання і переходити до підпрограми обслуговування зовнішнього пристрою.
Суть маскованого переривання полягає в тому, що реакція МП на сигнали запиту переривання може бути дозволена або заборонена програмним шляхом.
В МП і8080 тільки масковані переривання. При цьому МП мають спеціальні входи, призначені тільки для сигналів маскованих або для немаскованих переривань.
На відміну від режиму програмного опитування, де використовуються тільки програмні засоби, для реалізації режиму переривань можуть використовуватися різні апаратурні засоби.
На рис. 9.5 показано схеми формування сигналу запиту на переривання (обслуговування).
Схема рис. 9.5.а може бути використана для формування сигналу переривання в автоматичному режимі. Від зовнішнього пристрою приходить імпульс, який є сигналом “ДАНІ ГОТОВІ”. Імпульс поступає на вхід S RS-тригера, і на його виході формується сигнал високого рівня, який може служити сигналом запиту на переривання.
На схемі рис. 9.5.б для формування сигналу запиту на переривання в ручному режимі використано двонаправлений кнопковий перемикач S1, схему для усунення впливу вібрації перемикача на RS-тригері, та D-тригер.
Коли S1 знаходиться в положенні 2 (початкове положення), тригер D2 буде в стані логічного 0.
D-тригер D2 спрацьовує по фронту імпульсу на вході С. Якщо натиснути кнопку S1, то її вивід 1 заземляється, і на виводі 1 D1 встановиться рівень логічного нуля.
Коли кнопку S1 відпустити, то на вході С D-тригера D2 будемо мати перехід від логічного 0 до логічної 1, що забезпечує передачу даних з входу D тригера на вихід Q.
На вхід D і S D – тригера через резистор 4к7 подається +5В, тобто рівень логічної 1. Під час наростання переднього фронту на вході С вихід D-тригера Q переходить в 1. Так на виході Q D-тригера формується сигнал переривання, який подається на вивід INT МП.
Після приходу сигналу переривання на вхід INT МП посилає у відповідь сигнал, що має логічне значення 0, на вхід R D-тригера. Таким сигналом є сигнал МП, що видається через вивід INTE. Це забезпечує перехід виходу Q D-тригера в стан логічного 0. Так МП встановлює в початковий стан схему запиту переривання.

Рис. 9.5.
Процес обробки переривання можна поділити на дві такі фази :
1) вхід INT переходить в стан логічної одиниці, що означає запит переривання зовнішніми апаратними засобами;
2) прийнявши запит на переривання, мікропроцесор переводить вихід INTE в стан логічного 0 і після цього, одержавши від зовнішнього пристрою вектор переривання, як відповідь на сигнал , МП приступає до його обробки, ігноруючи всі запити переривання, які можуть поступати на вхід INT.
В МП і8080 використовуються тільки масковані переривання, тобто реакція МП на сигнали переривання може бути дозволена або заборонена програмним шляхом. Для цього в його системі команд є дві спеціальні команди: заборонити переривання - DІ та дозволити переривання - ЕІ.
Цими двома командами можна змінювати стан виходу INTE.
Наприклад, при подачі сигналу початкової установки RESET на МП і8080 його вихід INTE переводиться в стан логічного 0. Це значить, що тепер МП буде ігнорувати всі запити на переривання. Щоб заставити МП сприймати переривання треба вихід INTE перевести в стан логічної 1. Це можна зробити тільки за допомогою команди EI.
Послідовність дій МП при перериванні можна представити такою блок-схемою рис. 9.6.

Рис. 9.6.
В МП і8080 є вісім векторів переривання (див. СК). Ці вектори переривання ще називають векторами рестарту, а для їх позначення використовують абревіатуру RST.
На рис. 9.7 показана схема, яка дозволяє зовнішньому пристрою по сигналу виставити на ШД вектор рестарту RST 6 (Формат команди 11111). Схема реалізована на буферному регістрі КР580ВА86. По приході сигналу низького рівня код, що є на вході елементів, поступає на ШД і читається МП.

Рис. 9.7.
Управління пріоритетами при запитах переривання
Запит на переривання може поступити одночасно від двох або декількох пристроїв. Тоді система переривання повинна вирішити, який з пристроїв,що прислав запит на переривання, слід обслужити в першу чергу, в другу і т.д., тобто встановити пріоритети пристроїв. При цьому МПП повинен визначити, який ЗП виставив запит на переривання, який пристрій обслуговується зараз, який пристрій має вищий пріоритет і повинен обслуговуватися в першу чергу.
Задання пріоритетів здійснюється двома способами:
1) апаратне задання пріоритетів;
2) програмне задання пріоритетів.
Спосіб зарання пріоритетів програмними засобами має меншу швидкодію, тому частіше використовують спосіб задання пріоритетів апаратними засобами.
Існує кілька методів апаратного задання пріоритетів. Найпростіший з них полягає у використанні лінії (полінга або дейзікола),по якій сигнал ШУ іде від центрального процесора до всіх зовнішніх пристроїв (рис. 9.8).

Рис. 9.8.
Спочатку сигнал посилається до пристрою з найвищим пріоритетом. Якщо цей пристрій ПП1 не запитував переривання, то через нього сигнал проходить до іншого ПП2 (з другим пріоритетом) і т.д. Коли сигнал проходить у пристрій, який запитував переривання, то він тут переривається і дальше не поступає. По сигналу цей пристрій виставляє вектор переривання RST V на ШД. Після цього МП переходить до обробки переривання.
Схема реалізації полінга показана на рис. 9.9.
Рис. 9.9.
З ШУ сигнал поступає на один із входів мікросхеми D1, на другій вхід якої через інвертор D3 підключена лінія запиту INT від периферійного пристрою ПП1. Якщо запит є, то на виході D1 маємо низький рівень, який є сигналом , що поступає в пристрій ПП1, і по ньому виставляється вектор рестарту RST V. Коли ж ПП1 запиту не виставляв, то на виході D1 маємо 1, що подається на інверсний вхід мікросхеми D4, на другій вхід якої поступає сигнал . В результаті проходить на перший вхід D5, на другій вхід якої через інвертор D6 підключена лінія запиту INT від периферійного пристрою ПП2. Якщо ПП2 виставив запит INT, то на виході D5 появляється сигнал, який поступає в ПП2. Коли ж ПП2 INT не виставляв, то в ПП2 не поступає, а через D7 проходить дальше.
Система пріоритетних переривань дозволяє МП безперервно порівнювати пріоритет пристрою, що обслуговується, з пріоритетом пристрою, що прислав запит.
Змінивши порядок проходження сигналу через периферійні пристрої змінюємо їх пріоритети.
Перед виконанням програми переривання необхідно зберегти адресу повернення в основну програму. Це робиться автоматично при виконанні команди RST V. Також треба зберегти результати виконання основної програми, що знаходяться в регістрах МП. Роблять це шляхом занесення вмісту регістрів в стек зразу після входу в підпрограму переривання.
Режим прямого доступу до пам’яті і його реалізація
РПДП використовується коли є швидкодіючі ЗП, і вони спілкуються з пам’яттю безпосередньо (без участі МП), що дає виграш в часі.
Вхід HOLD МП і8080 дозволяє переводити МП у режим прямого доступу до пам’яті.
Коли HOLD = 0, то системна шина, тобто ША, ШД та ШУ, керується МП. Коли інший МП або зовнішній пристрій бажає скористатися цими трьома шинами, то він вхід HOLD МП переходить в стан логічної 1. При цьому виходи МП, які підключені до СШ переходять в стан високого опору, і тепер інший МП або зовнішній пристрій може здійснювати управління СШ (за допомогою контролера ПДП).
Вихід HLDA МП використовується і для видачі сигналу на зовнішні технічні засоби, щоб повідомити їх про відключення МП від системної шини. Після цього зовнішній пристрій може здійснювати ПДП. По завершенні цього режиму зовнішній пристрій переводить вхід HOLD МП в стан логічного 0.
Якщо в МПП використовуються буфери ША, ШД, ШУ, то вони повинні мати три стани. Ці буфери сигналом виходу HLDA МП переводяться в стан високого опору.
Ініціалізація ПДП – ЗП подає на МП сигнал HOLD – запит захоплення шини.

Схемна реалізація режиму ПДП
ЗП виставляє запит ПДП і цим сигналом встановлює прапорець. По сигналу прапорця блок управління ПДП виставляє сигнал HOLD, МП відповідає HLDA. Відключаються буфери і МП одночасно з запитом ЗП подає на БУ керуючу інформацію: кількість слів, якими будуть обмінюватися, чи це читання чи запис. Після цього ЗП виставляє в адресний регістр початкову адресу. Після цього здійснюється обмін даними. Потім аналізується вміст лічильника слів (чи Лч. = 0). Якщо він не дорівнює 0, то адресний регістр дістає приріст на 1. Знову обмін даними і аналіз Лч. слів. Якщо Лч. = 0, формується сигнал скидання і прапорець встановлюється нуль, знімаються HOLD, HLDA=0 і режим ПДП завершено.

В МПК КР580 є спеціальна мікросхема КР580ВТ57 – програмований контролер ПДП.
.
Блок схема алгоритму обміну даними в режимі ПДП


ДОДАТКИ
Система команд мікропроцесора І8080 (КР580ІК80А)
Мнемоніка
Адреса
(операнди)
Формат
Команди
Число
байт
Число
тактів
Опис

MVI
RBD, DATA8
00 ddd 11
2
7
Завантажити 8-розрядний регістр RBD 8-розрядною константою DATA8:
(RBD) DATA8.



DATA8




LXI
RWD, DATA16
00 ddd 11
3
10
Завантажити 16-розрядний регістр RWD (В, D, H, SP) 16-розрядною константою DATA16: (RWD) DATA16.



DATA16






DATA16




MOV
RBD, RBS
01 ddd sss
1
5
Переслати вміст 8-розрядного регістра RBS у 8-розрядний регістр RBD: (RBD) (RBS).

SPHL
-
11111001
1
5
Переслати вміст HL в SP: (SP) (HL).

PCHL
-
11101001
1
5
Переслати вміст HL в PC: (PC) (HL).

MVI
M, DATA8
00110110
2
10
Переслати 8-розрядну константу DATA8 в комірку пам’яті за адресою, яка міститься в HL: ((HL)) DATA8.



DATA8




MOV
M, RBS
01110 sss
1
7
Переслати вміст 8-розрядного регістра RBS в комірку пам’яті за адресою, яка міститься в HL: ((HL)) (RBS).

MOV
RBD, M
01 ddd 110
1
7
Переслати вміст комірки пам’яті за адресою, яка міститься в HL у 8-розрядний регістр RBD: (RBD) ((HL)).

LDA
DADDR
00111010
3
13
Завантажити акумулятор вмістом комірки пам’яті за адресою DADDR:
(А) (DADDR).



DADDR






DADDR




STA
DADDR
00110010
3
13
Зберегти вміст акумулятора в комірці пам’яті за адресою DADDR: (DADDR) (A).



DADDR






DADDR




LDAX
RW*
000 r 1010
1
7
Завантажити акумулятор вмістом комірки пам’яті за адресою, яка зберігається в 16-розрядному регістрі RW (парі В або D):
(A) ((RW)).

STAX
RW*
000 r 0010
1
7
Зберегти вміст акумулятора в комірці пам’яті за адресою, яка зберігається в 16-розрядному регістрі RW (парі В або D):
((RW)) (A).

SHLD
DADDR
00100010
3
16
Зберегти вміст пари регістрів HL в комірках пам’яті за адресами DADDR і DADDR+1:
(DADDR) (L), (DADDR+1) (H).



DADDR






DADDR




LHLD
DADDR
00101010
3
16
Завантажити пару регістрів HL вмістом комірок пам’яті за адресами DADDR і DADDR+1:
(L) (DADDR), (Н) (DADDR+1).



DADDR






DADDR




PUSH
RW
11 rw 0101
1
11
Зберегти вміст 16-розрядного регістра RW (В, D, H, PSW) в області пам’яті, на яку вказує покажчик стеку SP: (SP-1) старший байт (А, коли виконується PUSH PSW) і (SP-2) молодший байт (F), (SP) (SP) – 2.

POP
RW
11 rw 0001
1
10
Завантажити 16-розрядний регістр RW (В, D, H, PSW) вмістом вершини стеку, тобто комірок з адресами (SP) і (SP+1) (покажчик стеку потім знову збільшується на 1), (SP) (SP) + 2.

IN
ADDR
11011011
2
10
Ввести в акумулятор вміст порта з адресом ADDR:
(А) (ADDR).



ADDR




OUT
ADDR
11010011
2
10
Вивести вміст акумулятора в порт за адресою ADDR:
(ADDR) (А).



ADDR




XCHG
-
11101011
1
4
Поміняти вміст регістрів HL і DE:
(H) (D), (L) (E).

XTHL
-
11100011
1
18
Поміняти вміст регістрів HL і двох комірок пам’яті, розташованих у вершині стека (вміст регістра L міняється з вмістом комірки за адресою SP, а вміст Н з вмістом комірки за адресою SP +1:
(L) ((SP)), (H) ((SP)+1).


Мнемоніка
Адреса
(операнди)
Формат
команди
Число
байт
Число
тактів
Прапорці
Опис

ADI
DATA8
11000110
2
7
S, Z, AC, P, C
Додати вміст акумулятора з 8-розрядною константою DATA8. Результат знаходиться в акумуляторі:
(A) (A) + DATA8.



DATA8





ADD
RBS
10000 sss
1
4
S, Z, AC, P, C
(A) (A) + (RBS).

ACI
DATA8
11001110
2
7
S, Z, AC, P, C
(A) (A) + DATA8 + (C).



DATA8





ADC
RBS
10001 sss
1
4
S, Z, AC, P, C
(A) (A) + (RBS) + C.

DAD
RW
00 rw 1001
1
10
C
Додати вміст пари регістрів Н з вмістом 16-розрядного регістра RW (B, D, H, SP):
(HL) (HL) + (RW).

SUI
DATA8
11010110
2
7
S, Z, AC, P, C
Відняти з вмісту акумулятора константу DATA8. Результат знаходиться в акумуляторі:
(А) (А) - DATA8.



DATA8





ADD
M
10000110
1
7
S, Z, AC, P, C
(А) (А) + ((HL)).

ADC
M
10001110
1
7
S, Z, AC, P, C
(А) (А) + ((HL)) + (C).

SUB
RBS
10010 sss
1
4
S, Z, AC, P, C
(А) (А) - (RBS).

SUB
M
10010110
1
7
S, Z, AC, P, C
(А) (А) - ((HL)).

SBI
DATA8
11011110
2
7
S, Z, AC, P, C
(А) (А) – DATA8 - (C).



DATA8





SBB
RBS
10011 sss
1
4
S, Z, AC, P, C
(А) (А) - (RBS) – (C).

SBB
M
10011110
1
7
S, Z, AC, P, C
(А) (А) - ((HL)) – (C).

CPI
DATA8
11111110
2
7
S, Z, AC, P, C
Порівняти вміст акумулятора з 8-розрядною константою DATA8. Порівнювані величини не змінюються. Якщо прапорець Z=1, величини рівні; С=1, Z=0 – вказують, що вміст акумулятора менше, ніж DATA8 (коли С=0, Z=0 – більше): (S), (Z), (AC), (P), (C) (A) - DATA8.



DATA8





CMP
RBS
10111 sss
1
4
S, Z, AC, P, C
Порівняти вміст акумулятора з вмістом 8-розрядного регістра RBS. Порівнювані величини не змінюються. Якщо прапорець Z=1, величини рівні; С=1, Z=0 – вказують, що вміст акумулятора менше, ніж RBS (коли С=0, Z=0 – більше): (S), (Z), (AC), (P), (C) (A) – (RBS).

CMP
M
10111110
1
7
S, Z, AC, P, C
Порівняти вміст акумулятора з вмістом комірки пам’яті за адресою, яка зберігається в HL. Порівнювані величини не змінюються. Якщо прапорець Z=1, величини рівні. С=1, Z=0 – вказують, що вміст акумулятора менше. С=0, Z=0 – більше: (S), (Z), (AC), (P), (C) (A) – ((HL)).

INR
RBD
00 ddd 100
1
5
S, Z, AC, P
Інкрементувати вміст регістра RBD:
(RBD) (RBD) + 1.

INR
M
00110100
1
10
S, Z, AC, P
Інкрементувати вміст комірки, на яку вказує адреса, яка зберігається в парі регістрів HL:
((HL)) ((HL)) + 1.

INX
RW
00 rw 0011
1
5
-
Інкрементувати вміст 16-розрядного регістра RW (B, D, H, SP):
(RW) (RW) + 1.

DCR
RBD
00 ddd 101
1
5
S, Z, AC, P
Декрементувати вміст регістра RBD:
(RBD) (RBD) -1.

DCR
M
00110101
1
10
S, Z, AC, P
Декрементувати вміст комірки, на яку вказує адреса, яка зберігається в парі регістрів HL:
((HL)) ((HL)) - 1.

DCX
RW
00 rw 1011
1
5
-
Декрементувати вміст 16-розрядного регістра RW (B, D, H, SP):
(RW) (RW) - 1.

DAA
-
00100111
1
4
S, Z, AC, C, P
Скоректувати спотворений результат після додавання двох 2-розрядних двійково-десяткових чисел. Якщо молодша (старша) тетрада акумулятора більше 9 або прапорець АС (С) рівний 1, то до акумулятора додається 06Н(60Н). Якщо (А3А2А1А0)>9 || (AC)=1, то (A) (A) + 06H. Якщо (А7А6А5А4)>9 || (C)=1, то (A) (A) + 60H.

ANI
DATA8
11100110
2
7
S, Z, P, C=0,
AC=?
Помножити логічно порозрядно вміст акумулятора і 8-розрядної константи DATA8. Результат в акумуляторі:
(А) (А) & DATA8.



DATA8





ANA
RBS
10100 sss
1
4
S, Z, P, C=0,
AC=?
(А) (А) & (RBS).
AC = результат логічного АБО третіх біт операндів.

ANA
M
10100110
1
7
S, Z, P, C=0,
AC=?
(А) (А) & ((HL)).

ORI
DATA8
11110110
2
7
S, Z, P, C=0, AC=0
Виконати порозрядну операцію АБО над акумулятором і 8-розрядною константою DATA8. Результат в акумуляторі:
(А) (А) || DATA8.



DATA8





ORA
RBS
10110 sss
1
4
S, Z, P, C=0, AC=0
(А) (А) || (RBS).

ORA
M
10110110
1
7
S, Z, P, C=0, AC=0
(А) (А) || ((HL)).

XRI
DATA8
11101110
2
7
S, Z, P, C=0, AC=0
Виконати порозрядну операцію сума за модулем 2 над акумулятором і 8-розрядною константою DATA8. Результат в акумуляторі:
(А) (А) DATA8.



DATA8





XRA
RBS
10101 sss
1
4
S, Z, P, C=0, AC=0
(А) (А) (RBS).

XRA
M
10101110
1
7
S, Z, P, C=0, AC=0
(А) (А) ((HL)).

CMA
-
00101111
1
4
-
Інвертувати розряди акумулятора:
(А) .

RAR
-
00011111
1
4
С = А0
Циклічно зсунути вправо вміст акумулятора і прапорця С:


RAL
-
00010111
1
4
С = А7
Циклічно зсунути вліво вміст акумулятора і прапорця С:


RRC
-
00001111
1
4
С = А0
Циклічно зсунути вправо вміст акумулятора:


RLC
-
00000111
1
4
С = А7
Циклічно зсунути вліво вміст акумулятора:



Мнемоніка
Адреса
операнда
Формат
команди
Число
байт
Число
тактів
Опис

JMP
DADDR
11000011
3
10
Безумовний перехід. Перейти до команди, розташованій в пам’яті за адресою DADDR:
(РС) DADDR.



DADDR






DADDR




JC
DADDR
11011010
3
10
Перехід по переносу. Перейти до команди, розташованій в пам’яті за адресою DADDR, якщо С = 1, інакше – до наступної команди: Якщо С = 1,
то (РС) DADDR, якщо С = 0, то (РС) (РС) + 3.



DADDR






DADDR




JNC
DADDR
11010010
3
10
Перехід по відсутності переносу. Якщо С = 0,
то (РС) DADDR, якщо С = 1, то (РС) (РС) + 3.



DADDR






DADDR




JZ
DADDR
11001010
3
10
Перехід по нулю. Якщо Z = 1, то (РС) DADDR, якщо Z = 0, то (РС) (РС) + 3.



DADDR






DADDR




JNZ
DADDR
11000010
3
10
Перехід по ненулю. Якщо Z = 0, то (РС) DADDR, якщо Z = 1, то (РС) (РС) + 3.



DADDR






DADDR




JP
DADDR
11110010
3
10
Перехід по плюсу. Якщо S = 0, то (РС) DADDR, якщо S = 1, то (РС) (РС) + 3.



DADDR






DADDR




JM
DADDR
11111010
3
10
Перехід по мінусу. Якщо S = 1, то (РС) DADDR, якщо S = 0, то (РС) (РС) + 3.



DADDR






DADDR




JPE
DADDR
11101010
3
10
Перехід по парності. Якщо Р = 1, то (РС) DADDR, якщо Р = 0, то (РС) (РС) + 3.



DADDR






DADDR




JPO
DADDR
11100010
3
10
Перехід по непарності. Якщо Р = 0, то (РС) DADDR, якщо Р = 1, то (РС) (РС) + 3.



DADDR






DADDR




CALL
DADDR
11001101
3
17
Виклик підпрограми. Зберегти в стеці вміст лічильника команд. Викликати підпрограму початкова адреса якої DADDR:
((SP)) (PC), (SP) (SP) – 2, (PC) DADDR.



DADDR






DADDR




CC
DADDR
11011100
3
17 (11)
Перехід на підпрограму по переносу. Якщо С=1, зберегти в стеці вміст лічильника команд, викликати підпрограму, початкова адреса якої DADDR: ((SP)) (PC), (SP) (SP)-2, (PC) DADDR. Якщо С=0, то (РС) (РС) + 3.



DADDR






DADDR




CNC
DADDR
11010100
3
17 (11)
Перехід на підпрограму по відсутності переносу. Якщо С=0, то ((SP)) (PC), (SP) (SP)-2, (PC) DADDR. Якщо С=1, то (РС) (РС) + 3.



DADDR






DADDR




CZ
DADDR
11001100
3
17 (11)
Перехід на підпрограму по нулю. Якщо Z=1, то ((SP)) (PC), (SP) (SP)-2, (PC) DADDR. Якщо Z=0, то (РС) (РС) + 3.



DADDR






DADDR




CNZ
DADDR
11000100
3
17 (11)
Перехід на підпрограму по ненулю. Якщо Z=0, то ((SP)) (PC), (SP) (SP)-2, (PC) DADDR. Якщо Z=1, то (РС) (РС) + 3.



DADDR






DADDR




CP
DADDR
11110100
3
17 (11)
Перехід на підпрограму по плюсу. Якщо S=0, то ((SP)) (PC), (SP) (SP)-2, (PC) DADDR. Якщо S=1, то (РС) (РС) + 3.



DADDR






DADDR




CM
DADDR
11111100
3
17 (11)
Перехід на підпрограму по мінусу. Якщо S=1, то ((SP)) (PC), (SP) (SP)-2, (PC) DADDR. Якщо S=0, то (РС) (РС) + 3.



DADDR






DADDR




CPE
DADDR
11101100
3
17 (11)
Перехід на підпрограму по парності. Якщо Р=1, то ((SP)) (PC), (SP) (SP)-2, (PC) DADDR. Якщо Р=0, то (РС) (РС) + 3.



DADDR






DADDR




CPO
DADDR
11100100
3
17 (11)
Перехід на підпрограму по непарності. Якщо Р=0, то ((SP)) (PC), (SP) (SP)-2, (PC) DADDR. Якщо Р=1, то (РС) (РС) + 3.



DADDR






DADDR




RET
-
11001001
1
10
Безумовне повернення з підпрограми. Добути зі стеку 2 байти і помістити їх в лічильник команд РС:
(РС) ((SP)), (SP) (SP) + 2.

RC
-
11011000
1
11 (5)
Якщо C = 1, то добути зі стеку 2 байти і помістити їх в лічильник команд РС: (РС) (SP); (SP) (SP) + 2;
якщо С = 0, то перейти до виконання наступної команди: (РС) (РС) + 1.

RNC
-
11010000
1
11 (5)
Якщо С = 0, то (РС) (SP); (SP) (SP) + 2;
якщо С = 1, то (РС) (РС) + 1.

RZ
-
11001000
1
11 (5)
Якщо Z = 1, то (РС) (SP); (SP) (SP) + 2;
якщо Z = 0, то (РС) (РС) + 1.

RNZ
-
11000000
1
11 (5)
Якщо Z = 0, то (РС) (SP); (SP) (SP) + 2;
якщо Z = 1, то (РС) (РС) + 1.

RP
-
11110000
1
11 (5)
Якщо S = 0, то (РС) (SP); (SP) (SP) + 2;
якщо S = 1, то (РС) (РС) + 1.

RM
-
11111000
1
11 (5)
Якщо S = 1, то (РС) (SP); (SP) (SP) + 2;
якщо S = 0, то (РС) (РС) + 1.

RPE
-
11101000
1
11 (5)
Якщо Р = 1, то (РС) (SP); (SP) (SP) + 2;
якщо Р = 0, то (РС) (РС) + 1.

RPO
-
11100000
1
11 (5)
Якщо Р = 0, то (РС) (SP); (SP) (SP) + 2;
якщо Р = 1, то (РС) (РС) + 1.

RST
MSK
11MSK111
1
11
Вміст лічильника команд РС зберегти в стеці і перейти до підпрограми, початкова адреса якої 0000 0000 00 MSK 000.


Мнемоніка
Формат
команди
Число
байт
Число
тактів
Прапорці
Опис

HLT
01110110
1
7
-
Зупин.

NOP
00000000
1
4
-
Немає операції.

EI
11111011
1
4
-
Встановити тригер дозволу переривань в 1: INTE = 1.

DI
11110011
1
4
-
Скинути тригер дозволу переривань в 0: INTE = 0.

STC
00110111
1
4
С 1
Встановити прапорець С в 1: С 1.

CMC
00111111
1
4
С
Змінити значення прапорця С на протилежне: С .


ЗАНЯТТЯ № 1
Написання простих програм на мові асемблер для МП КР580ІК80А
1. Написати підпрограму додавання вмісту двох 8-розрядних комірок пам’яті, що знаходяться за адресами Addr_1 = 30Н, Addr_2 = 31Н. Якщо результат не рівний нулю, помістити його в комірку пам’яті з адресою Addr_1, в протилежному випадку вивести в порт з номером 5 вміст акумулятора.
DEFSEG CODE1, START=0000H, ABSOLUTE
SEG CODE1

LXI SP, STACKSEG ; ініціалізація стеку
LXI B, Addr_1 ; завантажити в регістрову пару ВС адресу комірки Addr_1 (30Н)
LDAX B ; завантажити в акумулятор вміст комірки пам’яті Addr_1, адреса якої в рег. парі ВС
MOV D, A ; переслати в регістр D вміст акумулятора
LDA Addr_2 ; завантажити в акумулятор вміст комірки пам’яті за адресою Addr_2 (31Н)
ADD D ; додати до регістра D вміст акумулятора: результат = 86H
JZ M_1 ; якщо результат нульовий, перейти на мітку М_1
STAX B ; зберегти вміст акумулятора за адресою Addr_1, яка знаходиться в рег. парі ВС
JMP M_2 ; перейти на мітку М_2
M_1: OUT 5 ; вивести вміст акумулятора в порт з номером 5
M_2: NOP ; холоста команда
DEFSEG DATA1, START=30H, ABSOLUTE
SEG DATA1
Addr_1: db 87 ; 57H
Addr_2: db 47 ; 2FH
DEFSEG SSTACK,START=8250H, ABSOLUTE
SEG SSTACK
DS 100
STACKSEG:
END .
2. Написати підпрограму переводу безнакового цілого числа розташованого в комірках пам’яті з адресами Addr_1 = 60Н, в двійково-десятковий код. Результат розташувати в комірці пам’яті Addr_2 = 61Н – одиниці, Addr_3 = 62Н – десятки, Addr_4 = 63Н – сотні.
DEFSEG CODE1, START = 0000H, ABSOLUTE
SEG CODE1

LXI SP, STACKSEG ; ініціалізація стеку
JMP MAIN ; перехід на мітку MAIN

org 4000H ; програма ініціалізації починається з адреси 4000Н
MAIN: LDA Addr_1 ; завантажити в акумулятор вміст комірки пам’яті з адресою Addr_1
MOV B, A ; завантажити в регістр В вміст акумулятора
CALL BIN_DDK ; виклик підпрограми переводу в двійково-десятковий код
HLT ; зупин

BIN_DDK:
MVI C, -1 ; в лічильник сотень занести -1
MOV A, B ; занести в акумулятор вміст регістру В:(М(Addr_1))

L1: INR C ; збільшити на 1 вміст лічильника сотень
SUI 100 ; відняти від числа в акумуляторі 100
JP L1 ; якщо результат додатній (S=0), перейти до мітки L1
ADI 100 ; якщо результат від’ємний, додати сто до вмісту акумулятора
MOV B, A ; переслати вміст акумулятора в регістр В
MOV A, C ; переслати кількість сотень в акумулятор
STA Addr_4 ; зберегти кількість сотень в комірці пам’яті з адресою Addr_4

MVI C, -1 ; завантажити в лічильник десятків -1
MOV A, B ; завантажити в акумулятор вміст регістру В

L2: INR C ; збільшити на 1 лічильник десятків
SUI 10 ; відняти від акумулятора 10
JP L2 ; якщо результат додатній, перейти на мітку L2
ADI 10 ; додати до акумулятора 10
STA Addr_2 ; зберегти кількість 1 в комірці пам’яті за адресою Addr_2
MOV A, C ; переслати в регістр А вміст лічильника десятків
STA Addr_3 ; зберегти кількість десятків в комірці пам’яті за адресою Addr_3
RET ; повернення з підпрограми
DEFSEG DATA1, START=60H, ABSOLUTE
SEG DATA1
Addr_1: db 8 ; директива ініціалізації комірки пам’яті Addr_1 константою 8
Addr_2: ds 1 ; директива резервування 1 байту для змінної
Addr_3: ds 1
Addr_4: ds 1
DEFSEG SSTACK,START=8250H, ABSOLUTE
SEG SSTACK
DS 100
STACKSEG:
END
3. Написати підпрограму переводу двійково-десяткового числа розташованого в комірках пам’яті з адресою Addr_1 в двійковий код. Результат розташувати в комірці пам’яті Addr_2.
DEFSEG CODE1, START = 0000H, ABSOLUTE
SEG CODE1

LXI SP, STACKSEG ; ініціалізація стеку
JMP MAIN ; перехід до мітки MAIN

org 4000H ; мітка MAIN починається з адреси 4000Н
MAIN: LDA Addr_1 ; завантажити в акумулятор вміст комірки пам’яті з адресою Addr_1
MOV B, A ; переслати вміст акумулятора в регістр В
CALL DDK_BIN ; виклик підпрограми переводу двійково-десяткового числа в двійкове
HLT ; зупин

DDK_BIN:
MOV A, B ; переслати вміст регістра В в акумулятор
ANI 00001111b ; виділити молодшу тетраду
MOV C, A ; переслати тетраду в регістр С
MVI A, 0 ; завантажити в акумулятор 0

L1: DCR C ; зменшити лічильник кількості одиниць на 1
JM L2 ; поки не мінус, перейти до мітки L2
ADI 1 ; збільшити вміст акумулятора на 1
JMP L1 ; перейти на мітку L1

L2: MOV C, A ; переслати результат в регістр С
MOV A, B ; завантажити двійково-десяткове число в акумулятор
ANI 11110000b ; виділити старшу тетраду
RAR ; зсунути результат в 4 молодші тетради
RAR
RAR
RAR
ANI 00001111b ; очисти старші розряди
MOV B, A ; переслати в регістр В
MOV A, C ; переслати в акумулятор результат переводу молодшої тетради
L3: DCR B ; зменшити на 1 лічильник десятків
JM L4 ; якщо мінус перейти на мітку L4
ADI 10 ; інакше додати до результату 10
JMP L3 ; перейти на мітку L3
L4: STA Addr_2 ; зберегти результат переводу в комірці за адресою Addr_2
RET ; повернення з підпрограми
DEFSEG DATA1, START=3CH, ABSOLUTE
SEG DATA1
Addr_1: db 47H ; Результат переводу має бути рівний 2FH
Addr_2: ds 1
DEFSEG SSTACK, START=8250H, ABSOLUTE
SEG SSTACK
DS 100
STACKSEG:
END
4. Написати підпрограму формування часової затримки тривалістю 10 мс. Тактова частота процесора 2 МГц.
Період тактових імпульсів .
Кількість тактів: .
Виклик підпрограми командою CALL – 17 тактів
Повернення з підпрограми командою RET – 10 тактів.
Завантаження регістрової пари командою LXI – 10 тактів
Декремент регістрової пари командою DCX – 5 тактів.
Обнулення акумулятора командою MVI – 7 тактів.
Логічне АБО командою ORA – 4 такти.
Перехід, якщо не нуль командою JNZ – 10 тактів.
17 + 10 + 10 + (7 + 5 + 4 + 4 + 10) * N = 20000
Звідси N = 665.43, приймемо N = 665.
Тоді 17 + 10 + 10 + (30) *665 = 19987, потрібні ще 13 тактів наберемо командами INR – 5 та ADD – 4 такти.
N EQU 665 ; константа – кількість проходів
DEFSEG CODE1, START = 0000H, ABSOLUTE
SEG CODE1

LXI SP, STACKSEG ; ініціалізація стеку
JMP MAIN ; перехід на мітку MAIN

org 4000H
MAIN: CALL DELAY_10ms ; виклик підпрограми часової затримки
HLT ; зупин
DELAY_10ms:
INR B ; набираємо 13 тактів – дана команда 5 тактів
ADD B ; ще 4 такти
ADD B ; ще 4 такти
LXI B, N ; завантажити регістрову пару ВС константою N
L1: MVI A, 0 ; 7 тактів – обнуління акумулятора
DCX B ; зменшити вміст регістрової пари на 1 – 5 тактів
ORA B ; додати логічно до акумулятора вміст регістру В – 4 такти
ORA C ; додати до акумулятора вміст регістру С – 4 такти
JNZ L1 ; якщо регістрова пара не рівна 0 перейти на L1 – 10 тактів
RET ; повернення з підпрограми – 10 тактів.
DEFSEG DATA1,START = 30H, ABSOLUTE
SEG DATA1
DEFSEG SSTACK,START = 8250H, ABSOLUTE
SEG SSTACK
DS 100
STACKSEG:
END
5. Написати підпрограму яка забезпечує розділення вмісту 16 розрядної комірки пам’яті з адресою Addr_1 на чотири тетради. Тетради мають бути записані в молодші частини чотирьох послідовних 8-розрядних комірок пам’яті, починаючи з адреси Addr_2, причому старша тетрада має бути записана у комірку зі старшою адресою.
DEFSEG CODE1, START = 0000H, ABSOLUTE
SEG CODE1

LXI SP, STACKSEG
JMP MAIN

org 4000H
MAIN: LDA Addr_1 ; завантажити в акумулятор вміст комірки пам’яті за адресою Addr_1
MOV B, A ; переслати в акумулятор
ANI 0FH ; виділити молодшу тетраду
LXI H, Addr_2 ; завантажити в регістрову пару HL адресу комірки Addr_2
MOV M, A ; зберегти молодшу тетраду за адресою в регістровій парі HL
INX H ; збільшити вміст HL на 1 – перейти до наступної комірки
MOV A, B ; завантажити в акумулятор вміст комірки пам’яті за адресою Addr_1
ANI 0F0H ; виділити старшу тетраду
RAR ; зсунути старшу тетраду в молодші розряди – 4 зсуви
RAR
RAR
RAR
MOV M, A ; зберегти старшу тетраду
INX H ; збільшити вміст HL на 1 – перейти до наступної комірки
LDA Addr_1 + 1 ; завантажити в акумулятор наступний байт 16-розрядної комірки
MOV B, A ; переслати його в регістр В
ANI 0FH ; виділити молодшу тетраду …. Дальше аналогічно
MOV M, A
INX H
MOV A, B
ANI 0F0H
RAR
RAR
RAR
RAR
MOV M, A
INX H
HLT
DEFSEG DATA1,START=30H, ABSOLUTE
SEG DATA1
Addr_1: dw 5467H
Addr_2: ds 4
DEFSEG SSTACK,START=8250H, ABSOLUTE
SEG SSTACK
DS 100
STACKSEG:
END
6. Написати підпрограму додавання двох масивів з адресами Addr_1 = 20Н та Addr_2 = 30 Н, розміром 10 байт. Результат додавання записати на місце першого масиву.
N EQU 10 ; Константа – розмір масивів
DEFSEG CODE1, START = 0000H, ABSOLUTE
SEG CODE1

LXI SP, STACKSEG
JMP MAIN

org 4000H
MAIN: CALL SUM ; виклик підпрограми сумування
NOP
NOP
HLT
SUM: LXI H, Addr_1 ; завантажити регістрову пару НL адресою Addr_1
LXI B, Addr_2 ; завантажити регістрову пару ВС адресою Addr_2
MVI D, N + 1 ; завантажити лічильник елементів масиву числом 11
L2: DCR D ; зменшити лічильник на 1
JZ L1 ; якщо нуль (всі елементи додано) – перейти на L1
LDAX B ; завантажити акумулятор вмістом комірки пам’яті з адресою в рег. парі ВС
ADD M ; додати до акумулятора вміст комірки пам’яті з адресою в регістровій парі HL
MOV M, A ; зберегти суму на місці елементу масиву Addr_1
INX B ; збільшити вміст регістрової пари ВС на 1 (наступний елемент)
INX H ; збільшити вміст регістрової пари HL на 1 (наступний елемент)
JMP L2 ; перейти на L2
L1: RET ; повернення з підпрограми
DEFSEG DATA1,START = 20H, ABSOLUTE
SEG DATA1
Addr_1: db 25, 15, 45, 16, 78, 23, 90, 18, 22, 25
org 30H
Addr_2: db 25, 15, 45, 16, 78, 23, 90, 18, 22, 25
DEFSEG SSTACK,START = 8250H, ABSOLUTE
SEG SSTACK
DS 100
STACKSEG:
END
7. Написати підпрограму знаходження максимального числа у масиві 8-розрядних беззнакових чисел з адресою Addr_1 = 20Н, розміром 10 байт. Максимальне число запам’ятати в комірці з адресою Addr_2 = 30Н, його адресу починаючи з комірки Addr_2 +1.
DEFSEG CODE1, START = 0000H, ABSOLUTE
SEG CODE1

LXI SP, STACKSEG
JMP MAIN

org 4000H
MAIN: CALL MAX ; виклик підпрограми пошуку максимального елементу
NOP
NOP
HLT
MAX: LXI H, Addr_1 ; завантажити в регістрову пару HL адресу Addr_1
MOV B, M ; завантажити регістр В першим елементом – в регістрі В максимум
SHLD Addr_2 + 1 ; зберегти адресу першого елементу
INX H ; збільшити на 1 регістрову пару HL
MVI C, 10 ; завантажити в лічильник елементів число 10
MOV A, B ; переслати перший елемент в акумулятор
L3: DCR C ; зменшити вміст лічильника на 1
JZ L1 ; якщо нуль (всі елементи перебрано) – перейти на L1
CMP M ; порівняти вміст акумулятора з наступним елементом масиву
JNC L2 ; якщо акумулятор більший - перейти до L2
MOV A, M ; інакше зчитати елемент масиву
MOV B, A ; і занести його в регістр В
SHLD Addr_2 + 1 ; зберегти вміст регістру HL
L2: INX H ; перейти до наступного елементу
JMP L3 ; перейти до L3
L1: MOV A, B ; переслати максимальне значення в акумулятор
STA Addr_2 ; зберегти максимальне значення за адресою Addr_2
RET ; повернення з підпрограми
DEFSEG DATA1,START = 20H, ABSOLUTE
SEG DATA1
Addr_1: db 25, 150, 45, 169, 78, 23, 90, 180, 220, 250
org 30H
Addr_2: ds 3
DEFSEG SSTACK,START = 8250H, ABSOLUTE
SEG SSTACK
DS 100
STACKSEG:
END
8. Знайти кількість і записати адреси тих елементів масиву, які рівні нулю. Масив починається з адреси Addr_1 = 20Н, кількість елементів масиву 10. Кількість нульових елементів записати в комірці Addr_2 = 30Н, адреси нульових елементів записати починаючи з комірки з адресою Addr_2 + 1.
DEFSEG CODE1, START = 0000H, ABSOLUTE
SEG CODE1

LXI SP, STACKSEG
JMP MAIN

org 4000H
MAIN: CALL NUL_1 ; виклик підпрограми
HLT
NUL_1: LXI B, Addr_1 ; завантажити в регістрову пару ВС Addr_1
LXI H, Addr_2 + 1 ; завантажити в регістрову пару HL адресу Addr_2 + 1
MVI D, 0 ; завантажити в регістр D 0 – лічильник нульових елементів
MVI E, 11 ; завантажити в регістр Е 11
L3: DCR E ; зменшити лічильник елементів на 1
JZ L1 ; якщо Е = 0, перейти на L1
LDAX B ; завантажити в акумулятор елемент масиву
ANI 0FFH ; перевірити чи він рівний 0
JNZ L2 ; якщо елемент не нуль перейти на L2
INR D ; інакше збільшити лічильник на 1
MOV M, C ; зберегти молодший байт адреси нульового елементу за адресою HL
INX H ; збільшити вміст HL на 1
MOV M, B ; зберегти старший байт адреси
INX H ; збільшити вміст HL на 1
L2: INX B ; перейти до наступного елементу
JMP L3 ; перейти на L3

L1: MOV A, D ; переслати в акумулятор кількість нульових елементів
STA Addr_2 ; зберегти за адресою Addr_2
RET
DEFSEG DATA1,START = 20H, ABSOLUTE
SEG DATA1
Addr_1: db 1, -5, 0, 0, 6, 140, 8, 0, -45, 0
org 30H
Addr_2: ds 1
DEFSEG SSTACK,START = 8250H, ABSOLUTE
SEG SSTACK
DS 100
STACKSEG:
END
9. Написати підпрограму кодування кодом Хемінга з d=4 байту розташованого в комірці пам’яті з адресою Addr_1 = 20Н. Контрольні розряди зберегти в комірці пам’яті з адресою Addr_2 = 21Н.
Маємо байт даних І12 І11 І10 І9 І7 І6 І5І3 і контрольні розряди К8К4 К2 К1К0.
К1 = І3 І5 І7 І9 І11
К2 = І3 І6 І7 І10 І11
К4 = І5 І6 І7 І12
К8 = І9 І10 І11 І12
К0 = І3 І5 І6 І7 І9 І10 І11 І12 К1 К2 К4 К8
DEFSEG CODE1, START = 0000H, ABSOLUTE
SEG CODE1

LXI SP, STACKSEG
JMP MAIN
org 4000H
MAIN: CALL Hamming ; виклик підпрограми формування коду Хемінга
HLT
Hamming:
MVI E, 0 ; в регістр Е занести 0 – тут будуть контрольні розряди
LXI B, Addr_1 ; в регістрову пару В -
LDAX B ; зчитати в акумулятор байт для кодування
MOV D, A ; переслати його в регістр D
ANI 5BH ; виділити розряди І3 І5 І7 І9 І11
JPE L1 ; якщо кількість розрядів парна (сума за модулем 2 = 0), перейти на L1
MOV A, E ; інакше занести в розряд К1
ORI 00000010b ; одиницю
MOV E, A
L1: MOV A, D ; зчитати в акумулятор байт для кодування
ANI 6DH ; виділити розряди І3 І6 І7 І10 І11
JPE L2 ; якщо кількість розрядів парна (сума за модулем 2 = 0), перейти на L2
MOV A, E ; інакше занести в розряд К2
ORI 00000100b ; одиницю і т.д.
MOV E, A
L2: MOV A, D
ANI 8EH
JPE L3
MOV A, E
ORI 00001000b
MOV E, A
L3: MOV A, D
ANI 0F0H
MOV A, E
JPE L4
ORI 00010000b
MOV E, A
L4: XRA D ; визначити розряд К0
JPE L5 ; якщо він не рівний 0 перейти до L5
MOV A, E ; інакше занести в К0 1
ORI 00000001b
STA Addr_2 ; зберегти контрольні розряди
L5: RET

DEFSEG DATA1,START = 20H, ABSOLUTE
SEG DATA1
Addr_1: db 0B6H
Addr_2: ds 1
DEFSEG SSTACK,START = 8250H, ABSOLUTE
SEG SSTACK
DS 100
STACKSEG:
END
10. В залежності від значення третього біту в комірці з адресою Addr_1 = 20 Н здійснити наступні дії:
Addr_1(3) = 1, тоді інвертувати біти числа, додати 45, поміняти місцями розряди (нульовий розряд має стати 7,…, сьомий – нульовим), і вивести в порт з адресою Addr_2 = 30Н.
Addr_1(3) = 0, тоді зсунути на 3 розряди вправо, обнулити старший розряд, додати 20, і вивести в порт з адресою Addr_2 = 30Н.
DEFSEG CODE1, START = 0000H, ABSOLUTE
SEG CODE1

LXI SP, STACKSEG
JMP MAIN

org 4000H
MAIN: CALL TEST
HLT
TEST: LDA Addr_1 ; завантажити в акумулятор вміст комірки з адресою Addr_1
MOV B, A ; перенести в регістр В
ANI 08H ; виділити третій біт
JZ L1 ; якщо він нуль перейти на L1
MOV A, B ; переслати байт в акумулятор
CMA ; інвертувати акумулятор
ADI 45 ; додати 45 до акумулятора
STC ; встановити прапорець С (С=1)
CMC ; інвертувати прапорець С (С=0)
RAR ; поміняти місцями розряди, за рахунок зсуву вправо через прапорець С
RAR
RAR
RAR
RAR
RAR
RAR
RAR
JMP L2 ; перейти на L2
L1: MOV A, B ; переслати байт в акумулятор
RAR ; зсув на 3 розряди вправо
RAR
RAR
ANI 7FH ; обнулити старший розряд
ADI 20 ; додаємо 20
L2: OUT 30H ; виводимо вміст акумулятора в порт з адресою 30Н
RET
DEFSEG DATA1,START = 20H, ABSOLUTE
SEG DATA1
Addr_1: db 7
DEFSEG SSTACK,START = 8250H, ABSOLUTE
SEG SSTACK
DS 100
STACKSEG:
END
11. Здійснити додавання 2 24-розрядних чисел розташованих починаючи з комірки з адресою Addr_1 = 20Н – перше число, Addr_2 = 30Н – друге число. Результат записати на місце першого числа. Підрахувати кількість одиниць в результаті, і якщо вона парна інвертувати розряди результату, інакше обнулити результат.
DEFSEG CODE1, START = 0000H, ABSOLUTE
SEG CODE1

LXI SP, STACKSEG
JMP MAIN

org 4000H
MAIN: CALL SUM_24
HLT

SUM_24:
LXI B, Addr_1 ; завантажити в регістрову пару ВС адресу Addr_1
LXI H, Addr_2 ; завантажити в регістрову пару HL адресу Addr_2
LDAX B ; завантажити акумулятор молодшим байтом першого числа
ADD M ; додати з молодшим байтом другого числа
STAX B ; запам’ятати результат на місці молодшого байту першого числа
INX B ; перейти до наступних байтів
INX H
LDAX B ; завантажити акумулятор середнім байтом першого числа
ADC M ; додати з врахуванням переносу з середнім байтом другого числа
STAX B ; зберегти результат на місці середнього байту першого числа
INX B ; перейти до наступних байтів
INX H
LDAX B ; завантажити акумулятор старшим байтом першого числа
ADC M ; додати з врахуванням переносу з старшим байтом другого числа
STAX B ; зберегти результат на місці старшого байту першого числа
LXI H, Addr_1 ; завантажити в регістрову пару HL Addr_1
MOV A, M ; зчитати в акумулятор молодший байт
INX H
XRA M ; додати до нього за модулем 2 середній байт
INX H
XRA M ; додати до нього за модулем 2 старший байт
JPE L1 ; якщо кількість одиниць парна перейти на L1
XRA A ; інакше обнулити акумулятор
MOV M, A ; і записати замість числа нулі
DCX H
MOV M, A
DCX H
MOV M, A
JMP L2
L1: MOV A, M ; зчитати старший бай
CMA ; інвертувати його
MOV M, A ; записати на місце старшого байту і т. д.
DCX H
MOV A, M
CMA
MOV M, A
DCX H
MOV A, M
CMA
MOV M, A
L2: RET

DEFSEG DATA1,START = 20H, ABSOLUTE
SEG DATA1
Addr_1: db 10H, 27H, 0D6H
org 30H
Addr_2: db 0F2H, 67H, 90H
DEFSEG SSTACK,START = 8250H, ABSOLUTE
SEG SSTACK
DS 100
STACKSEG:
END
12. Додати до всіх елементів масиву менших нуля 25, зі всіх чисел більших нуля відняти 45, всі числа рівні нулю замінити на 80Н. Адреса початку масиву Addr_1 = 20Н, розмір 10 байт.
DEFSEG CODE1, START = 0000H, ABSOLUTE
SEG CODE1

LXI SP, STACKSEG
JMP MAIN

org 4000H
MAIN: CALL TEST
HLT
TEST: LXI H, Addr_1 ; завантажити в регістрову пару HL Addr_1
MVI B, 11 ; завантажити лічильник елементів
MVI C, 0 ; константа, з якою будуть порівнюватись елементи масиву
L5: DCR B ; зменшити В на 1
JZ L1 ; якщо нуль, то перейти на L1
MOV A, M ; занести в акумулятор черговий елемент масиву
SUI 0 ; відняти від нього нуль
JZ L2 ; якщо елемент масиву рівний нулю, перейти на L2
JM L3 ; якщо елемент масиву менший нуля, перейти на L3
SUI 45 ; інакше додати 45
JMP L4 ; і перейти на L4
L2: MVI A, 80H ; занести в акумулятор 80Н
JMP L4 ; перейти на L4
L3: ADI 25 ; додати до акумулятора 25
L4: MOV M, A ; замінити елемент масиву
INX H ; перейти до наступної комірки
JMP L5 ; перейти на L5
L1: RET ; повернення з підпрограми
DEFSEG DATA1,START = 20H, ABSOLUTE
SEG DATA1
Addr_1: db -5, 0, 20, 120, -30, -90, 0, 0, -1, 1

DEFSEG SSTACK,START = 8250H, ABSOLUTE
SEG SSTACK
DS 100
STACKSEG:
END
ЗАНЯТТЯ № 2
Побудова модуля пам’яті для МП і8080
МП і8080 адресує 64 Кбайт спільної пам’яті програм і даних використовуючи 16 адресних ліній А15-А0.
Нехай наприклад для ПЗП об’ємом 8 Кбайт виділена ділянка пам’яті 0000Н-1FFFH, а для ОЗП об’ємом 16 Кбайт виділено ділянку 2000Н-5FFFН. Тобто карта пам’яті буде виглядати таким чином:

Для ПЗП вибираємо мікросхему КР556РТ16 з організацією 8 К х 8, часом вибірки 85 нс і споживаною потужністю 1 Вт. Для ОЗП вибираємо мікросхему НМ62256 з організацією 32 К х 8, з яких використаємо лише 16 Кбайт.
Потрібно сформувати керуючі сигнали (для ПЗП , для ОЗП і ), щоб мікросхеми спрацьовували лише тоді, коли є звертання МП до відповідної ділянки пам’яті.
Для ПЗП визначаємо загальні межі
А15
А14
А13
А12
А11
А10
А9
А8
А7
А6
А5
А4
А3
А2
А1
А0

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1

Тобто розряди А15 А14 А13 вибирають потрібний діапазон на карті пам’яті, а розряди А12-А0 – потрібний байт в межах цієї ділянки.

Крім того, мікросхема ПЗП повинна активізуватись тоді, коли є читання пам’яті, про що свідчить низький рівень сигналу системної шини .
Для ОЗП визначаємо загальні межі
А15
А14
А13
А12
А11
А10
А9
А8
А7
А6
А5
А4
А3
А2
А1
А0

0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0

0
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1

Тобто розряд А15 завжди рівний 0, а мікросхема повинна вибиратись при комбінаціях сигналів А14 = 0, А13=1 або А14 = 1, А13 = 0, а також коли присутній сигнал або (Memory Read – Читання пам’яті) або (Memory Write – запис в пам’ять). Формувати ці керуючі сигнали зручно з допомогою дешифратора К555ИД7, умовне позначення:

Таблиця істинності: При STB=1, = = 0.
A2
A1
A0
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7

0
0
0
0
1
1
1
1
1
1
1

0
0
1
1
0
1
1
1
1
1
1

0
1
0
1
1
0
1
1
1
1
1

0
1
1
1
1
1
0
1
1
1
1

1
0
0
1
1
1
1
0
1
1
1

1
0
1
1
1
1
1
1
0
1
1

1
1
0
1
1
1
1
1
1
0
1

1
1
1
1
1
1
1
1
1
1
0

При STB=0, або = 1 або = 1.
A2
A1
A0
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7

x
x
x
1

Схема адресного селектора

Мікросхема ОЗП має також входи керування і . (Output Enable) – дозвіл видачі даних – повинен бути рівним нулю, коли є читання з ОЗП, тому на нього подається сигнал і вивід (Write Enable) – дозвіл запису даних - повинен бути рівним нулю коли є запис в ОЗП, тому на нього подається сигнал . Схема модуля пам’яті буде виглядати наступним чином: