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

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

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

Рік:
2008
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Інші

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт з лабораторної роботи № 4 з дисципліни: “Дослідження інструкцій логічних операцій навчального комп’ютера – симулятора DeComp. Вивчення порядку виконання операції додавання довільних чисел у процесорі навчального комп’ютера.” 2008 Теоретичні відомості Загальні відомості про логічні функції Усі дії, які виконуються у комп’ютері, повинні бути закодовані попередньо у програмі. За допомогою кожної команди програми кодується одна операція комп’ютера, яка виконується над парою операндів. Арифметична операція – операція, у якій операнди і результат сприймаються як числа. До них відносяться операції додавання і віднімання, з якими ми познайомилися у попередніх роботах, а також операції множення і ділення. Усі інші операції, наприклад, добування кореня квадратного, піднесення до степеня, дифференцювання та ін., реалізуються у комп’ютері на основі вказаних операцій. Логічна операція – операція, що полягає у логічній обробці операндів, які приймають у ній участь. До них відносяться операції порівняння, визначення модуля, визначення ознак результатів арифметичних операцій та ін. До них часом відносять операції зсуву праворуч або ліворуч. Точна, певна послідовність операцій або програма, яка потрібна для виконання певної задачі на комп’ютері, формується на основі математичної теорії, відомої як алгебра логіки. Створив алгебру логіки англійський математик Дж. Буль (1815 – 1864). Тому її називають також алгеброю Буля. Алгебра логіки отримала значний розвиток завдяки роботам таких вчених як Е. Пост, К. Шеннон, В. Глушков, С. Яблонський та ін. Основним поняттям алгебри логіки є висловлювання. Під час вивчення звичайної алгебри розглядають залежності типу А = f(x1, x2, …xn), де x1, x2, …xn – аргументи, а А – функція. Аргументи і функція при цьому можуть набувати найрізноманітніших числових значень: додатних і від’ємних, цілих і дробових. У алгебрі логіки вивчають залежності аналогічного вигляду А = f(x1, x2, …xn), але такі, в яких аргументи і функція можуть набувати тільки двох значень: 1 і 0. Практичне використання таких функцій є формальним (математичним) описом логіки людського мислення в процесі виконання якоїсь задачі. Вся діяльність людини так або інакше пов’язана з різними висловлюваннями. Будь-яке вимовлене твердження, зауваження є певним висловлюванням. У алгебрі логіки саме висловлювання є змінною (аргументом), яка може набувати одного з двох можливих значень (істина чи фальш, так чи ні, правдиво чи не правдиво) і над якою можна виконувати деякі дії. Подібно до аргументів у звичайній алгебрі, висловлювання позначають буквами якого-небудь алфавіту, наприклад, X, Y,Z або а, в, с. . . За змістом висловлювання поділяють на прості і складні. Наприклад, прості: “вікно відчинене”, “у квартирі холодно”, “Микола вчиться в національному університеті “Львівська політехніка”, “Микола йде на стадіон”. З простих висловлювань за допомогою слів-зв’язок (сполучників) І, АБО, НЕ, ЯКЩО-ТО та ін. утворюють складні. Наприклад, речення: „Вікно відчинене і у квартирі холодно”, „Микола піде у парк або на стадіон”. Будь-яке висловлювання може відповідати або не відповідати дійсності. У першому випадку його називають істинним (правдивим, true) і позначають як 1, а в інших – помилковим (хибним, false) і позначають як 0. Особливістю виконання логічних операцій є порозрядність, тобто операції виконуються над кожною парою розрядів числа окремо і при цьому переповнення розрядної сітки не відбувається. У обчислювальній техніці логічні операції використовуються надзвичайно широко. Опис логічних інструкцій навчального комп’ютера Група інструкцій, яку ми будемо досліджувати у даній роботі, присвячена логічним операціям: 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. Ввести у симулятор та дослідити у покроковому режимі програму, яка виконуватиме логічні операції І, АБО, Виключне-АБО та НЕ над двома числами. Коди чисел вибрати самостійно, використовуючи всі чотири тетради 16-ти розрядного формату. Виписати результати та значення прапорців ознак. Досліджую операцію І, попередньо в 10-у і 11-у комірки заношу числа, над яким буде виконуватись операція: 1100 0011 1100 0011 і 0101 0101 0101 0101. Далі виконую наступну програму: №п/п Адреса комірки Код інструкції Мнемонічний запис Коментар  1 0000 0000 0000 0000 0000 0000 1010 Load 10 Завантажує операнд 10-ї комірки  2 0000 0000 0001 0100 0000 0000 1011 AND 11 Виконує операцію І над операндами 10-ї і 11-ї комірок  3 0000 0000 0010 0111 1100 0000 0000 Halt Завершує виконання програми   РА РД А РІ ЛАІ РО  Крок 1 0000 0000 1010 1100 0011 1100 0011 1100 0011 1100 0011 0000 0000 0000 1010 0000 0000 0001 0  Крок 2 0000 0000 1011 0101 0101 0101 0101 0100 0001 01000 00001 0100 0000 0000 1011 0000 0000 0010 0  Крок 3 0000 0000 0010 0111 1100 0000 0000 0100 0001 0100 0001 0111 1100 0000 0000 0000 0000 0010 0  Після виконання операцій логічне І над двома числами я отримав результат 0100 0001 01000 00001, значення прапорців регістру ознак незмінились і є рівними 0. Наступною розгляну інструкцію АБО, для цього використаю таку програму: №п/п Адреса комірки Код інструкції Мнемонічний запис Коментар  1 0000 0000 0000 0000 0000 0000 1010 Load 10 Завантажує операнд 10-ї комірки  2 0000 0000 0001 0101 0000 0000 1011 OR 11 Виконує операцію АБО над операндами 10-ї і 11-ї комірок  3 0000 0000 0010 0111 1100 0000 0000 Halt Завершує виконання програми   РА РД А РІ ЛАІ РО  Крок 1 0000 0000 1010 1100 0011 1100 0011 1100 0011 1100 0011 0000 0000 0000 1010 0000 0000 0001 0  Крок 2 0000 0000 1011 0101 0101 0101 0101 1101 0111 1101 0111 0101 0000 0000 1011 0000 0000 0010 S  Крок 3 0000 0000 0010 0111 1100 0000 0000 1101 0111 1101 0111 0111 1100 0000 0000 0000 0000 0010 S  Після виконання операцій логічне АБО над двома числами я отримав результат 1101 0111 1101 0111, під час виконання програми регістр ознак S набув значення 1. Розглядаю інструкцію Виключне-АБО, для цього виконую наступну програму: №п/п Адреса комірки Код інструкції Мнемонічний запис Коментар  1 0000 0000 0000 0000 0000 0000 1010 Load 10 Завантажує операнд 10-ї комірки  2 0000 0000 0001 0110 0000 0000 1011 XOR 11 Виконує операцію АБО над операндами 10-ї і 11-ї комірок  3 0000 0000 0010 0111 1100 0000 0000 Halt Завершує виконання програми   РА РД А РІ ЛАІ РО  Крок 1 0000 0000 1010 1100 0011 1100 0011 1100 0011 1100 0011 0000 0000 0000 1010 0000 0000 0001 0  Крок 2 0000 0000 1011 0101 0101 0101 0101 1001 0110 1001 0110 0110 0000 0000 1011 0000 0000 0010 S  Крок 3 0000 0000 0010 0111 1100 0000 0000 1100 0011 1100 0011 0111 1100 0000 0000 0000 0000 0010 S  Після виконання операцій логічне виключне-АБО над двома числами я отримав результат 1001 0110 1001 0110, під час виконання програми регістр ознак S набув значення 1. Розглядаю інструкцію NOT, для цього виконую таку програму: №п/п Адреса комірки Код інструкції Мнемонічний запис Коментар  1 0000 0000 0000 0000 0000 0000 1010 Load 10 Завантажує операнд 10-ї комірки  2 0000 0000 0001 0111 0000 0000 0000 Not Інвертує операнд 10-ї комірки  3 0000 0000 0010 0111 1100 0000 0000 Halt Завершує виконання програми   РА РД А РІ ЛАІ РО  Крок 1 0000 0000 1010 1100 0011 1100 0011 1100 0011 1100 0011 0000 0000 0000 1010 0000 0000 0001 0  Крок 2 0000 0000 0001 0111 0000 0000 0000 0011 1100 0011 1100 0111 0000 0000 0000 0000 0000 0010 0  Крок 3 0000 0000 0010 0111 1100 0000 0000 0011 1100 0011 1100 0111 1100 0000 0000 0000 0000 0010 0  Після виконання операцій НЕ логічне над вмістом Акумулятора, я отримав результат 0011 1100 0011 1100, значення прапорців регістру ознак незмінились і є рівними 0. 3). Дослідити в потактовому режимі інструкції AND I XOR - для непарних номерів із списку групи, OR I NOT - для парних номерів із списку групи. Досліджую в потактовому режимі інструкцію OR, щоб дослідити цю інструкцію я заніс в Акумулятор число 1100 0011 1100 0011 і в 11-ту комірку число 0101 0101 0101 0101 № Мнемонічний запис Код, що обробляється Коментар   ЛАІ ( РА 0000 0000 0000 вибір адреси 1-ої інструкції і занесення її до Регістра Адреси   РА ( РД 0101 0000 0000 1011 вибір коду інструкції з РА і занесення його до Регістра Даних   РД ( РІ 0101 0000 0000 1011 декодування інструкції у Регістрі Інструкцій   РІ ( РА 0000 0000 1011 вибір адреси першого числа   РА ( РД 0101 0101 0101 0101 Вибір числа з комірки 11   РД OR А( А 1101 0111 1101 0111 Логічна операція АБО над вмістом акумулятора і числом з комірки 11   А → РО. S Зміна значення регістру ознак S   ЛАІ ( ЛАІ +1 0000 0000 0001 Перехід до наступної інструкції   Досліджую в потактовому режимі інструкцію NOT, щоб дослідити цю інструкцію я заніс в Акумулятор число 1100 0011 1100 0011. № Мнемонічний запис Код, що обробляється Коментар   ЛАІ ( РА 0000 0000 0000 вибір адреси 1-ої інструкції і занесення її до Регістра Адреси   РА ( РД 0101 0000 0000 1011 вибір коду інструкції з РА і занесення його до Регістра Даних   РД ( РІ 0101 0000 0000 1011 декодування інструкції у Регістрі Інструкцій   NOT А( А 1101 0111 1101 0111 Логічна операція НЕ над вмістом акумулятора   ЛАІ ( ЛАІ +1 0000 0000 0001 Перехід до наступної інструкції  4). Розробити алгоритм і написати програму, що для довільного додатного числа "А" з комірки пам"яті "N" підраховує кількість пар "11" - для непарних номерів із списку групи, і кількість пар "00" - для парних номерів із списку групи. Программа виконується у автоматичному режимі. Для підрахування пар «00» попередньо в комірку з номером 40 записую число, в якому буду рахувати пари – 0011 0011 1011 1011, в комірку з номером 41 записую маску – 0000 0000 0000 0011, в 42-у лічильник пар (початкове значення – 0), в 43-у – 1 для зміни параметру циклу, і зміни лічильника, в 44-у – 16, лічильник циклу. Далі виконую таку програму: №п/п Адреса комірки Код інструкції Мнемонічний запис Коментар  1 0000 0000 0000 0000 0000 0010 1000 Load 40 Виконує циклічний зсув вліво над операндом 40-ї комірки  2 0000 0000 0001 1111 1000 0000 0000 ROL   3 0000 0000 0010 0001 0000 0010 1000 Store 40   4 0000 0000 0011 0110 0000 0010 1001 XOR 41 Проводить операцію логічного множення над значенням акумулятора та операндом 41-ї комірки  5 0000 0000 0100 1111 1110 0000 0000 RCR Перевіряє наявність пари «11», при її відсутності виконання програми продовжується з 11-ї комірки  6 0000 0000 0101 1100 0000 0000 1011 JNC 11   7 0000 0000 0110 1111 1110 0000 0000 RCR   8 0000 0000 0111 1100 0000 0000 1011 JNC 11   9 0000 0000 1000 0000 0000 0010 1010 Load 42 Додає до лічильника пар одиницю  10 0000 0000 1001 0010 0000 0010 1011 Add 43   11 0000 0000 1010 0001 0000 0010 1010 Store 42   12 0000 0000 1011 0000 0000 0010 1100 Load 44 Виконує зміну параметру циклу  13 0000 0000 1100 0011 0000 0010 1011 Sub 43   14 0000 0000 1101 0001 0000 0010 1100 Store 44   15 0000 0000 1110 1100 0000 0000 0000 JNZ 0 Виконує перевірку кінця циклу (керування циклом)  16 0000 0001 0001 0111 1100 0000 0000 Halt Закінчити виконання програми   5). Розробити алгоритм і написати програму, у якій для довільного додатного числа А виконується інвертування пар "00" - для парних номерів із списку групи і інвертування пар "00" - для непарних номерів із списку групи. Програма виконується у автоматичному режимі. Для інвертування пар «11» в 40-у комірку заношу те саме число, в 41-у – маску, в 42-у – обернену маску, 43-у – 1, а в 44-у – 17 і виконую таку програму: №п/п Адреса комірки Код інструкції Мнемонічний запис Коментар  1 0000 0000 0000 0000 0000 0010 1000 Load 40 Виконує циклічний зсув вліво над операндом 40-ї комірки  2 0000 0000 0001 1111 1000 0000 0000 ROL   3 0000 0000 0010 0001 0000 0010 1000 Store 40   4 0000 0000 0011 0110 0000 0010 1001 XOR 41 Проводить операцію логічного множення над значенням акумулятора та операндом 41-ї комірки  5 0000 0000 0100 1111 1110 0000 0000 RCR Перевіряє наявність пари «11», при її відсутності виконання програми продовжується з 11-ї комірки  6 0000 0000 0101 1100 0000 0000 1011 JNC 11   7 0000 0000 0110 1111 1110 0000 0000 RCR   8 0000 0000 0111 1100 0000 0000 1011 JNC 11   9 0000 0000 1000 0000 0000 0010 1000 Load 40 Інвертує знайдену пару «11» в операнді 40-ї комірки  10 0000 0000 1001 0110 0000 0010 1010 XOR 42   11 0000 0000 1010 0001 0000 0010 1000 Store 40   12 0000 0000 1011 0000 0000 0010 1100 Load 44 Виконує зміну параметру циклу  13 0000 0000 1100 0011 0000 0010 1011 Sub 43   14 0000 0000 1101 0001 0000 0010 1100 Store 44   15 0000 0000 1110 1100 0000 0000 0000 JNC 0 Виконує перевірку кінця циклу (керування циклом)  16 0000 0001 0001 0111 1100 0000 0000 Halt Закінчити виконання програми   Висновки: Під час виконання цієї лабораторної роботи я вивчив призначення логічних операцій; навчився створювати і використовувати «маски» за допомогою логічних операцій. Також я вивчив алгоритми додавання довільних чисел у навчальному комп’ютері DeComp. Важливим є те, що під час виконання програми комп'ютеру неможливо відрізнити де додатнє, а де від'ємне число, тому складаючи програму необхідно передбачити виконання алгоритму для представлення від'ємних чисел в доповняльному коді.
Антиботан аватар за замовчуванням

05.05.2013 20:05-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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