Дослідження інструкцій логічних операцій і виконання арифметичних операцій навчального комп’ютера – симулятора DeComp

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2010
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Організація та функціонування комп’ютерів

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра CКС Звіт з лабораторної роботи № 4 з дисципліни: “Організація та функціонування комп’ютерів” на тему: “ Дослідження інструкцій логічних операцій і виконання арифметичних операцій навчального комп’ютера – симулятора DeComp. ” 2010 Тема: Дослідження інструкцій логічних операцій і виконання арифметичних операцій навчального комп’ютера – симулятора DeComp. Мета роботи: 1. Вивчити призначення логічних операцій. 2. Навчитись створювати і використовувати "фільтри" за допомогою логічних операцій. 3. Вивчити правила кодування додатних і від’ємних двійкових чисел для здійснення арифметичних операцій у комп’ютерах; 4. Навчитися кодувати двійкові числа із знаком у інструкціях навчального комп’ютера – симулятора DeComp. 1. Теоретичні відомості 1.1. Загальні відомості про логічні функції Усі дії, які виконуються у комп’ютері, повинні бути закодовані попередньо у програмі. За допомогою кожної команди програми кодується одна операція комп’ютера, яка виконується над парою операндів. Арифметична операція – операція, у якій операнди і результат сприймаються як числа. До них відносяться операції додавання і віднімання, з якими ми познайомилися у попередніх роботах, а також операції множення і ділення. Усі інші операції, наприклад, добування кореня квадратного, піднесення до степеня, дифференцювання та ін., реалізуються у комп’ютері на основі вказаних операцій. Логічна операція – операція, що полягає у логічній обробці операндів, які приймають у ній участь. До них відносяться операції порівняння, визначення модуля, визначення ознак результатів арифметичних операцій та ін. До них часом відносять операції зсуву праворуч або ліворуч. Точна, певна послідовність операцій або програма, яка потрібна для виконання певної задачі на комп’ютері, формується на основі математичної теорії, відомої як алгебра логіки. Створив алгебру логіки англійський математик Дж. Буль (1815 – 1864). Тому її називають також алгеброю Буля. Алгебра логіки отримала значний розвиток завдяки роботам таких вчених як Е. Пост, К. Шеннон, В. Глушков, С. Яблонський та ін. Основним поняттям алгебри логіки є висловлювання. Під час вивчення звичайної алгебри розглядають залежності типу А = f(x1, x2, …xn), де x1, x2, …xn – аргументи, а А – функція. Аргументи і функція при цьому можуть набувати найрізноманітніших числових значень: додатних і від’ємних, цілих і дробових. У алгебрі логіки вивчають залежності аналогічного вигляду А = f(x1, x2, …xn), але такі, в яких аргументи і функція можуть набувати тільки двох значень: 1 і 0. Практичне використання таких функцій є формальним (математичним) описом логіки людського мислення в процесі виконання якоїсь задачі. Вся діяльність людини так або інакше пов’язана з різними висловлюваннями. Будь-яке вимовлене твердження, зауваження є певним висловлюванням. У алгебрі логіки саме висловлювання є змінною (аргументом), яка може набувати одного з двох можливих значень (істина чи фальш, так чи ні, правдиво чи не правдиво) і над якою можна виконувати деякі дії. Подібно до аргументів у звичайній алгебрі, висловлювання позначають буквами якого-небудь алфавіту, наприклад, X, Y,Z або а, в, с. . . За змістом висловлювання поділяють на прості і складні. Наприклад, прості: “вікно відчинене”, “у квартирі холодно”, “Микола вчиться в національному університеті “Львівська політехніка”, “Микола йде на стадіон”. З простих висловлювань за допомогою слів-зв’язок (сполучників) І, АБО, НЕ, ЯКЩО-ТО та ін. утворюють складні. Наприклад, речення: „Вікно відчинене і у квартирі холодно”, „Микола піде у парк або на стадіон”. Будь-яке висловлювання може відповідати або не відповідати дійсності. У першому випадку його називають істинним (правдивим, true) і позначають як 1, а в інших – помилковим (хибним, false) і позначають як 0. Особливістю виконання логічних операцій є порозрядність, тобто операції виконуються над кожною парою розрядів числа окремо і при цьому переповнення розрядної сітки не відбувається. У обчислювальній техніці логічні операції використовуються надзвичайно широко. 1.2. Опис логічних інструкцій навчального комп’ютера Група інструкцій, яку ми будемо досліджувати у даній роботі, присвячена логічним операціям: AND (логічне І), OR (логічне АБО), XOR (логічне Виключне-АБО) та NOT (логічне НЕ). За винятком останньої логічної інструкції NOT, усі решта є адресними інструкціями, які виконують логічні операції над двома числами: значенням числа, що розміщене у акумуляторі та вмістом комірки пам’яті, на яку вказує 12-розрядна адреса у машинному коді інструкції, а також записують результат назад до акумулятора. Інструкція NOT є безадресною і вона заперечує (інвертує) усі розряди акумулятора із збереженням результату назад до акумулятора. Перші 3 адресні інструкції мають такі 4-розрядні коди операцій: AND – 0100, OR – 0101 та XOR – 0110. Безадресна інструкція NOT має 6-розрядний код інструкції 0111 00. Результати виконання логічних операцій зручно представити за допомогою такої таблиці: Вхідні набори AND ( І ) *, &, ( OR (АБО) +, |, ( XOR Викл. АБО (, #  Вхідні набори NOT (НЕ)   A = 0 B = 0 0 0 0  A = 0 1  A = 0 B = 1 0 1 1  A = 1 0  A = 1 B = 0 0 1 1    A = 1 B = 1 1 1 0     У поданій таблиці перші дві колонки містять 4 можливих варіанти комбінацій двох 1-розрядних чисел: 00, 01, 10 та 11. Наступні 3 стовпці зображують відповідні значення результатів виконання логічних функцій (операцій) І, АБО та Виключне-АБО над вхідними наборами. Останні два стовпці містять 2 варіанти одного 1-розрядного числа: 0 і 1, та відповідні значення функції (операції) НЕ. Зверніть увагу на позначення, які використовуються для різних логічних операцій: І – *, & чи (; АБО – +, | чи (; Виключне-АБО – ( чи #; НЕ – ~ чи риска над значенням логічного аргумента , наприклад  чи . Наприклад, 0 & 1 = 0; 1 ( 0 = 1; 1 ( 1 = 0 та ~1 = 0. Логічну операцію І (*,&, () називають кон’юнкцією (від англ. – conjuction – з’єднання) або логічним множенням. Дійсно, результат операції І можна отримати, якщо перемножувати вхідні 1-розрядні числа: 0 * 1 = 0 або 1 * 1 = 1. Також назва кон’юнкія (з’єднання) йде від визначення результатів логічної операції І: результат дорівнює 1 тільки у випадку, коли всі аргументи дорівнюють 1. Логічна операція І (&) дозволяє примусово встановити в "0" (обнулити) потрібні розряди даного числа: 10101010 & 11110000 = 10100000 Логічна операція АБО (+, |, () має назву диз’юнкція (від англ. – disjunction – роз’єднання) або логічне додавання. Диз’юнкція означає, що кожне з вхідних чисел незалежно виявляє своє значення: за визначенням результат логічної операції АБО дорівнює 1 лише тоді, коли хоча б одне (або всі) з вхідних аргументів дорівнюють 1. Правило логічного додавання тотожньо із арифметичним додаванням у 3-х випадках з 4-х: 1+1 ( 1, хоча 1 | 1 = 1. Логічна операція АБО ( | ) дозволяє примусово встановити в "1" потрібні розряди даного числа: 10101010 | 11110000 = 11111010 Наведені приклади практичного використання операцій І та АБО називаються створенням "маски" або фільтра. Логічну операцію Виключне-АБО ((, #) іноді ще називають сумою за модулем 2, або – додаванням за модулем 2. Дійсно, результат операції Виключне-АБО повністю співпадає з молодшим розрядом результату арифметичного додавання двох 1-розрядних чисел: 0 ( 1 = 1 (0 + 1 = 1), хоча 1 ( 1 = 0 (1 + 1 = 10). Виключність назви цієї логічної операції походить з її визначення: результат дорівнює 1, коли тільки одне з вхідних чисел дорівнює 1. При виконанні цієї операції над групою аргументів, результат дорівнює 1, якщо серед аргументів непарна кількість 1, якщо кількість 1 парна , то результат = 0. Логічна операція НЕ є дуже проста:  = 1,  = 0, тобто - заміна вхідного значення на протилежне. Цю операцію ще називають запереченням або інвертуванням (від англ. inversion – перевертання). Розглянуті 4 логічні операції вважаються найосновнішими і найбільш розповсюдженими, хоча насправді для двох 1-розрядних вхідних чисел існує  різноманітних логічних функцій. Ще раз відзначимо надзвичайно важливу відмінність логічних операцій у порівнянні з арифметичними – порозрядність, тобто якщо взяти два N-розрядних числа, то логічна операція над ними буде виконуватись над парами відповідних розрядів цих чисел незалежно одна від одної: логічна операція над парою нульових розрядів дасть нульовий розряд результату, логічна операція над парою перших розрядів дасть 1-й розряд результату і т. д. Саме тому логічні операції не впливають на ознаку переносу C, хоча можуть змінювати ознаку нуля результату Z та ознаку знаку результату S. 1.3. Подання від’ємних чисел у комп’ютерах Для виконання операцій обробки інформації у комп’ютерах і системах збереження та передачі даних, її замінюють числами. Позначення різної інформації відповідними числами називають цифровим кодування, а послідовність цифр для позначення певної інформації - її кодом. Кодуванню числової інформації у комп’ютерах приділяється особлива увага. Це викликано декількома причинами, одна з яких – наявність знаків у числах. Основна проблема полягає у тому, що центральним складовим елементом арифметично-логічного пристрою (АЛП) є суматор, який виконує лише порозрядне додавання двох кодів із врахуванням ваги кожного з розрядів та з організацією міжрозрядних переносів. Знак числа суматор не “розуміє”, його не розрізняє і сприймає знак числа як звичайний двійковий код. На даний час прийнято, що мінус кодується як одиниця (1), а плюс – як нуль (0). Для здійснення арифметичних операцій у комп’ютерах були розроблені спеціальні способи кодування і відповідні коди. Найбільш поширеними є прямий, обернений та доповняльний коди. Підкреслимо, що доповняльний та обернений коди використовуються тільки для подання від’ємних двійкових чисел. Додатні числа у цих кодах не міняють свого зображення і подаються як у прямому коді. 1.3.1. Прямий код Він базується на природньому поданні чисел у вигляді їх абсолютного значення з кодом відповідного знаку: плюса (0) або мінуса (1) у старшому розряді. Формула утворення прямого коду двійкового числа А = ± 0, а1а2а3…аn має вигляд  (1.3.1) Приклад 1.3.1. 1. А = + 0,1101; Апр = 0,1101. 2. А = - 0,10101; Апр = 1 - (-0,10101) = 1 + 0,10101 = 1,10101. Таким чином, цифрові розряди числа у прямому коді залишаються незмінними, а у знаковій частині записується одиниця для від’ємного числа і нуль для додатного числа. (У цьому прикладі після коду знаку поставлено умовно кому. Насправді, у комп’ютері „фізичної” коми не може бути. Надалі, для того, щоб чітко відрізняти знак від самого числа у прикладах, ми будемо всюди ставити умовну кому). З (1.3.1) витікає, що нуль в прямому коді може бути додатним і від’ємним: А= +0,00 … 00; Апр= 0,00 … 00. А= -0,00 … 00; Апр= 1,00 … 00. У комп'ютерах інформація зберігається у запам’ятовуючих пристроях (ЗУ), у пристроях вводу і виводу завжди у прямому коді. 1.3.2. Обернений код Обернений код від’ємного числа називають доповненням до 1. Тут так само присутній знаковий розряд (0 – це “+”, 1 – це “-”). Формула утворення оберненого коду має вигляд Аоб =  (1.3.2) Обернений код додатного числа повністю співпадає з відображенням числа у прямому коді. Приклад 1.3.2. А = - 0,100110. Аоб = 10 + (– 0,100110) – 0,000001 = 1,011001. Звідси витікає правило: щоб записати від’ємне число в оберненому коді, потрібно у знаковому розряді цього числа поставити одиницю, а в числових розрядах нулі замінити одиницями, а одиниці – нулями. Операція заміни нуля на одиницю і навпаки називається інвертуванням. В оберненому коді нуль зображається неоднозначно, є два подання нуля: + 0 і – 0. А = + 0,00 … 00; Аоб = 0,00 … 00; А = - 0,00 … 00; Аоб = 1,11 … 11; Така ситуація створює проблему, оскільки бажано мати систему, у якій існує тільки одне зображення любої цифри, у тому числі і нуля. 1.3.3. Доповняльний код Для подання від’ємних чисел у двійковій системі числення частіше використовується система доповнення до двох. У ній також є знаковий розряд (0 це “ + ”, а 1 – це “-”). Доповнення виконується у два етапи. Спочатку кожна 1 міняється на 0, а кожний 0 – на 1 (інверсія). Потім до молодшого розряду отриманого результату додається 1. Наприклад, розглянемо перетворення вісьмирозрядного числа - 610 у форму з доповненням до двох: 000001102 = (+ 6)10 111110012 = (- 6 у системі з доповненням до 1) 111110102 = (- 6 у системі з доповненням до 2). Формула утворення доповняльного коду двійкового числа має вигляд Адоп =  (1.3.3) Приклад 1.3.3. А= - 0,101010; Адоп = 10 + (- 0,101010) = 1,010110. Як видно з виразу (1.3.3), доповняльний код додатного числа повістю співпадає з зображенням числа у прямому коді. Порівнюючи від’ємне число А з його доповняльним кодом Адоп, можна вивести наступне правило: щоб записати від’ємне число у доповняльному коді, потрібно у знаковому розряді цього числа поставити одиницю, а у всіх числових розрядах нулі замінити одиницями, а одиниці – нулями і до отриманого результату добавити одиницю до молодшого розряду. Приклад 1.3.4. Записати двійкове число А = - 0,0101 у доповняльному коді. А = - 0,010 = Адоп = 1,1010 + 0,0001 = 1,1011. Щоб перетворити доповняльний код від’ємного числа у прямий код, потрібно виконати друге доповнення, тобто у числових розрядах цього числа замінити нулі на одиниці, а одиниці на нулі (створити обернений код) і додати до отриманого результату одиницю молодшого розряду. Приклад 1.3.5. Перетворити доповняльний код Адоп=1,1011 від’ємного числа у прямий код. Апр= 1,0100 + 0,0001= 1,0101. У доповняльному коді від’ємний нуль відсутній. Тому доповняльний код використовується частіше, ніж обернений. Але у цій формі є інша особливість. Набір бітів, що складається з 1, за яким йдуть усі нулі (наприклад, 10, 100, 1000, . . .) є доповненням до самого себе. 1.3.4. Модифіковані коди Ці коди відрізняються від простих машинних кодів тим, що на відображення знака відводиться два розряди: плюс відображається двома нулями (00), а мінус - двома одиницями (11). З погляду побудови АЛП вони зручні для виявлення переповнення розрядної сітки, яке може виникнути при додаванні чисел. Значення 01 та 10 у знакових розрядах свідчать про переповнення розрядної сітки. Невизначеність знаку приводить до того, що результат у цьому випадку буде не коректний, тобто, втрачається. У модифікованих кодах другий розряд ліворуч від коми визначає знак числа, а перший розряд служить для аналізу переповнення розрядної сітки при виконанні арифметичних операцій над числами. Перетворення двійкових чисел у модифіковані прямий, доповняльний і обернений коди проводиться за правилами, розглянутими вище. Приклад 1.3.6. Подати двійкові числа А1= +0,1101101 і А2= - 0,1101101 у прямому, доповняльному і оберненому модифікованих кодах.  Перетворення чисел у заданий код у комп'ютерах відбувається автоматично як при вводі чисел у комп’ютер, так і при виконанні операцій. 2. Порядок виконання роботи: Вивчити і записати у звіт призначення логічних операцій AND, OR, NOT I XOR. Логічну операцію AND називають кон’юнкцією (від англ. – conjuction – з’єднання) або логічним множенням. Вона порівнює 2 числа, одне з яких знаходиться у акумуляторі,а інше у комірці пам׳яті,на яку вказує 12-розрядна адреса у машинному коді інструкції, а також записують результат назад до акумулятора. Якщо А=0, В=0 або А=1 і В=0 або А=0 і В=1,то результат буде 0. Якщо А=1 і В=1,то результат буде 1. Дійсно, результат операції AND можна отримати, якщо перемножувати вхідні 1-розрядні числа: 0 * 1 = 0 або 1 * 1 = 1. Також назва кон’юнкія (з’єднання) йде від визначення результатів логічної операції AND: результат дорівнює 1 тільки у випадку, коли всі аргументи дорівнюють 1. Логічна операція AND (&) дозволяє примусово встановити в "0" (обнулити) потрібні розряди даного числа: 10101010 & 11110000 = 10100000 Логічна операція OR (+, |, () має назву диз’юнкція (від англ. – disjunction – роз’єднання) або логічне додавання. Диз’юнкція означає, що кожне з вхідних чисел незалежно виявляє своє значення: за визначенням результат логічної операції АБО дорівнює 1 лише тоді, коли хоча б одне (або всі) з вхідних аргументів дорівнюють 1. Правило логічного додавання тотожньо із арифметичним додаванням у 3-х випадках з 4-х: 1+1 ( 1, хоча 1 | 1 = 1. Логічна операція АБО ( | ) дозволяє примусово встановити в "1" потрібні розряди даного числа: 10101010 | 11110000 = 11111010 Логічну операцію XOR ((, #) іноді ще називають сумою за модулем 2, або – додаванням за модулем 2. Дійсно, результат операції XOR повністю співпадає з молодшим розрядом результату арифметичного додавання двох 1-розрядних чисел: 0 ( 1 = 1 (0 + 1 = 1), хоча 1 ( 1 = 0 (1 + 1 = 10). Виключність назви цієї логічної операції походить з її визначення: результат дорівнює 1, коли тільки одне з вхідних чисел дорівнює 1. При виконанні цієї операції над групою аргументів, результат дорівнює 1, якщо серед аргументів непарна кількість 1, якщо кількість 1 парна , то результат = 0. Логічна операція NOT є дуже проста:  = 1,  = 0, тобто - заміна вхідного значення на протилежне. Цю операцію ще називають запереченням або інвертуванням (від англ. inversion – перевертання). Ввести у симулятор та дослідити у покроковому режимі програму, яка буде виконувати логічні операції І, АБО, Виключне-АБО та НЕ над двома числами. Коди чисел вибрати згідно варіанту, що визначається у 1-й лабораторній роботі, використовуючи всі чотири тетради 16-ти розрядного формату. Наприклад, якщо задане число 1810 = 000100102 , воно записується у вигляді: 00010010 00010010. Виписати результати виконання програми та значення прапорців ознак. Для початку виконання програми потрібно ввести інструкції в пам׳ять, починаючи з 0-вої комірки. Число А потрібно занести у 10-ту комірку, а число В – у 11-ту. Результат буде записаний у 11-тій комірці.Вхідні дані: А=13; В=33. № комірки пам’яті Двійковий код інструкції Мнемонічний запис інструкції Коментар  0000 0000 0000 0000 0000 0000 1010 LOAD 10; завантажити до акумулятора змінну a  0000 0000 0001 0100 0000 0000 1011 AND 11; Логічне множення змінної a на змінну b  0000 0000 0010 0001 0000 0000 1011 STORE 11; Запис результату в 11-ту комірку  0000 0000 0011 0111 1100 0000 0000 HALT ; Припинення виконання програми  Аналогічно програма буде виглядати для решти інструкцій,лише ми будем змінювати 2-гу інструкцію на відповідну до завдання. № кроку РА РД А РІ ЛАІ РО  1-й крок 0000 0000 1010 0000 0000 0000 1101 0000 0000 0000 1101 0000 0000 0000 1010 0000 0000 0001   2-й крок  0000 0000 1011 0000 0000 0010 0001 0000 0000 0000 0001 0100 0000 0000 1011 0000 0000 0010   3-й крок  0000 0000 1011 0000 0000 0000 0001 0000 0000 0000 0001 0001 0000 0000 1011 0000 0000 0011   4-й крок 0000 0000 0011 0111 1100 0000 0000 0000 0000 0000 0001 0111 1100 0000 0000 0000 0000 0011   Логічна операція AND Результат виконання програми : 0000 0000 0000 0001. Логічна операція OR № кроку РА РД А РІ ЛАІ РО  1-й крок 0000 0000 1010 0000 0000 0000 1101 0000 0000 0000 1101 0000 0000 0000 1010 0000 0000 0001   2-й крок  0000 0000 1011 0000 0000 0010 0001 0000 0000 0010 1101 0101 0000 0000 1011 0000 0000 0010   3-й крок  0000 0000 1011 0000 0000 0010 1101 0000 0000 0010 1101 0001 0000 0000 1011 0000 0000 0011   4-й крок 0000 0000 0011 0111 1100 0000 0000 0000 0000 0010 1101 0111 1100 0000 0000 0000 0000 0011   Результат виконання програми : 0000 0000 0010 1101. Логічна операція XOR № кроку РА РД А РІ ЛАІ РО  1-й крок 0000 0000 1010 0000 0000 0000 1101 0000 0000 0000 1101 0000 0000 0000 1010 0000 0000 0001   2-й крок  0000 0000 1011 0000 0000 0010 0001 0000 0000 0010 1100 0110 0000 0000 1011 0000 0000 0010   3-й крок  0000 0000 1011 0000 0000 0010 1101 0000 0000 0010 1100 0001 0000 0000 1011 0000 0000 0011   4-й крок 0000 0000 0011 0111 1100 0000 0000 0000 0000 0010 1100 0111 1100 0000 0000 0000 0000 0011   Результат виконання програми : 0000 0000 0010 1100. Логічна операція NOT № кроку РА РД А РІ ЛАІ РО  1-й крок  0000 0000 1010 0000 0000 0000 1101 0000 0000 0000 1101 0000 0000 0000 1010 0000 0000 0001   2-й крок  0000 0000 0001 0111 0000 0000 0000 1111 1111 1111 1101 0111 0000 0000 0000 0000 0000 0010 S  3-й крок  0000 0000 1011 1111 1111 1111 1101 1111 1111 1111 1101 0001 0000 0000 1011 0000 0000 0011 S  4-й крок  0000 0000 0011 0111 1100 0000 0000 1111 1111 1111 1101 0111 1100 0000 0000 0000 0000 0011 S   Результат виконання програми : 1111 1111 1111 1101. Дослідити у потактовому режимі інструкції AND I XOR - для непарних номерів із журналу списку групи, OR та NOT - для парних номерів із списку групи. Виписати результати виконання програми. Для початку виконання програми потрібно ввести інструкції в пам׳ять, починаючи з 0-вої комірки. Число А потрібно занести у 10-ту комірку, а число В – у 11-ту. Результат буде записаний у 12-тій комірці.Вхідні дані: А=13; В=33. № комірки пам’яті Двійковий код інструкції Мнемонічний запис інструкції Коментар  0000 0000 0000 0000 0000 0000 1010 LOAD 10; завантажити до акумулятора змінну a  0000 0000 0001 0100 0000 0000 1011 AND 11; Логічне множення змінної a на змінну b  0000 0000 0010 0001 0000 0000 1011 STORE 12; Запис результату в 11-ту комірку  0000 0000 0011 0111 1100 0000 0000 HALT ; Припинення виконання програми  Аналогічно програма буде виглядати для інструкцій NOT,лише ми будем змінювати 2-гу інструкцію на інструкцію команди NOT. Інструкція OR. № Мнемонічний запис Код, що обробляється Коментар  1 ЛАІ ( РА 0000 0000 0000 вибір адреси 1-ої інструкції і занесення її до Регістра Адреси  2 РА ( РД 0000 0000 0000 1010 вибір коду інструкції з РА і занесення його до Регістра Даних  3 РД ( РІ 0000 0000 0000 1010 декодування інструкції у Регістрі Інструкцій  4 РІ ( РА 0000 0000 1010 вибір адреси 1-го операнда  5 РА ( РД 0000 0000 0000 1101 вибір коду 1-го операнда з пам’яті і запис його до Регістру Даних  6 РД ( А 0000 0000 0000 1101 Запис 1-го операнда з пам’яті в Акумулятор  7 ЛАІ +1 ( ЛАІ 0000 0000 0001 підготовка адреси нової інструкції  8 ЛАІ ( РА 0000 0000 0001 вибір адреси 2-ої інструкції і занесення її до Регістра Адреси  9 РА ( РД 0101 0000 0000 1011 вибір коду інструкції з РА і занесення його до Регістра Даних  10 РД ( РІ 0101 0000 0000 1011 декодування інструкції у Регістрі Інструкцій  11 РІ ( РА 0000 0000 1011 вибір адреси 2-го операнда  12 РА ( РД 0000 0000 0010 0001 вибір коду 2-го операнда з пам’яті і запис його до Регістру Даних  13 РД v А(А 0000 0000 0010 1101  диз’юнкція 2 чисел. Результат записаний у Акумуляторі  14 А(РО Z=0; S=0; C=0; Відображення результату на Регістрі Ознак  15 ЛАІ +1 ( ЛАІ 0000 0000 0010 підготовка адреси нової інструкції  16 ЛАІ ( РА 0000 0000 0010 вибір адреси 3-ої інструкції і занесення її до Регістра Адреси  17 РА ( РД 0001 0000 0000 1100 запис 3-ої інструкції до Регістру Даних  18 РД ( РІ 0001 0000 0000 1100 декодування інструкції у Регістрі Інструкцій  19 РІ ( РА 0000 0000 1100 запис 3-ої інструкції до Регістру Адреси для виконання  20 РА ( РД 0000 0000 0000 1011 запис 3-ої інструкції до Регістру Даних для виконання  21 А( РД 0000 0000 0010 1101 Запис результату до Регістру Даних  22 РД ( РА 0000 0000 0010 1101 Запис результату до 12-тої комірки  23 ЛАІ +1 ( ЛАІ 0000 0000 0011 підготовка адреси нової інструкції  24 ЛАІ ( РА 0000 0000 0011 вибір адреси 4-ої інструкції і занесення її до Регістра Адреси  25 РА ( РД 0111 1100 0000 0000 Запис 4-ої інструкції до Регістру Даних  26 РД ( РІ 0111 1100 0000 0000 декодування інструкції у Регістрі Інструкцій   Інструкція NOT. № Мнемонічний запис Код, що обробляється Коментар  1 ЛАІ ( РА 0000 0000 0000 вибір адреси 1-ої інструкції і занесення її до Регістра Адреси  2 РА ( РД 0000 0000 0000 1010 вибір коду інструкції з РА і занесення його до Регістра Даних  3 РД ( РІ 0000 0000 0000 1010 декодування інструкції у Регістрі Інструкцій  4 РІ ( РА 0000 0000 1010 вибір адреси 1-го операнда  5 РА ( РД 0000 0000 0000 1101 вибір коду 1-го операнда з пам’яті і запис його до Регістру Даних  6 РД ( А 0000 0000 0000 1101 Запис 1-го операнда з пам’яті в Акумулятор  7 ЛАІ +1 ( ЛАІ 0000 0000 0001 підготовка адреси нової інструкції  8 ЛАІ ( РА 0000 0000 0001 вибір адреси 2-ої інструкції і занесення її до Регістра Адреси  9 РА ( РД 0111 0000 0000 0000 вибір коду інструкції з РА і занесення його до Регістра Даних  10 РД ( РІ 0111 0000 0000 0000 декодування інструкції у Регістрі Інструкцій  11 ~А(А 1111 1111 1111 0010 Інвертування числа  12 А(РО Z=0; S=1; C=0; Відображення результату на Регістрі Ознак  13 ЛАІ +1 ( ЛАІ 0000 0000 0010 підготовка адреси нової інструкції  14 ЛАІ ( РА 0000 0000 0010 вибір адреси 3-ої інструкції і занесення її до Регістра Адреси  15 РА ( РД 0001 0000 0000 1100 запис 3-ої інструкції до Регістру Даних  16 РД ( РІ 0001 0000 0000 1100 декодування інструкції у Регістрі Інструкцій  17 РІ ( РА 0000 0000 1100 запис 3-ої інструкції до Регістру Адреси для виконання  18 РА ( РД 0000 0000 0000 1011 запис 3-ої інструкції до Регістру Даних для виконання  19 А( РД 1111 1111 1111 0010 Запис результату до Регістру Даних  20 РД ( РА 1111 1111 1111 0010 Запис результату до 12-тої комірки  21 ЛАІ +1 ( ЛАІ 0000 0000 0011 підготовка адреси нової інструкції  22 ЛАІ ( РА 0000 0000 0011 вибір адреси 4-ої інструкції і занесення її до Регістра Адреси  23 РА ( РД 0111 1100 0000 0000 Запис 4-ої інструкції до Регістру Даних  24 РД ( РІ 0111 1100 0000 0000 декодування інструкції у Регістрі Інструкцій   Розробити алгоритм і написати програму, що для довільного числа "А", яке розміщене у комірці пам"яті з адресою "N", підраховує кількість пар "11" - для непарних номерів із списку групи, і кількість пар "00" - для парних номерів із списку групи. комірка Значення  20 число А.  21 Результат..  22 одиничка.  23 Лічильник   № комірки пам’яті Двійковий код інструкції Мнемонічний запис інструкції Коментар  0000 0000 0000 0000 0000 0001 0100 LOAD 20; Завантажуєм число А до Акумулятора.  0000 0000 0001 1111 1100 0000 0000 RCL Зсуваємо число на один розряд вліво  0000 0000 0010 1101 0000 0000 1100 JC 12; Умовний перехід на 12 комірку, якщо С=1.Інакше виконується наступний оператор  0000 0000 0011 0000 0000 0001 0111 LOAD 23; Завантаження лічильника.  0000 0000 0100 0011 0000 0001 0110 SUB 22; Від значення лічильника віднімаємо 1.  0000 0000 0101 0001 0000 0001 0111 STORE 23; Запис нового значення лічильника.  0000 0000 0110 1001 0000 0001 0000 JZ 16; Перевірка умови Z=1; Якщо умова виконується – перехід на 16 комірку .Інакше виконується наступний оператор.  0000 0000 0111 1111 1100 0000 0000 RCL Зсуваємо число на один розряд вліво  0000 0000 1000 1101 0000 0000 1100 JC 12; Умовний перехід на 12 комірку, якщо С=1.Інакше виконується наступний оператор  0000 0000 1001 0000 0000 0001 0101 LOAD 21; Завантаження результату  0000 0000 1010 0010 0000 0001 0110 ADD 22; Збільшення результату на 1  0000 0000 1011 0001 0000 0001 0101 STORE 21; Запис нового значення результату  0000 0000 1100 0000 0000 0001 0111 LOAD 23; Завантаження лічильника.  0000 0000 1101 0011 0000 0001 0110 SUB 22; Від значення лічильника віднімаємо 1.  0000 0000 1110 0001 0000 0001 0111 STORE 23; Запис нового значення лічильника.  0000 0000 1111 1000 0000 0000 0001 JNZ 1; Перевірка умови Z=0; Якщо умова виконується – перехід на 1 комірку .Інакше виконується наступний оператор.  0000 0001 0000 0111 1100 0000 0000 HALT; Припинення виконання програми   Розробити алгоритм і написати програму, у якій для числа, яке використовується у пункті 4, виконується інвертування пар "11" - для парних номерів із списку групи і інвертування пар "00" - для непарних номерів із списку групи Комірка Значення  20 Число А  21 Інвертоване число А  22 Модифіковане число А (інвертоване й зсунуте на 1 розряд вправо)  23 Число,що вказує на розміщення пар  24 Кінцевий результат   № комірки пам’яті Двійковий код інструкції Мнемонічний запис інструкції Коментар  0000 0000 0000 0000 0000 0001 0100 LOAD 20 Завантажуємо число А до акумулятора  0000 0000 0001 0111 0000 0000 0000 NOT Інвертуємо число А  0000 0000 0010 0001 0000 0001 0101 STORE 21 Записуємо інвертоване число до 21 комірки  0000 0000 0011 1111 0010 0000 0000 LSR Інвертоване число А зсуваємо вправо на один розряд  0000 0000 0100 0001 0000 0001 0110 STORE 22 Записуємо модифіковане число його до 22 комірки  0000 0000 0101 0000 0000 0001 0101 LOAD 21 Завантажуємо інвертоване число до Акумулятора  0000 0000 0110 0100 0000 0001 0110 AND 22 За допомогою операції логічного множення визначаємо розташування пар 00.  0000 0000 0111 0001 0000 0001 0111 STORE 23 Записуємо результат множення до 23 комірки  0000 0000 1000 0000 0000 0001 0100 LOAD 20 Завантажуємо початкове значення числа А.  0000 0000 1001 0010 0000 0001 0111 OR 23 За допомогою операції логічного додавання інвертуємо пари 00 у числі А.  0000 0000 1010 0001 0000 0001 1000 STORE 24 Записуємо кінцевий результат до 24 комірки  0000 0000 1011 0111 1100 0000 0000 HALT Завершуємо виконання   Розробити алгоритм і написати програму додавання двох від’ємних 16-ти розрядних чисел. Операція виконується у доповняльному коді. № комірки пам’яті Двійковий код інструкції Мнемонічний запис інструкції Коментар  0000 0000 0000 0000 0000 0000 1111 LOAD 15; Завантажуєм число А до Акумулятора.  0000 0000 0001 0111 0000 0000 0000 NOT Інвертуємо число А.  0000 0000 0010 0010 0000 0001 0000 ADD 16; Додаєм до А одиничку.  0000 0000 0011 0001 0000 0000 1111 STORE 15; Запис доповняльного коду числа А.  
Антиботан аватар за замовчуванням

23.03.2013 18:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!