Міністерство освіти та науки України
Національний університет «Львівська політехніка»
ЗВІТ
З лабораторної роботи №4
З дисципліни: «Організація та функціонування комп’терів»
На тему: «Дослідження інструкцій логічних операцій навчального комп’ютера – симулятора DeComp. Вивчення порядку
виконання операції додавання довільних чисел у
процесорі навчального комп’ютера»
Виконав: студент гр. КІ-1
Львів 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.
Логічна операція НЕ є дуже проста: EMBED Equation.3 = 1, EMBED Equation.3 = 0, тобто - заміна вхідного значення на протилежне. Цю операцію ще називають запереченням або інвертуванням (від англ. inversion – перевертання).
Виконання роботи
Досліджую операцію І, попередньо в 10-у і 11-у комірки заношу числа, над яким буде виконуватись операція: 1100 0011 1100 0011 і 0101 0101 0101 0101. Далі виконую наступну програму:
Наступною розгляну інструкцію АБО, для цього використаю таку програму:
Розглядаю інструкцію Виключне-АБО, для цього виконую наступну програму:
Розглядаю інструкцію NOT, для цього виконую таку програму:
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, лічильник циклу. Далі виконую таку програму:
ні
так
ні
так
ні
так
Початок
Ввести число
Накласти маску
Зсув числа
С=0
Зсув числа
С = 0
S = S + 1
k = k - 1
k > 0
К=16
Кінець
Зсув числа
Вивести S
В результаті одержую число 4.
С = 0
так
4) Для інвертування пар «11» в 40-у комірку заношу те саме число, в 41-у – маску, в 42-у – обернену маску, 43-у – 1, а в 44-у – 17 і виконую таку програму:
ні
так
ні
ні
початок
Ввести число
Накласти маску
Зсув числа
С=0
так
Зсув числа
так
С = 0
накласти маску
Проінвертувати
k = k - 1
k > 0
Зсув числа
К=16
Кінець
Вивести А
Після виконання програми одержу таке число – 0000 0010 0010 0000.
5) Щоб виконати додавання двох чисел в 40-у комірку заношу додатнє число 0000 0000 0001 0000, а у 41-у – 1000 0000 0000 1000. В 42-у – 1000 0000 0000 0000,
43-у – 1. Від’ємне число подам у доповняльному коді, для цього використаю таку програму:
ні
так
ні
так
Початок
Ввести два числа
Зсув першого числа через С,аналіз знаку А
С = 0
Знак +
Інвертування і додавання одиниці,
Перевед. А у доп. код
Зсув другого числа через С, аналіз знаку В
С = 0
Інвертування і додавання одиниці
С=А+В
Вивести С
Кінець
Після виконання програми одержую таке число: 0000 0000 0000 1000. Нуль на початку числа означає, що число додатне.
Висновки: Під час виконання цієї лабораторної роботи я вивчив призначення логічних операцій; навчився створювати і використовувати «маски» за допомогою логічних операцій. Також я вивчив алгоритми додавання довільних чисел у навчальному комп’ютері DeComp.
Важливим є те, що під час виконання програми комп'ютеру неможливо відрізнити де додатнє, а де від'ємне число, тому складаючи програму необхідно передбачити виконання алгоритму для представлення від'ємних чисел в доповняльному коді.