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

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

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

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

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

Міністерство освіти та науки України Національний університет «Львівська політехніка» ЗВІТ З лабораторної роботи №4 З дисципліни: «Організація та функціонування комп’терів» На тему: «Дослідження інструкцій логічних операцій навчального комп’ютера – симулятора DeComp. Вивчення порядку виконання операції додавання довільних чисел у процесорі навчального комп’ютера» Львів 2006 Тема: Дослідження інструкцій логічних операцій навчального комп’ютера – симулятора DeComp. Вивчення порядку виконання операції додавання довільних чисел у процесорі навчального комп’ютера. Мета: Вивчити призначення логічних операцій; навчитись створювати і використовувати «маски» за допомогою логічних операцій; вивчити алгоритми додавання довільних (додатних та від'ємних) двійкових чисел у навчальному комп'ютері DeComp. Теоретичні відомості Всі основні процеси з обробки інформації здійснюються у процесорі комп’ютера, у складі якого центральний пристрій керування (ЦПК) і арифметико-логічний пристрій (АЛП). ЦПК призначений для виконання функцій керування комп’ютером у цілому і його окремими пристроями у процесі вирішення задачі у відповідності із заданою програмою. АЛП використовується для виконання арифметичних і логічних операцій операцій над операндами (даними) і командами, вироблення різних ознак, що впливають на хід обчислювального процесу. Точна, певна послідовність операцій або програма, яка потрібна для виконання певної задачі на комп’ютері, формується на основі математичної теорії, відомої як алгебра логіки. Створив алгебру логіки англійський математик Дж. Буль (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. Логічну операцію І (*,&, () називають кон’юнкцією або логічним множенням. Дійсно, результат операції І можна отримати, якщо перемножувати вхідні 1-розрядні числа: 0 * 1 = 0 або 1 * 1 = 1. Також назва кон’юнкія (з’єднання) йде від визначення результатів логічної операції І: результат дорівнює 1 тільки у випадку, коли всі аргументи дорівнюють 1. Логічна операція І (&) дозволяє примусово встановити в "0" (обнулити) потрібні розряди даного числа. Логічна операція АБО (+, |, () має назву диз’юнкція або логічне додавання. Диз’юнкція (роз’єднання) означає, що кожне з вхідних чисел незалежно виявляє своє значення: за визначенням результат логічної операції АБО дорівнює 1, коли хоча б одне (або всі) з вхідних аргументів дорівнюють 1. Правило логічного додавання тотожньо із арифметичним додаванням у 3-х випадках з 4-х: 1+1 ( 1, хоча 1 | 1 = 1. Логічна операція АБО ( | ) дозволяє примусово встановити в "1" потрібні розряди даного числа. Логічну операцію Виключне-АБО ((, #) іноді ще називають сумою за модулем 2, або – додаванням за модулем 2. Дійсно, результат операції Виключне-АБО повністю співпадає з молодшим розрядом результату арифметичного додавання двох 1-розрядних чисел: 0 ( 1 = 1 (0 + 1 = 1), хоча 1 ( 1 = 0 (1 + 1 = 10). Виключність назви цієї логічної операції походить з її визначення: результат дорівнює 1, коли тільки одне з вхідних чисел дорівнює 1. При виконанні цієї операції над групою аргументів, результат дорівнює 1, якщо серед аргументів непарна кількість 1, якщо кількість 1 парна , то результат = 0. Логічна операція НЕ є дуже проста:  = 1,  = 0, тобто - заміна вхідного значення на протилежне. Цю операцію ще називають запереченням або інвертуванням (від англ. inversion – перевертання). Виконання роботи Досліджую операцію І, попередньо в 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   Наступною розгляну інструкцію АБО, для цього використаю таку програму: №п/п Адреса комірки Код інструкції Мнемонічний запис Коментар  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   Розглядаю інструкцію Виключне-АБО, для цього виконую наступну програму: №п/п Адреса комірки Код інструкції Мнемонічний запис Коментар  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   Розглядаю інструкцію 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   2) Досліджую інструкцію AND в потактовому режимі, використовуючи програму описану вище: Такт1: ЛАІ → РА – 0000 0000 0001; Такт2: Пам’ять РА → РД – 0100 0000 0000 1011; Такт3: РД → РІ – 0100 0000 0000 1011; Такт4: РІ → РА – 0000 0000 1011; Такт5: Пам’ять РА → РД – 0101 0101 0101 0101; Такт6: РД + АК → 0100 0001 0100 0001; Такт7: АК → РО. Інструкцію XOR розглядаю за допомогою програми, яка була складена вище: Такт1: ЛАІ → РА – 0000 0000 0001; Такт2: Пам’ять РА → РД – 0110 0000 0000 1011; Такт3: РД → РІ – 0110 0000 0000 1011; Такт4: РІ → РА – 0000 0000 1011; Такт5: Пам’ять РА → РД – 0101 0101 0101 0101; Такт6: РД + АК → 1001 0110 1001 0110; Такт7: АК → РО – S. 3) Для підрахування пар «11» попередньо в комірку з номером 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 0100 0000 0010 1001 AND 41 Проводжу операцію логічного множення над значенням акумулятора та операндом 41-ї комірки  3 0000 0000 0010 1111 1110 0000 0000 RCR Перевіряю наявність пари «11», при її відсутності виконання програми продовжується з 11-ї комірки  4 0000 0000 0011 1100 0000 0000 1011 JNC 11   5 0000 0000 0100 1111 1110 0000 0000 RCR   6 0000 0000 0101 1100 0000 0000 1011 JNC 11   7 0000 0000 0110 0000 0000 0010 1010 Load 42 Додаю до лічильника пар одиницю  8 0000 0000 0111 0010 0000 0010 1011 Add 43   9 0000 0000 1000 0001 0000 0010 1010 Store 42   10 0000 0000 1001 0000 0000 0010 1000 Load 40 Зсуваю число для виконання подальшої перевірки  11 0000 0000 1010 1111 1000 0000 0000 ROL   12 0000 0000 1011 0001 0000 0010 1000 Store 40   13 0000 0000 1100 0000 0000 0010 1100 Load 44 Виконую зміну параметру циклу  14 0000 0000 1101 0011 0000 0010 1011 Sub 43   15 0000 0000 1110 0001 0000 0010 1100 Store 44   16 0000 0000 1111 1100 0000 0000 0000 JNZ 0 Виконую перевірку кінця циклу (керування циклом)  17 0000 0001 0000 0000 0000 0010 1010 Load 42 Виводжу кінцевий результат на пристрій виводу  18 0000 0001 0001 0111 1000 0000 0000 Output   19 0000 0001 0010 0111 1100 0000 0000 Halt Закінчую виконання програми   В результаті одержую число 4. 4) Для інвертування пар «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 0100 0000 0010 1001 AND 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 0100 0000 0010 1010 AND 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 0000 1111 0000 0000 0010 1000 Load 40 Виводитжу кінцевий результат на пристрій виводу  17 0000 0001 0000 0111 1000 0000 0000 Output   18 0000 0001 0001 0111 1000 0000 0000 Halt Закінчую виконання програми   Після виконання програми одержу таке число – 0000 0010 0010 0000. 5) Щоб виконати додавання двох чисел в 40-у комірку заношу додатнє число 0000 0000 0001 0000, а у 41-у – 1000 0000 0000 1000. В 42-у – 1000 0000 0000 0000, 43-у – 1. Від’ємне число подам у доповняльному коді, для цього використаю таку програму: №п/п Адреса комірки Код інструкції Мнемонічний запис Коментар  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 Зупинка виконання програми   Після виконання програми одержую таке число: 0000 0000 0000 1000. Нуль на початку числа означає, що число додатне. Висновки: Під час виконання цієї лабораторної роботи я вивчив призначення логічних операцій; навчився створювати і використовувати «маски» за допомогою логічних операцій. Також я вивчив алгоритми додавання довільних чисел у навчальному комп’ютері DeComp. Важливим є те, що під час виконання програми комп'ютеру неможливо відрізнити де додатнє, а де від'ємне число, тому складаючи програму необхідно передбачити виконання алгоритму для представлення від'ємних чисел в доповняльному коді.
Антиботан аватар за замовчуванням

28.01.2013 14:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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