Розробка структурної схеми процесорного елемента та мікропрограми керування для реалізації команди SBR Rm, B

Міністерствоосвіти і науки України
Черкаськийнаціональний університет імені Богдана Хмельницького
Факультетінформаційних технологій та біомедичної кібернетики
ВаляєвОлександр В’ячеславович
Розробкаструктурної схеми процесорного елемента та мікропрограми керування для реалізаціїкоманди SBRRm, B
Курсова робота
з дисципліни
„Проектування комп’ютерних інформаційнихсистем”
Виконав:
–––––––––––––      ст. групи КІ-031
Валяєв О. В.
Керівник:
–––––––––––––      викл. Лукаш В. І.
Черкаси – 2007

ЗМІСТ
ВСТУП
1.    Розробка структурної схеми
1.1. Опис основних елементів мікропроцесора
1.2. Вибір підходящої структури процесорногоелемента та його опис
1.3. Реалізація пристрою управління
2.    Розробка мікропрограми
2.1. Загальний алгоритм виконання процесоромкоманди SBR Rm, B
2.2. Спрощена мікропрограма та її пояснення
ВИСНОВОК
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
ДОДАТКИ

ВСТУП
На даний час практичнонеможливо вказати якусь галузь науки і виробництва, в якій би не використовувалисямікропроцесори (МП) і мікроЕОМ.
Універсальність ігнучкість МП як пристроїв з програмним управлінням поряд з високою надійністю ідешевизною дозволяють широко застосовувати їх в різномагітних системах управліннядля заміни апаратної реалізації функцій управління, контролю, вимірювання і обробкиданих. Застосування МП і мікроЕОМ в системах управління промисловим обладнаннямпередбачає, зокрема, використання їх для управління верстатами, механізмами транспортувань,зварювальними автоматами, прокатними станками, атомними реакторами, виробничимилініями, електростанціями, а також створення на їх основі робототехнічних комплексів,гнучких автоматизованих виробництв, систем контролю і діагностики. Мікропроцесорнізасоби дозволяють створювати різноманітні по складності виконуваних функцій пристроїуправління – від простих мікроконтроллерів нескладних приладів і механізмів до складнихспеціалізованих і універсальних систем розподіленого управління у реальному часі.
Вбудовані в приладиі апаратуру МП і прості мікроконтролери жорстко запрограмовані на реалізацію вузькоспеціалізованихзадач, їх програмне забезпечення проходить відладку на спеціальних стендах або універсальнихЕОМ, потім записується в ПЗП і рідко змінюється в процесі експлуатації.
Спеціалізовані мікроЕОМреалізуються найчастіше на основі секційних мікропрограмованих МП, що дозволяютьадаптувати структуру, розрядність, систему команд мікроЕОМ під певний клас задач.Проте такий підхід організації систем вимагає трудомісткої і дорогої розробки «власного»програмного забезпечення.
Останнім часом широкепоширення набувають також програмовані мікроконтролери, що є спеціалізованими мікроЕОМ,орієнтованими на розв’язування численних задач в системах управління, регулюванняі контролю.
Бачимо, що досконалезнання внутрішньої будови та принципів роботи мікропроцесора необхідне для досягненнявисокої кваліфікації в галузі комп’ютерної техніки.
Даний курсовий проектнаправлений на детальне вивчення будови мікропроцесора та принципів його роботи.Завдання курсової роботи заключається в наступному:
1.        Розробитисхему власного процесора для забезпечення виконання команди “SBR Rm, B”;
2.        Охарактеризуватиархітектуру розроблюваного процесора, визна­чити принцип його роботи
3.        Написати мікропрограмудля мікроконтроллера, який би виконував роль блоку управління процесором

1.        Розробкаструктурної схеми
 
1.1.  Описосновних елементів мікропроцесора
Мікропроцесор — центральнийпристрій (або комплекс пристроїв) ЕОМ, який виконує арифметичні і логічні операції,задані програмою перетворення інформації, управляє обчислювальним процесом і координуєроботу пристроїв системи. В обчислювальній системі може бути декілька паралельно працюючих процесорів, такі системи називають багатопроцесорними.
Основними характеристиками мікропроцесора є швидкодіяі розрядність. Швидкодія — це число операцій,що виконуються за секунду. Розрядність характеризує об’єм інформації, який мікропроцесоробробляє за одну операцію: 8-розрядний процесор за одну операцію обробляє 8 бітінформації, 32-розрядний — 32 біта. Швидкість роботи мікропроцесора багато в чомувизначає швидкодію комп’ютера. Він виконує всю обробку даних, що надходять в комп’ютері зберігаються в його пам’яті, під управлінням програми, що також зберігається впам’яті.
Моделі процесоріввключають наступні пристрої:
·         Пристрій управління(ПУ). Цей пристрійвідповідає за видачу сигналів, що керують роботою всіх пристроїв всередині процесораі взаємодією із шиною пам’яті.
·         Арифметико-логічнийпристрій (АЛП, ALU). Так називається пристрій дляцілочисельних операцій. Арифметичні операції, логічні операції та операції зсувуобробляються за допомогою АЛП. Ці операції складають переважну більшість програмногокоду в більшості програм. У процесорі може бути декілька АЛП.
·         AGU (Address Generation Unit) — пристрій генерації адрес. Цей пристрійне менш важливий, ніж АЛП, оскільки він відповідає за коректну адресацію при завантаженніабо збереженні даних. Абсолютна адресація в програмах використовується тільки врідкісних виключеннях. Як тільки беруться масиви даних, в програмному коді використовуєтьсянепряма адресація, що примушує працювати AGU.
·         Математичнийспівпроцесор (FPU). Процесор може містити декілька математичних співпроцесорів. Кожний з них здатнийвиконувати, щонайменше, одну операцію з плаваючою крапкою незалежно від того, щороблять інші АЛП. Метод конвеєрної обробки даних дозволяє одному математичному співпроцесорувиконувати декілька операцій одночасно. Співпроцесор підтримує високоточні обчисленняяк цілочисельні, так і з плаваючою крапкою і, крім того, містить набір кориснихконстант, які прискорюють обчислення. Співпроцесор працює паралельно з центральнимпроцесором, забезпечуючи, таким чином, високу продуктивність. Система виконує командиспівпроцесора в тому порядку, в якому вони з’являються в потоці. Математичний співпроцесорперсонального комп’ютера IBM PC дозволяє йому виконувати швидкісні арифметичні ілогарифмічні операції, а також тригонометричні функції з високою точністю.
·         Дешифраторінструкцій (команд). Аналізує інструкції в цілях виділення операндів і адрес, по яких розміщуютьсярезультати. Потім слідує повідомлення іншому незалежному пристрою про те, що необхіднезробити для виконання інструкції. Дешифратор допускає виконання декількох інструкційодночасно для завантаження всіх виконуючих пристроїв.
·         Кеш-пам’ять. Особлива високошвидкісна пам’ятьпроцесора. Кеш використовується як буфер для прискорення обміну даними між процесоромі оперативною пам’яттю, а також для зберігання копій інструкцій і даних, які недавновикористовувалися процесором. Значення з кеш-пам’яті витягуються безпосередньо,без звернення до основної пам’яті.
·         Шина — це канал пересилки даних, використовуванийспільно різними блоками системи. Інформація передається по шині у вигляді груп бітів.До складу шини для кожного біта слова може бути передбачена окрема лінія (паралельнашина), або всі біти слова можуть послідовно в часі використовувати одну лінію (послідовнашина). До шини може бути підключено багато приймальних пристроїв — одержувачів.
Типи шин:
1.   Шина даних. Служить для пересилки даних міжрегістрами процесора та АЛП.
2.   Шина адрес. Використовується для вибору необхідногоелементу пам’яті або пристрою введення-виведення шляхом установки на шині конкретноїадреси, що відповідає одному з елементів пам’яті або одному з елементів введення-виведення,що входять в систему.
3.   Шина управління. По ній передаються сигнали управління для пам’яті і пристроїввведення-виведення. Ці сигнали указують напрям передачі даних (у процесор або знього).
·         Регістри —це внутрішня пам’ятьпроцесора. Це ряд спеціалізованих додаткових елементів пам’яті, а також внутрішніносії інформації мікропроцесора. Регістр є пристроєм тимчасового зберігання даних,чиесл або команд і використовується з метою полегшення арифметичних, логічних іпересильних операцій. Основним елементом регістра є електронна мікросхема, тригер,яка здатна зберігати одну двійкову цифру (розряд). Регістр є сукупністю тригерів,пов’язаних один з одним певним чином загальною системою управління.
Деякі важливі регістримають свої назви, наприклад:
1.   лічильник команд – регістр, вміст якого відповідаєадресі наступної команди; служить для автоматичної вибірки команди з послідовнихелементів пам’яті.
2.   регістр команд — регістр ПУ для зберігання кодукоманди на період часу, необхідний для її виконання. Частина його розрядів використовуєтьсядля зберігання коду операції, інші — для зберігання кодів адрес операндів.
3.   показник на вершину стека — використовуєтьсядля роботи стеку.
Мікропроцесор є ядромсистеми і здійснює управління всіма операціями. Його робота представляє послідовнуреалізацію мікропроцедур вибірки-дешифрації-виконання.
Таким чином, в мікропроцесорвиконує наступні функції:
–   вибірку команд програми з основноїпам’яті;
–   дешифрацію команд;
–   виконання арифметичних, логічнихі інших операцій, закодованих в командах;
–   управління пересилкою інформаціїміж регістрами і основною пам’яттю, між пристроями введення/виведення;
–   відробіток сигналів від пристроїввведення/виведення, зокрема реалізацію переривань з цих пристроїв;
–   управління і координацію роботиосновних вузлів МП.
1.2 Вибір підходящої структури процесорного елемента тайого опис
Структура створеногопроцесорного елемента зображена в додатку 1, розшифровка позначень, використаниху схемі, наведена в додатку 2.
Створюючи власну структурупроцесорного елемента я вирішив, що його розрядність зручно зробити 8 біт, розрядністьадрес теж я вирішив зробити 8 біт. Відповідно розрядність абсолютно всіх регістрів, а саме регістрів загальногопризначення, допоміжних регістрів АЛП, регістру даних пам’яті, регістру адрес пам’яті(MAR), лічильника команд (PC), регістру команд (IR) та регістру станів (PSW) — теж 8 біт.
Команди – однооперандні. Розмір коду операції – фіксований, і складає 8 біт. Структура команди має такий вигляд:15 8 7 2 1 0 Операнд  Код операції Rm
Операнд вибираєтьсяпісля дешифрації команди в тому випадку, якщо він потрібен. Для спрощення вважається,що операнд завжди присутній, просто в деяких командах він не використовується. В нашому випадку операндом є константа,з якою виконується порівняння. Rm (біти 0 та 1) — це номер регістра, значення якого порівнюєтьсязі значенням константи. Нехай для нашої команди біти 2-7 мають таке значення: 000001b. Так як регістрів у нас 4, то можливі наступні варіанти коду команди:
00000100   SBR R0, B
00000101   SBR R1, B
00000110   SBR R2, B
00000111   SBR R3, B
Кількість регістрівзагального призначення (R0..R3) вибрана такою малою через нестачу портіввведення/виведення в пристрої управління.
До структури процесоратакож ввійшов пристрій приросту. Його задача — збільшення значення 8-розрядногорегістру PC на одиницю за один такт, при цьому незаймаючи шину даних.
Безпосередньо до шиниданих під’єднані всі структурні елементи процесора, крім пристрою управління тапристрою приросту. Останній може отримувати дані лише через регістр IR (через старший або молодший байт). Виведенняданих з пристрою управління на шину можливе лише через IRoff. Під’єднати шину даних безпосередньо пристрою управління не вдалосячерез нестачу портів введення/виведення в пристрої управління.
Для економії часуна пересилку адреси наступної команди з регістру PC в регістр MAR я вирішив з’єднати їх між собою безпосередньо.Завдяки цьому при вибірці кожної команди економиться один такт процесора. Крім того,пересилку PC à MAR для отримання наступної команди можназдійснювати під час виконання поточної команди, адже така пересилка не використовуєшину даних. Тоді можна економити ще один такт при вибірці кожної команди.
На структурній схемізнехтувано лініями керування та лініями синхронізації, по яким пристрій управлінняпосилає сигнали до всіх елементів процесора.
На рис 2 (додаток1) показана розроблена архітектура процесора. В ній арифметико-логічний пристрій(АЛП) і всі регістри з’єднані однією загальною шиною. Це внутрішня шина процесора,яку не слід плутати з зовнішньою шиною, що з’єднує процесор з основною пам’яттюі пристроями введення\виведення.
Лінії даних і адресизовнішньої шини пам’яті з’єднані з внутрішньою шиною процесора через регістр данихпам’яті, MDR, і регістр адреси пам’яті, MAR. Регістр MDR має два входи і два виходи.Дані можуть завантажуватися в нього або з зовнішньої шини пам’яті, або з внутрішньоїшини процесора. Дані, що зберігаються в MDR також можуть бути поміщені на будь-якуз цих шин. Вхід регістра MAR з’єднаний із внутрішньою шиною і регістром PC, а його вихід — із зовнішньою. Керуючілінії шини пам’яті з’єднані з дешифратором команди і керуючим логічним блоком.
Всі операції всерединіпроцесора виконуються протягом періодів часу, що обумовлені тактовим сигналом процесора,або сигналом синхронізації, що надходить від пристрою управління, в якості якогов нашому випадку вступає мікроконтроллер. Сигнали, що керують конкретними операціямипересилання, активізуються на початку такту.
 
1.3Реалізація пристрою управління
Пристрій управлінняреалізований у вигляді мікроконтроллера. Мікроконтроллер можна взяти будь-який,єдина вимога до нього — наявність п’яти потрів введення/виведення. Нехай було взятомікроконтроллер сімейства MCS-51.
4 порти введення/виведенняпід’єднані до управляючих ліній всіх елементів процесора. Інший 5-тий порт використовуютьсядля введення чи виведення 8-бітних даних. Цей порт (P.2) може обмінюватись даними з молод­шимта старшим байтом регістру IR. Призначення портів зображенона рис 1.
R0in P1.0 • •
P0.0 IRcopin
R0out P1.1 • •
P0.1 IRcopout_mc
R1in P1.2 • •
P0.2 Yin
R1out P1.3 • •
P0.3 Yout
R2in P1.4 • •
P0.4 Zin
R2out P1.5 • •
P0.5 Zout
R3in P1.6 • • P0.6 CLK
R3out P1.7 • •
P0.7 PCinc
PCin P3.0 • • P2.0 IR 0
PCout P3.1 • • P2.1 IR 1 PC_to_MAR P3.2 • • P2.2 IR 2 MFC P3.3 • • P2.3 IR 3
MARin P3.4 • • P2.4 IR 4 MRead P3.5 • • P2.5 IR 5
MDRin P3.6 • • P2.6 IR 6
MDRout P3.7 • • P2.7 IR 7 • P4.0 ALUe0 • P4.1 ALUe1 • P4.2 ALUe2 • P4.3 ALUe3 • P4.4 ALUm •
P4.5 IRoffin •
P4.6 IRoffout • P4.7
Рис 1. Призначенняпортів пристрою управління
Розшифровка позначень
Біти портів для отриманнясигналів (введення)
MFC — лінія для отримання сигналу готовностіпам’яті.
Біти портів для керування(виведення):
Xin — лінія дозволу на вхід даних в регістр X з шини.
Xout — лінія дозволу на видачу данихз регістру X на шину.
Xin_mc — лінія дозволу на вхід даних в регістрX з порта мікро­кон­т­роллера.
Xout_mc — лінія дозволу на видачу даних з регістру X на порт мікро­конт­роллера.
CLK — лінія для сигналів синхронізації
PCinc — лінія для активації пристрою приросту
MRead — лінія для сигналу читання з пам’яті
PC_to_MAR — лінія дозволу пересилки данихз регістра PC в регістр MAR.
ALUe0… ALUe0 — лінії для видачі на АЛП коду операції
ALUm — лінія вибору режиму роботи АПЛ (арифметичний/ логічний)
Порт для обміну даними (введення/виведення)
IR — порт може обмінюватись даними з молодшим байтом регістру IR та отримувати дані зі старшого байту регіструIR.

2.        Розробкамікропрограми
 
2.1Загальний алгоритм виконання процесором команди SBRRm, B
Для виконання програмипроцесор вибирає команди з пам’яті по одній і виконує обумовлені ними дії. Командивибираються з послідовних адрес пам’яті доти, доки не зустрінеться команда переходуабо розгалуження. Для цього в лічильнику команд (PC) відслідковується адреса черговоїкоманди, що підлягає виконанню. Після вибору цієї команди вміст регістра PC змінюєтьсятак, щоб він вказував на наступну команду в пам’яті в порядку розташування адрес.Команда розгалуження може завантажити в PC іншу адресу.
Загальний алгоритмроботи процесора можна зобразити наступним чином:
1.     Вибірка машинноїкоманди
2.     Збільшеннялічильника команд на довжину команди
3.     Дешифраціякоманди
4.     Вибірка операнду(якщо потрібно)
5.     Виконаннякоманди
Команда “SBR Rm, B” — установка бітів регістру Rm згідно з бітовою маскою B.
Алгоритм виконанняцієї машинної команди можна зобразити так:
1.     Виконати командулогічного „або” над значенням регістру Rm та бітовоюмаскою.
2.     Результатлогічної операції записати в регістр Rm.
3.     Перейти довибірки наступної команди

2.2 Спрощена мікропрограма та її пояснення
Спрощена мікропрограма виконаннякоманди SBR R1, B:
(Примітка: кожен рядок відповідає одному такту процесора)
1.     PC_to_MAR, MRead, WMFC
2.     MDRout, IRcopin, PCinc
3.     PC_to_MAR, MRead, WMFC
4.     MDRout, IRoffin, PCinc, IRcopout_mc, дешифрація
5.     IRoffout, Yin
6.     R1out, Yout, OR, Zin
7.     Zout, R1in, End.
Кроки 1 та 2 складають фазу вибірки команди, однакову для всіх команд, кроки 3та 4 — вибірка операнда та дешифрація.
1.        На кроці 1 відбувається пересилка вмісту регістра PC в регістр MAR та ініціюється операціячитання з пам’яті. Після отримання від пам’яті сигналу готовності переходимо до2-го кроку:
2.        Пересилка отриманого байту з регістру MDR в регістр IRcop (це перший байт команди– код операції); інкремент адреси, що знаходиться в PC.
3.        На 3-му кроці робляться такі ж дії, що і на першому,а саме запит на читання байту з пам’яті за адресою, що в PC.
4.        Пересилка отриманого байту з регістру MDR в регістр IRoff (другий байт команди(для команди SBR це бітова маска)); інкремент адреси, що знаходиться в PC; пересилка коду операції з регістру IRcop в блок управління;дешифрація коду операції.
Після вибірки команди іїї дешифрації відбувається власне виконання команди (в нашому випадку – SBR R1, B ) .
5.        Пересилка бітової маски, що знаходиться в регістрі IRoff, до регістру Y для подальшого його використання в АЛП в якості операнду.
6.        Видача на шину вмісту регістру R1, операція логічного „або” в АЛП, результат помістити в регістр Z.
7.        Пересилка значення регістру Z до регістру R1.
Лістинг програми,розбитий по крокам, з коментарями наведений в додатку 3.

ВИСНОВОК
Завданням курсовоїроботи було Розробка структурної схеми процесорного елемента та мікропрограми керуваннядля реалізації команди “SBR Rm, B”. Для його виконання було розглянутодекілька літературних джерел, архітектури різних процесорів та мікроЕОМ. Розробленав результаті курсової роботи архітектура не претендує на звання кращої, чи оптимальної.Вона проектувалась з боку спрощення, кращої наглядності схеми, для кращого її розуміння.Деякими структурними блоками було знехтувано, про що вказувалось по ходу роботи.При розробці схеми основну увагу приділялось правильному виконанню вказаної в завданнікоманди.
Розроблена мікропрограмадля керування виконанням команди “SBR Rm, B” написана на машинній мові з використаннямкоманд мікроконтроллера сімейства MCS-51. Створенамікропрограма виконується за 7 тактів процесора, з них 4 такти — це вибірка команди (коду операції таоперанду), а 3 інших — безпосереднє виконання команди. Це дуже проста команда, щоне потребує запитів до пам’яті, тому на її виконання треба всього 3 такти.
В результаті виконанняроботи я поглибив свої знання про будову, принципи роботи процесорів та мікропроцесорнихсистем різних архітектур.

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1.        Будіщев М.С.Електротехніка, електроніка та мікропроцесорна техніка. – видавництво «Афіша», 2001.–421с.
2.        А. Буняк.Електроніка та мікросхемотехніка. – СМП «Астон», 2001.
3.        Н. Ершова,О. Ивашенков, С. Курсков, Микропроцессоры, Пособие к курсам «Микропроцессорныесредства» и «Автоматизирован­ные системы для научных исследований» — dfe3300.karelia.ru/koi/posob/pos.html
4.        Система команд AVR-контроллеров — ntlib.chat.ru/avr/instr.htm
5.        Документація на мікроконтроллери фірми Intel MCS-51/151/251. (каталог pdf файлів) — www.intel.com/design/mcs51/docs_mcs51.htm

ДОДАТКИ
 
Додаток1
/>
Рис 2. Структурна схема процесорного елемента

Додаток2
Розшифровка позначеньна схемі
Таблиця 1Символьне позначення Опис R0, R1, R2, R3 Регістри загального призначення, використовуються програмістами для потреб програм. Z Регістр, призначені для тимчасового збереження результату виконання певної операції арифметико-логічним пристроєм. Y Регістр для тимчасового збереження операнду, який потрібно обробити в АЛП. IR
(Instruction register)
Регістр, в якому зберігається код машинної команди. ALU
(Arithmetical-logical unit)
Арифметико-логічний пристрій, АЛП PC (Program counter) Лічильник команд MAR (Memory address register) Регістр адрес пам’яті MDR (Memory data register) Регістр даних пам’яті PSW (Program status word) Регістр стану

Додаток3
Лістинг мікропрограми
consts.inc
R0_in         EQU p1.0
R0_out       EQU p1.1
R1_in         EQU p1.2
R1_out       EQU p1.3
R2_in         EQU p1.4
R2_out       EQU p1.5
R3_in         EQU p1.6
R3_out       EQU p1.7
PC_in                  EQU p3.0
PC_out                EQU p3.1
PC_to_MAR       EQU p3.2
MFC           EQU p3.3 
MAR_in              EQU p3.4
MRead                 EQU p3.5
MDR_in              EQU p3.6
MDR_out            EQU p3.7
IRcop_in              EQU p0.0
IRcop_out_mc     EQU p0.1
Y_in           EQU p0.2
Y_out                  EQU p0.3
Z_in            EQU p0.4
Z_out         EQU p0.5
CLK           EQU p0.6
PC_inc                 EQU p0.7
IR      EQU p2
ALUe0       EQU p4.0
ALUe1       EQU p4.1
ALUe2       EQU p4.2
ALUe3       EQU p4.3
ALUm        EQU p4.4
IRoff_in      EQU p4.5
IRoff_out   EQU p4.6
prog.asm
INCLUDE 80512.mc
INCLUDE consts.inc
Start:
fetch:
; ВИБІРКАКОМАНДИ
         ;…
        ;вибірка команди
         ;…
                  
deshifr:
; ДЕШИФРАЦІЯКОДУ КОМАНДИ
        ;Розпізнавання команди і перехід на відповідний код її виконання
         MOV A, IR
         ANL A, 11111100b     ;залишаємо в А лише код операції, без номера регістру
 my_cmd:
         CJNE A, 00000100b, other_cmd
         JMP SBR_Rm_B
 other_cmd:
        ; …
        ; …
        ; …
        
 unknown_code:
         JMP fetch
; ———————————————————-
        
; ВИКОНАННЯ КОМАНДИ
SBR_Rm_B:
        ; IRoff_out, Yin
         SETB IRoff_out           ; Пересилка бітової маски IRoff — >Y             
         SETB Y_in          ;
         SETB CLK         ; Сигнал синхронізації
         CLR CLK           
         CLR IRoff_out
         CLR Y_in
        ; Rm_out, Yout, OR, Zin
                  ;вибір потрібного регістру для пересилки в Y
                   MOV A, IR
                   ANL A, 00000011b     ;залишаємо в А лише сам номер регістра     
                   regR0out:
                    CJNE A, 00000000b, regR1out
                    SETB R0_out
                    JMP end_case1
                   regR1out:
                    CJNE A, 00000001b, regR2out
                    SETB R1_out
                    JMP end_case1
                   regR2out:
                    CJNE A, 00000010b, regR3out
                    SETB R2_out
                    JMP end_case1
                   regR3out:
                    SETB R3_out
                   end_case1: 
         SETB R1_out
         SETB Y_out
         SETB ALUe0               ; Код операції OR — 0001b
         CLR ALUe1                  ;
         CLR ALUe2                  ;
         CLR ALUe3                  ;
         SETB Z_in         ; результат — > Z
         SETB CLK         ; Сигнал синхронізації
         CLR CLK           
         CLR R0_out       ; закриваємо всі регістри
         CLR R1_out       ;
         CLR R2_out        ;
         CLR R3_out        ;
         CLR Y_out
         CLR ALUe0
         CLR Z_in
        
        ; Z out, Rm_in, End
         SETB Z_out                 ; пересилка результату в регістр R1
                  ;вибір потрібного регістру для пересилки: Z — > Rm
                   regR0in:
                    CJNE A, 00000000b, regR1in; в А — лише номер потрібного регістра
                    SETB R0_in
                    JMP end_case2
                   regR1in:
                    CJNE A, 00000001b, regR2in
                    SETB R1_in
                    JMP end_case2
                   regR2in:
                    CJNE A, 00000010b, regR3in
                    SETB R2_in
                    JMP end_case2
                   regR3in:
                    SETB R3_in
                   end_case2: 
         SETB CLK         ; Сигнал синхронізації
         CLR CLK           
         CLR Z_out
         CLR R0_in; закриваємо всі регістри
         CLR R1_in;
         CLR R2_in ;
         CLR R3_in ;
         JMP fetch           ; вибираєм наступну команду