1.2. Опис логічних інструкцій навчального комп’ютера
Група інструкцій, яку ми будемо досліджувати у даній роботі, присвячена логічним операціям: 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.

