Міністерство освіти і науки
Національний університет „Львівська політехніка”
Кафедра СКС
Звіт
з лабораторної роботи № 4
з дисципліни: “Організація та функціонування комп’ютерів”
на тему: “Дослідження інструкцій логічних операцій і виконання
арифметичних операцій навчального комп’ютера – симулятора DeComp.”
Тема: Дослідження інструкцій логічних операцій і виконання арифметичних операцій
навчального комп’ютера – симулятора DeComp.
Мета роботи: 1. Вивчити призначення логічних операцій.
2. Навчитись створювати і використовувати "фільтри" за допомогою
логічних операцій.
3. Вивчити правила кодування додатних і від’ємних двійкових чисел для
здійснення арифметичних операцій у комп’ютерах;
4. Навчитися кодувати двійкові числа із знаком у інструкціях навчального
комп’ютера – симулятора DeComp.
1. Теоретичні відомості
Загальні відомості про логічні функції
Усі дії, які виконуються у комп’ютері, повинні бути закодовані попередньо у програмі. За допомогою кожної команди програми кодується одна операція комп’ютера, яка виконується над парою операндів.
Арифметична операція – операція, у якій операнди і результат сприймаються як числа. До них відносяться операції додавання і віднімання, з якими ми познайомилися у попередніх роботах, а також операції множення і ділення. Усі інші операції, наприклад, добування кореня квадратного, піднесення до степеня, дифференцювання та ін., реалізуються у комп’ютері на основі вказаних операцій.
Логічна операція – операція, що полягає у логічній обробці операндів, які приймають у ній участь. До них відносяться операції порівняння, визначення модуля, визначення ознак результатів арифметичних операцій та ін. До них часом відносять операції зсуву праворуч або ліворуч.
Точна, певна послідовність операцій або програма, яка потрібна для виконання певної задачі на комп’ютері, формується на основі математичної теорії, відомої як алгебра логіки. Створив алгебру логіки англійський математик Дж. Буль (1815 – 1864). Тому її називають також алгеброю Буля. Алгебра логіки отримала значний розвиток завдяки роботам таких вчених як Е. Пост, К. Шеннон, В. Глушков, С. Яблонський та ін. Основним поняттям алгебри логіки є висловлювання.
Під час вивчення звичайної алгебри розглядають залежності типу А = f(x1, x2, …xn), де x1, x2, …xn – аргументи, а А – функція. Аргументи і функція при цьому можуть набувати найрізноманітніших числових значень: додатних і від’ємних, цілих і дробових. У алгебрі логіки вивчають залежності аналогічного вигляду А = f(x1, x2, …xn), але такі, в яких аргументи і функція можуть набувати тільки двох значень: 1 і 0. Практичне використання таких функцій є формальним (математичним) описом логіки людського мислення в процесі виконання якоїсь задачі.
Вся діяльність людини так або інакше пов’язана з різними висловлюваннями. Будь-яке вимовлене твердження, зауваження є певним висловлюванням. У алгебрі логіки саме висловлювання є змінною (аргументом), яка може набувати одного з двох можливих значень (істина чи фальш, так чи ні, правдиво чи не правдиво) і над якою можна виконувати деякі дії. Подібно до аргументів у звичайній алгебрі, висловлювання позначають буквами якого-небудь алфавіту, наприклад, X, Y,Z або а, в, с. . .
За змістом висловлювання поділяють на прості і складні. Наприклад, прості: “вікно відчинене”, “у квартирі холодно”, “Микола вчиться в національному університеті “Львівська політехніка”, “Микола йде на стадіон”. З простих висловлювань за допомогою слів-зв’язок (сполучників) І, АБО, НЕ, ЯКЩО-ТО та ін. утворюють складні. Наприклад, речення: „Вікно відчинене і у квартирі холодно”, „Микола піде у парк або на стадіон”.
Будь-яке висловлювання може відповідати або не відповідати дійсності. У першому випадку його називають істинним (правдивим, true) і позначають як 1, а в інших – помилковим (хибним, false) і позначають як 0.
Особливістю виконання логічних операцій є порозрядність, тобто операції виконуються над кожною парою розрядів числа окремо і при цьому переповнення розрядної сітки не відбувається.
У обчислювальній техніці логічні операції використовуються надзвичайно широко.
2. Хід виконання роботи
Вивчити і записати у звіт призначення логічних операцій AND, OR, NOT I XOR.
AND – логічна операція під назвою кон’юнкція або «логічне множення», вимагає щоб обидва операнди мали значення 1 щоб кінцеве значення було істинним.
OR – логічна операція під назвою диз’юнкція або «логічне додавання», для істинного значення вимагає щоб хоча-б один з операторів мав значення 1.
NOT – «логічне заперечення», змінює значення операнду на протилежне.
XOR – логічна операція піл назвою «Виключне-АБО» для істинного значення вимагає значення 1 у одного з операндів, але якщо значення обох операндів 1 видає результат 0.
Ввести у симулятор та дослідити у покроковому режимі програму, яка буде виконувати логічні операції І, АБО, Виключне-АБО та НЕ над двома числами. Коди чисел вибрати згідно варіанту, що визначається у 1-й лабораторній роботі, використовуючи всі чотири тетради 16-ти розрядного формату. Наприклад, якщо задане число 1810 = 000100102 , воно записується у вигляді: 00010010 00010010. Виписати результати виконання програми та значення прапорців ознак.
Досліджую операцію І, попередньо в 10-у занощу число 35 а у 11-у комірки заношу число 17. Використавши чотири тетради число 35 матиме вигляд , число 17 - .
Програма для дослідження операції І:
В результаті виконання програми я отримав значення акумулятора 0000 0100 0000 0001.
Протягом всіх кроків програми регістр ознак мав значення 000.
Досліджую операцію АБО, в комірки 10 та 11 заношу числа з попередньої програми:
35 -
17 -
Програма для дослідження операції АБО:
Результат виконання програми:
1100 1110 0111 00111
Значення регістру ознак:
1-крок – 000
2-крок – 010
3-крок – 010
Дослідити у потактовому режимі інструкції AND I XOR - для непарних номерів із журналу списку групи, OR та NOT - для парних номерів із списку групи. Виписати результати виконання програми.
Розглядаю інструкцію Виключне-АБО, для цього виконую наступну програму:
Робота інструкції XOR у потактовому режимі:
Такт1: ЛАІ → РА – 0000 0000 0001;
Такт2: Пам’ять РА → РД – 0110 0000 0000 1011;
Такт3: РД → РІ – 0110 0000 0000 1011;
Такт4: РІ → РА – 0000 0000 1011;
Такт5: Пам’ять РА → РД – 1000 1100 0101 0011;
Такт6: РД + АК → 1100 1010 0111 0010
Такт7: АК → РО – S.
Результат роботи програми:
Акумулятор набув значення - 1100 1010 0111 0010
Регістр ознак набув значення – 010
Програма для дослідження операції АБО:
Робота інструкції AND у потактовому режимі:
Такт1: ЛАІ → РА – 0000 0000 0001;
Такт2: Пам’ять РА → РД – 0101 0000 0000 1011;
Такт3: РД → РІ – 0101 0000 0000 1011;
Такт4: РІ → РА – 0000 0000 1011;
Такт5: Пам’ять РА → РД – 0100 0110 0010 0011;
Такт6: РД + АК → 1100 1110 0111 0011;
Такт7: АК → РО – S.
Результат роботи програми:
Акумулятор набув значення - 1100 1110 0111 0011
Регістр ознак набув значення – 010
Розробити алгоритм і написати програму, що для довільного числа "А", яке розміщене у комірці пам"яті з адресою "N", підраховує кількість пар "11" - для непарних номерів із списку групи, і кількість пар "00" - для парних номерів із списку групи.
Для підрахування пар «11» попередньо в комірку з номером 40 записую число, в якому буду рахувати пари – 0011 0011 1011 1011, в комірку з номером 41 записую фільтр – 0000 0000 0000 0011, в 42-у лічильник пар (початкове значення – 0), в 43-у – 1 для зміни параметру циклу, і зміни лічильника, в 44-у – 16, лічильник циклу. Далі виконую таку програму:
Результатом обчислень є число 6.
5. Розробити алгоритм і написати програму, у якій для числа, яке використовується у пункті 4, виконується інвертування пар "11" - для парних номерів із списку групи і інвертування пар "00" - для непарних номерів із списку групи.
Для інвертування пар «11» в 40-у комірку заношу те саме число, в 41-у – маску, в 42-у – обернений фільтр, 43-у – 1, а в 44-у – 17 і виконую таку програму:
Після виконання програми одержу таке число – 0000 0010 0010 0000.
6. Розробити алгоритм і написати програму додавання двох від’ємних 16-ти розрядних чисел. Операція виконується у доповняльному коді.
Щоб виконати додавання двох чисел в 40-у комірку заношу додатнє число 0000 0000 0001 0000, а у 41-у – 1000 0000 0000 1000. В 42-у – 1000 0000 0000 0000, 43-у – 1. Від’ємне число подам у доповняльному коді, для цього використаю таку програму:
Після виконання програми одержую таке число: 0000 0000 0000 1000. Нуль на початку числа означає, що число додатне.
3. Висновок
Під час цієї лабораторної роботи я дізнався що таке логічні операції, вивчив такі логічні операції як AND, OR, XOR, NOT та навчився працювати з ними. Також я навчився додавати числа у доповняльному коді.