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

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

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

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

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

Міністерство освіти і науки, молоді та спорту України Національний університет “Львівська політехніка” Кафедра СКС Звіт Про виконання лабораторної роботи №4 З дисципліни: “Організація та функціонування комп’ютерів” Мета:1. Вивчити призначення логічних операцій. 2. Навчитись створювати і використовувати "фільтри" за допомогою логічних операцій. 3. Вивчити правила кодування додатних і від’ємних двійкових чисел для здійснення арифметичних операцій у комп’ютерах; 4. Навчитися кодувати двійкові числа із знаком у інструкціях навчального комп’ютера – симулятора DeComp. Теоретичні відомості 1.1. Загальні відомості про логічні функції Арифметична операція – операція, у якій операнди і результат сприймаються як числа. До них відносяться операції додавання і віднімання, з якими ми познайомилися у попередніх роботах, а також операції множення і ділення. Усі інші операції, наприклад, добування кореня квадратного, піднесення до степеня, дифференцювання та ін., реалізуються у комп’ютері на основі вказаних операцій. Логічна операція – операція, що полягає у логічній обробці операндів, які приймають у ній участь. До них відносяться операції порівняння, визначення модуля, визначення ознак результатів арифметичних операцій та ін. До них часом відносять операції зсуву праворуч або ліворуч. Вся діяльність людини так або інакше пов’язана з різними висловлюваннями. Будь-яке вимовлене твердження, зауваження є певним висловлюванням. За змістом висловлювання поділяють на прості і складні Будь-яке висловлювання може відповідати або не відповідати дійсності. У першому випадку його називають істинним (правдивим, true) і позначають як 1, а в інших – помилковим (хибним, false) і позначають як 0. 1.2. Подання від’ємних чисел у комп’ютерах Для виконання операцій обробки інформації у комп’ютерах і системах збереження та передачі даних, її замінюють числами. Позначення різної інформації відповідними числами називають цифровим кодування, а послідовність цифр для позначення певної інформації - її кодом. Кодуванню числової інформації у комп’ютерах приділяється особлива увага. Це викликано декількома причинами, одна з яких – наявність знаків у числах. Основна проблема полягає у тому, що центральним складовим елементом арифметично-логічного пристрою (АЛП) є суматор, який виконує лише порозрядне додавання двох кодів із врахуванням ваги кожного з розрядів та з організацією міжрозрядних переносів. Знак числа суматор не “розуміє”, його не розрізняє і сприймає знак числа як звичайний двійковий код. На даний час прийнято, що мінус кодується як одиниця (1), а плюс – як нуль (0). Для здійснення арифметичних операцій у комп’ютерах були розроблені спеціальні способи кодування і відповідні коди. Найбільш поширеними є прямий, обернений та доповняльний коди. Підкреслимо, що доповняльний та обернений коди використовуються тільки для подання від’ємних двійкових чисел. Додатні числа у цих кодах не міняють свого зображення і подаються як у прямому коді. 1.2.1. Прямий код Він базується на природньому поданні чисел у вигляді їх абсолютного значення з кодом відповідного знаку: плюса (0) або мінуса (1) у старшому розряді. Формула утворення прямого коду двійкового числа А = ± 0, а1а2а3…аn має вигляд  Таким чином, цифрові розряди числа у прямому коді залишаються незмінними, а у знаковій частині записується одиниця для від’ємного числа і нуль для додатного числа. 1.2.2. Обернений код Обернений код від’ємного числа називають доповненням до 1. Тут так само присутній знаковий розряд (0 – це “+”, 1 – це “-”). Формула утворення оберненого коду має вигляд Аоб =  (1.3.2) Обернений код додатного числа повністю співпадає з відображенням числа у прямому коді. Приклад 1.3.2. А = - 0,100110. Аоб = 10 + (– 0,100110) – 0,000001 = 1,011001. Звідси витікає правило: щоб записати від’ємне число в оберненому коді, потрібно у знаковому розряді цього числа поставити одиницю, а в числових розрядах нулі замінити одиницями, а одиниці – нулями. Операція заміни нуля на одиницю і навпаки називається інвертуванням. 1.2.3. Доповняльний код Для подання від’ємних чисел у двійковій системі числення частіше використовується система доповнення до двох. У ній також є знаковий розряд (0 це “ + ”, а 1 – це “-”). Доповнення виконується у два етапи. Спочатку кожна 1 міняється на 0, а кожний 0 – на 1 (інверсія). Потім до молодшого розряду отриманого результату додається 1. Наприклад, розглянемо перетворення вісьмирозрядного числа - 610 у форму з доповненням до двох: 000001102 = (+ 6)10 111110012 = (- 6 у системі з доповненням до 1) 111110102 = (- 6 у системі з доповненням до 2). Формула утворення доповняльного коду двійкового числа має вигляд Адоп =  Порівнюючи від’ємне число А з його доповняльним кодом Адоп, можна вивести наступне правило: щоб записати від’ємне число у доповняльному коді, потрібно у знаковому розряді цього числа поставити одиницю, а у всіх числових розрядах нулі замінити одиницями, а одиниці – нулями і до отриманого результату добавити одиницю до молодшого розряду 1.3.4. Модифіковані коди Ці коди відрізняються від простих машинних кодів тим, що на відображення знака відводиться два розряди: плюс відображається двома нулями (00), а мінус - двома одиницями (11). З погляду побудови АЛП вони зручні для виявлення переповнення розрядної сітки, яке може виникнути при додаванні чисел. Значення 01 та 10 у знакових розрядах свідчать про переповнення розрядної сітки. Невизначеність знаку приводить до того, що результат у цьому випадку буде не коректний, тобто, втрачається. У модифікованих кодах другий розряд ліворуч від коми визначає знак числа, а перший розряд служить для аналізу переповнення розрядної сітки при виконанні арифметичних операцій над числами. Хід роботи Завдання 1 Вивчити і записати у звіт призначення логічних операцій AND, OR, NOT I XOR. За винятком останньої логічної інструкції NOT, усі решта є адресними інструкціями, які виконують логічні операції над двома числами: значенням числа, що розміщене у акумуляторі та вмістом комірки пам’яті, на яку вказує 12-розрядна адреса у машинному коді інструкції, а також записують результат назад до акумулятора. Інструкція NOT є безадресною і вона заперечує (інвертує) усі розряди акумулятора із збереженням результату назад до акумулятора. Перші 3 адресні інструкції мають такі 4-розрядні коди операцій: AND – 0100, OR – 0101, XOR – 0110. Безадресна інструкція NOT має 6-розрядний код інструкції 0111 00. Позначення, які використовуються для різних логічних операцій: І – *, & чи ; АБО – +, | чи ; Виключне-АБО – чи #; НЕ – ~ чи риска над значенням логічного аргумента , наприклад  чи . Логічну операцію І (*,&, ) називають кон’юнкцією (від англ. – 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 – перевертання). Завдання 2 Ввести у симулятор та дослідити у покроковому режимі програму, яка буде виконувати логічні операції І, АБО, Виключне-АБО та НЕ над двома числами. Коди чисел вибрати згідно варіанту, що визначається у 1-й лабораторній роботі, використовуючи всі чотири тетради 16-ти розрядного формату. Наприклад, якщо задане число 1810 = 000100102 , воно записується у вигляді: 00010010 00010010. Виписати результати виконання програми та значення прапорців ознак. Коди чисел вибрав згідно варіанту 22, що визначається у 1-й лабораторній роботі, використовуючи всі чотири тетради 16-ти розрядного формату. Отже число 4410 записав у вигляді 00101100 001011002, а число 1010 записав 00001010 000010102. У 10 комірку записав 4410,у 11 комірку записав 1010. Дослідження логічної операції І № Адреса комірки Код інструкції Мнемонічний запис Коментар  1 0000 0000 0001 0100 0000 0000 1011 AND 11 Виконує операцію І над операндами 10-ї і 11-ї комірок   РА РД А РІ ЛАІ РО  1-й крок 0000 0000 1010 0010 1100 0010 1100 0010 1100 0010 1100 0000 0000 0000 1010 0000 0000 0001 000  2-й крок 0000 0000 1011 0000 1010 0000 1010 0000 1000 0000 1000 0100 0000 0000 1011 0000 0000 0010 000  3-й крок 0000 0000 0010 0111 1100 0000 0001 0000 1000 0000 1000 0001 0000 0000 1100 0000 0000 0010 000   Дослідження логічної операції АБО № Адреса комірки Код інструкції Мнемонічний запис Коментар  1 0000 0000 0001 0101 0000 0000 1011 OR 11 Виконує операцію АБО над операндами 10-ї і 11-ї комірок   РА РД А РІ ЛАІ РО  1-й крок 0000 0000 1010 0010 1100 0010 1100 0010 1100 0010 1100 0000 0000 0000 1010 0000 0000 0001 000  2-й крок 0000 0000 1011 0000 1010 0000 1010 0010 1110 0010 1110 0101 0000 0000 1011 0000 0000 0010 000  3-й крок 0000 0000 0010 0111 1100 0000 0000 0010 1110 0010 1110 0111 1100 0000 0000 0000 0000 0011 000   Дослідження логічної операції Виключне-АБО № Адреса комірки Код інструкції Мнемонічний запис Коментар  1 0000 0000 0001 0110 0000 0000 1011 XOR 11 Виконує операцію Виключне-АБО над операндами 10-ї і 11-ї комірок.   РА РД А РІ ЛАІ РО  1-й крок 0000 0000 1010 0010 1100 0010 1100 0010 1100 0010 1100 0000 0000 0000 1010 0000 0000 0001 000  2-й крок 0000 0000 1011 0000 1010 0000 1010 0010 0110 0010 0110 0110 0000 0000 1011 0000 0000 0010 000  3-й крок 0000 0000 0010 0111 1100 0111 1100 0010 0110 0010 0110 0111 1100 0000 0000 0000 0000 0010 000   Дослідження логічної операції НЕ № Адреса комірки Код інструкції Мнемонічний запис Коментар  1 0000 0000 0001 0111 0000 0000 1011 NOT 11 Виконує операцію НЕ над операндами 10-ї і 11-ї комірок   РА РД А РІ ЛАІ РО  1-й крок 0000 0000 1010 0010 1100 0010 1100 0010 1100 0010 1100 0000 0000 0000 1010 0000 0000 0001 000  2-й крок 0000 0000 0001 0111 0000 0000 1011 1101 0011 1101 0011 0111 0000 0000 1011 0000 0000 0010 010  3-й крок 0000 0000 0010 0111 1100 0000 0000 1101 0011 1101 0010 0111 1100 0000 0000 0000 0000 0010 010   Завдання 3 Дослідити у потактовому режимі інструкції AND I XOR - для непарних номерів із журналу списку групи, OR та NOT - для парних номерів із списку групи. Виписати результати виконання програми. До 3-ї комірки – число 1010, а до акумулятора – 4410 • Інструкція OR № Мнемонічний запис Код що обробляється Коментар  1 ЛАІ→РА 0000 0000 0000 Вибір адреси 1-ої інструкції і занесення до РА  2 РА→РД 0101 0000 0000 0010 Вибір коду інструкції з РА і занесення до РД  3 РД→РІ 0101 0000 0000 0010 Декодування інструкції у РІ  4 РІ→РА 0000 0000 0000 0010 Вибір адреси 1-го операнда  5 РА→РД 0000 1010 0000 1010 Вибір коду 1-го операнда з пам’яті  6 РД+А→А 0010 1110 0010 1110 Виконання операції АБО  7 ZSC(A)→РО 000 Встановлення прапорців регістру ознак  8 ЛАІ +1→ЛАІ 0000 0000 0001 Підготовка адреси нової інструкції   • Інструкція NOT № Мнемонічний запис Код що обробляється Коментар  1 ЛАІ→РА 0000 0000 0000 Вибір адреси 1-ої інструкції і занесення до РА  2 РА→РД 0111 0000 0000 0010 Вибір коду інструкції з РА і занесення до РД  3 РД→РІ 0111 0000 0000 0010 Декодування інструкції у РІ  4 А+1→А 1101 0011 1101 0011 Виконання операції НЕ  5 ZSC(A)→РО S Встановлення прапорців ознак  6 ЛАІ +1→ЛАІ 0000 0000 0001 Підготовка адреси нової інструкції   Завдання 4 Розробити алгоритм і написати програму, що для довільного числа "А", яке розміщене у комірці пам’яті з адресою "N", підраховує кількість пар "11" - для непарних номерів із списку групи, і кількість пар "00" - для парних номерів із списку групи. Для підрахування пар «00» попередньо в комірку з номером 20 записую число А, в якому буду рахувати пари – 0011 0011 1011 10112, в комірку з номером 21 записую маску, в 22- лічильник пар (початкове значення – 0), в 23 – 1 для зміни параметру циклу, і зміни лічильника, в 24 – 16, лічильник циклу. Схема алгоритму: Далі виконую таку програму: №п/п Адреса комірки Код інструкції Мнемонічний запис Коментар  1 0000 0000 0000 0000 0000 0001 0100 Load 20 Завантажує значенння 20-ої комірки  2 0000 0000 0001 1111 1000 0000 0000 ROL Циклічний зсув вліво  3 0000 0000 0010 0001 0000 0001 0100 Store 20 Записує значення у 20-ту комірку  4 0000 0000 0011 0110 0000 0001 0101 XOR 21 Проводить операцію Виключне-Або над значенням акумулятора та операндом 21-ї комірки  5 0000 0000 0100 1111 1110 0000 0000 RCR Циклічний зсув вправо через С  6 0000 0000 0101 1100 0000 0000 1011 JNC 11 Умовний перехід якщо С=0  7 0000 0000 0110 1111 1110 0000 0000 RCR  Циклічний зсув вправо через С  8 0000 0000 0111 1100 0000 0000 1011 JNC 11 Умовний перехід якщо С=0  9 0000 0000 1000 0000 0000 0001 0110 Load 22 Завантажує значення 22-ої комірки  10 0000 0000 1001 0010 0000 0010 0111 Add 23 Додає до 23-ої  11 0000 0000 1010 0001 0000 0001 0110 Store 22 Записує у 22-у  12 0000 0000 1011 0000 0000 0001 1000 Load 24 Завантажує значення 24-ої к омірки  13 0000 0000 1100 0011 0000 0001 0111 Sub 23  Віднімає 1  14 0000 0000 1101 0001 0000 0001 1000 Store 24 Зберігає у 24  15 0000 0000 1110 1100 0000 0000 0000 JNZ 0 Виконує перевірку кінця циклу (керування циклом)  16 0000 0001 0001 0111 1100 0000 0000 Halt Закінчити виконання програми   В результаті одержую число 2. Завдання 5 Розробити алгоритм і написати програму, у якій для числа, яке використовується у пункті 4, виконується інвертування пар "11" - для парних номерів із списку групи і інвертування пар "00" - для непарних номерів із списку групи. Для інвертування пар «11» в 40-у комірку заношу те саме число, в 41 – маску, в 42 – обернену маску, 43 – 1, а в 44 – 17 і виконую таку програму: Схема алгоритму:  №п/п Адреса комірки Код інструкції Мнемонічний запис Коментар  1 0000 0000 0000 0000 0000 0001 0100 Load 20 Виконує циклічний зсув вліво над операндом 20-ї комірки  2 0000 0000 0001 1111 1000 0000 0000 ROL   3 0000 0000 0010 0001 0000 0001 0100 Store 20   4 0000 0000 0011 0100 0000 0001 0101 AND 21 Проводить операцію логічного множення над значенням акумулятора та операндом 21-ї комірки  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 0001 0100 Load 20 Інвертує знайдену пару «11» в операнді 20-ї комірки  10 0000 0000 1001 0100 0000 0001 0110 AND 22   11 0000 0000 1010 0001 0000 0001 0100 Store 20   12 0000 0000 1011 0000 0000 0001 1000 Load 24 Виконує зміну параметру циклу  13 0000 0000 1100 0011 0000 0001 0111 Sub 23   14 0000 0000 1101 0001 0000 0001 1000 Store 24   15 0000 0000 1110 1100 0000 0000 0000 JNC 0 Виконує перевірку кінця циклу (керування циклом)  18 0000 0001 0001 0111 1000 0000 0000 Halt Закінчити виконання програми   Після виконання програми одержу таке число – 0000 0010 0010 0000. Завдання 6 Розробити алгоритм і написати програму додавання двох від’ємних 16-ти розрядних чисел. Операція виконується у доповняльному коді. Схема алгоритму: / №п/п Адреса комірки Код інструкції Мнемонічний запис Коментар  1 0000 0000 0000 0000 0000 0010 1000 Load 40 Перевірка чи число від’ємне  2 0000 0000 0001 1111 1100 0000 0000 RCL   3 0000 0000 0010 1100 0000 0000 1000 JNC 8 Якщо число не від’ємне то перейти на 8-у комірку  4 0000 0000 0011 0000 0000 0010 1000 Load 40 Подання числа у доповняльному коді  5 0000 0000 0100 0111 0000 0000 0000 NOT   6 0000 0000 0101 0101 0000 0010 1010 OR 42   7 0000 0000 0110 0010 0000 0010 1011 Add 43   8 0000 0000 0111 0001 0000 0000 0000 Store 40   9 0000 0000 1000 0000 0000 0010 1001 Load 41 Перевірка другого числа на від’ємність  10 0000 0000 1001 1111 1100 0000 0000 RCL   11 0000 0000 1010 1100 0000 0001 0000 JNC 16 Якщо друге число не від’ємне, то перейти на 16-у комірку  12 0000 0000 1011 0000 0000 0010 1001 Load 41 Подання другого числа у доповняльному коді  13 0000 0000 1100 0111 0000 0000 0000 NOT   14 0000 0000 1101 0101 0000 0010 1010 OR 42   15 0000 0000 1110 0010 0000 0010 1011 Add 43   16 0000 0000 1111 0001 0000 0010 1001 Store 41   17 0000 0001 0000 0000 0000 0010 1000 Load 40 Додавання чисел  18 0000 0001 0001 0010 0000 0010 1001 Add 41   19 0000 0001 0010 0111 1100 0000 0000 Halt Зупинка виконання програми   Висновок: Під час виконання лабораторної роботи №4 я вивчив призначення логічних операцій, навчився створювати і використовувати "фільтри" за допомогою логічних операцій, вивчив правила кодування додатних і від’ємних двійкових чисел для здійснення арифметичних операцій у комп’ютерах, навчився кодувати двійкові числа із знаком у інструкціях навчального симулятора DeComp.
Антиботан аватар за замовчуванням

22.03.2018 19:03-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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