Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 16

Міністерство освіти і науки

Національний університет „ Львівська політехніка ”


Кафедра СКС

Звіт
з лабораторної роботи № 4
з дисципліни: «Організація та функціонування
комп’ютерів» на тему:
«Дослідження інструкцій логічних операцій і виконання
арифметичних операцій навчального комп’ютера – симулятора
DeComp»

Виконав:
ст. гр. КІ-110
Куцах Т.
Прийняв: Дячок
Р.В.

Львів 2023
Тема:
Дослідження інструкцій логічних операцій і виконання арифметичних операцій
навчального комп’ютера – симулятора DeComp.
Мета:
● Вивчити призначення логічних операцій;
● Навчитись створювати і використовувати "фільтри" за допомогою логічних
операцій;
● Вивчити правила кодування додатних і від’ємних двійкових чисел для
здійснення арифметичних операцій у комп’ютерах;
● Навчитися кодувати двійкові числа із знаком у інструкціях навчального
комп’ютера – симулятора DeComp.
Теоретичні відомості
Логічна операція – операція, що полягає у логічній обробці операндів, які
приймають у ній участь. До них відносяться операції порівняння, визначення модуля,
визначення ознак результатів арифметичних операцій та ін. До них часом відносять
операції зсуву праворуч або ліворуч.
Точна, певна послідовність операцій або програма, яка потрібна для виконання
певної задачі на комп’ютері, формується на основі математичної теорії, відомої як алгебра
логіки. Створив алгебру логіки британський математик Джордж Буль (1815 – 1864). Тому
її називають також алгеброю Буля. Алгебра логіки отримала значний розвиток завдяки
роботам таких вчених як Е. Пост, К. Шеннон, В. Глушков, С. Яблонський та ін. Основним
поняттям алгебри логіки є висловлювання.
Під час вивчення звичайної алгебри розглядають залежності типу А = f(x1, x2, …xn),
де x1, x2, …xn – аргументи, а А – функція. Аргументи і функція при цьому можуть набувати
найрізноманітніших числових значень: додатних і від’ємних, цілих і дробових. У алгебрі
логіки вивчають залежності аналогічного вигляду А = f(x1, x2, …xn), але такі, в яких
аргументи і функція можуть набувати тільки двох значень: 1 і 0. Практичне використання
таких функцій є формальним (математичним) описом логіки людського мислення в
процесі виконання якоїсь задачі.
Вся діяльність людини так або інакше пов’язана з різними висловлюваннями. Будь-
яке вимовлене твердження, зауваження є певним висловлюванням. У алгебрі логіки саме
висловлювання є змінною (аргументом), яка може набувати одного з двох можливих
значень - істина чи фальш, так чи ні, правдиво чи не правдиво і над якою можна
виконувати деякі дії. Подібно до аргументів у звичайній алгебрі, висловлювання
позначають буквами якого-небудь алфавіту, наприклад, X, Y,Z або а, в, с. . .
За змістом висловлювання поділяють на прості і складні. Наприклад, прості: “вікно
відчинене”, “у квартирі холодно”, “Микола вчиться в національному університеті
“Львівська політехніка”, “Микола йде на стадіон”. З простих висловлювань за допомогою
слів - сполучників І, АБО, НЕ, ЯКЩО-ТО та ін. утворюють складні. Наприклад, речення:
„Вікно відчинене і у квартирі холодно”, „Микола піде у парк або на стадіон”.
Будь-яке висловлювання може відповідати або не відповідати дійсності. У
першому випадку його називають істинним (правдивим, true) і позначають як 1, а в інших
– помилковим (хибним, false) і позначають як 0.
Особливістю виконання логічних операцій є порозрядність, тобто операції
виконуються над кожною парою розрядів числа окремо і при цьому переповнення розрядної
сітки не відбувається. У обчислювальній техніці логічні операції використовуються
надзвичайно широко.

3.4.1.1. Опис логічних інструкцій навчального комп’ютера

Група інструкцій, яку ми будемо досліджувати у даній роботі, присвячена логічним


операціям: AND (логічне І), OR (логічне АБО), XOR (логічне Виключне-АБО) та NOT
(логічне НЕ).
За винятком останньої логічної інструкції NOT, усі решта є адресними
інструкціями, які виконують логічні операції над двома числами: одне з яких розміщене у
акумуляторі, а друга у комірці пам’яті за адресою, на яку вказує 12-розрядний код адреси
у машинному коді інструкції. Результат записують назад до акумулятора. Інструкція NOT
є безадресною і вона заперечує (інвертує) усі розряди акумулятора із збереженням
результату назад до акумулятора.
Перші 3 адресні інструкції мають такі 4-розрядні коди операцій:
AND – 0100,
OR – 0101 та
XOR – 0110.
Безадресна інструкція NOT має 6-розрядний код інструкції 0111 00.
Результати виконання логічних операцій зручно представити за допомогою таких
таблиць:
Вхідні AND ( І ), OR (АБО) XOR (Викл. АБО) Вхідні NOT (НЕ)
набори позначення: позначення: позначення: набори A
*, &,  +, |,  , #
A=0 0 0 0 A=0 1
B=0
A=0 0 1 1 A=1 0
B=1
A=1 0 1 1
B=0
A=1 1 1 0
B=1

У поданій таблиці перша колонка містить 4 можливих варіанти комбінацій двох 1-


розрядних чисел: 00, 01, 10 та 11. Наступні 3 стовпці подають значення результатів
виконання логічних операцій І, АБО та Виключне-АБО над вхідними наборами. Останні
два стовпці містять 2 варіанти одного 1-розрядного числа: 0 і 1, та значення операції
НЕ.
Зверніть увагу на позначення, які використовуються для різних логічних операцій в
літературі:
І – *, &. ;
АБО – +, |, ;
Виключне-АБО – , #;
НЕ – ~ або риска над значенням логічного аргумента , наприклад A , 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

У прикладі примусово у 0 встановлюються чотири молодших розряди числа.


Логічна операція АБО має назву диз’юнкція (від англ. – disjunction – роз’єднання)
або логічне додавання. Диз’юнкція означає, що кожне з вхідних чисел незалежно виявляє
своє значення: за визначенням результат логічної операції АБО дорівнює 1 лише тоді,
коли хоча б один (або всі) з вхідних аргументів дорівнюють 1. Правило логічного
додавання тотожньо із арифметичним додаванням у 3-х випадках з 4-х: (1+1)лог.  2, (1 +
1)лог. = 1.
Логічна операція АБО дозволяє примусово встановити в "1" потрібні розряди
даного числа:
10101010 + 11110000 = 11111010

У прикладі примусово у 1 встановлюються чотири старших розряди числа.


Наведені приклади практичного використання операцій І та АБО називаються
створенням "маски" або фільтра.
Логічну операцію Виключне-АБО часто ще називають сумою за модулем 2, або –
додаванням за модулем 2. Дійсно, результат операції Виключне-АБО повністю співпадає з
молодшим розрядом результату арифметичного додавання двох 1-розрядних чисел:

(0  1)лог. = 1, (0 + 1 = 1)арифм. хоча (1  1)лог. = 0, (1 + 1 = 102)арифм.

Виключність назви цієї логічної операції походить з її визначення: результат


дорівнює 1, коли тільки одне з вхідних чисел дорівнює 1. При виконанні цієї операції над
групою аргументів, результат дорівнює 1, якщо серед аргументів непарна кількість 1,
якщо кількість 1 парна , то результат = 0.

Логічна операція НЕ є дуже проста: 0 = 1, 1 = 0, тобто - заміна вхідного значення на


протилежне. Цю операцію ще називають запереченням або інвертуванням (від англ. inversion
– перевертання).
Розглянуті 4 логічні операції вважаються найосновнішими і найбільш
розповсюдженими, хоча насправді для двох 1-розрядних вхідних чисел існує 1 6
різноманітних логічних функцій.
Ще раз відзначимо надзвичайно важливу відмінність логічних операцій у
порівнянні з арифметичними – порозрядність, тобто якщо взяти два N-розрядних
числа, то логічна операція над ними буде виконуватись над парами розрядів з
однаковою вагою незалежно одна від одної: логічна операція над парою розрядів з
вагою 20 дасть розряд результату з вагою 20, логічна операція над парою перших
розрядів дасть 1-й розряд результату і т. д. Саме тому логічні операції не впливають на
ознаку переносу C, хоча можуть змінювати ознаку нуля результату Z та ознаку знаку
результату S

Хід виконання роботи

1. Вивчити і записати у звіт призначення логічних операцій AND, OR, NOT і XOR.

Логічна операція AND – кон’юкція або логічне множення. Результат операції буде
рівний 1 тільки тоді, коли два біта будуть рівні 1, якщо ж хоча б 1 з бітів дорівнює 0, то і
результат буде 0.
Логічна операція OR – диз’юнкція або логічне додавання. Результат операції
дорівнює 1, коли хоча б один з бітів дорівнює 1, і 0, коли обидва біта дорівнюють 0.
Логічна операція NOT – заперечення. Результатом операції є інвертування усіх
розрядів числа і запис назад до акумулятора, тобто заміна 1 на 0 і 0 на 1. На відміну від
інших операцій, ця – безадресна.
Логічна операція XOR – сума за модулем 2. Результат операції дорівнює 1, коли
тільки один з бітів дорівнює 1. Якщо бітів більше, ніж 2, то для непарної кількості бітів
результат дорівнює 1, а для парної 0. Іншими словами результатом операції є молодший
розряд суми.

2. Ввести у симулятор та дослідити у покроковому режимі програму, яка буде


виконувати логічні операції І, АБО, Виключне-АБО та НЕ над двома числами. Коди
чисел вибрати згідно варіанту, що визначається у 1-й лабораторній роботі,
використовуючи всі чотири тетради 16-ти розрядного формату. Наприклад, якщо
задане число 1810 = 000100102 , воно записується у вигляді: 00010010 00010010.
Виписати результати виконання програми та значення прапорців ознак.

Мій варіант 13. Згідно з умовою 1-ої лабораторної роботи, мої числа: 1410 і
4210. Спочатку переведемо ці числа у двійкову систему числення:
1410 = 0000 1110 0000 11102;
4210 = 0010 1010 0010 10102.

Заношу перше число A у 20-ту комірку, а друге B у 21. Пишу програму в інструкціях:
Мнемонічний
№ комірки Двійковий код
запис Коментар
пам’яті інструкції
інструкції
Завантажити дані 20-ої комірки
0000 0000 0000 0000 0000 0001 0100 LOAD 20;
(число A) до Акумулятора
0000 0000 0001 0100 0000 0001 0101 AND 21; A&B
0000 0000 0010 0001 0000 0001 0110 STORE 22; Записати число в 22 комірку
0000 0000 0011 0000 0000 0001 0100 LOAD 20; Завантажити дані 20-ої комірки
(число A) до Акумулятора
0000 0000 0100 0101 0000 0001 0101 OR 21; A|B
Записати результат операції в 23
0000 0000 0101 0001 0000 0001 0111 STORE 23;
комірку
завантажити число A до
0000 0000 0110 0000 0000 0001 0100 LOAD 20;
Акумулятора
0000 0000 0111 0110 0000 0001 0101 XOR 21; A⊕B
0000 0000 1000 0001 0000 0001 1000 STORE 24; Записати число в 24 комірку.
0000 0000 1001 0000 0000 0001 0100 LOAD 20: Завантажити число A до
Акумулятора
0000 0000 1010 0111 0000 0000 0000 NOT; Інвертоване число А
0000 0000 1011 0001 0000 0001 1001 STORE 25; Записати число в 25 комірку.
0000 0000 1100 0000 0000 0001 0101 LOAD 21; Завантажити число B до
Акумулятора
0000 0000 1101 0111 0000 0000 0000 NOT Інвертоване число B
0000 0000 1110 0001 0000 0001 1010 STORE 26; Завантажити число в 26 комірку
0000 0000 1111 0111 1100 0000 0000 HALT; Зупинити програму
Запускаю програму і досліджую її у покроковому режимі:
РА РД А РІ ЛАІ РО

1 0000 0001 0100 0000 1110 0000 1110 0000 1110 0000 1110 0000 0000 0001 0100 0000 0000 0001 000
2 0000 0001 0101 0010 1010 0010 1010 0000 1010 0000 1010 0100 0000 0001 0101 0000 0000 0010 000
3 0000 0001 0110 0000 1010 0000 1010 0000 1010 0000 1010 0001 0000 0001 0110 0000 0000 0011 000
4 0000 0001 0100 0000 1110 0000 1110 0000 1110 0000 1110 0000 0000 0001 0100 0000 0000 0100 000
5 0000 0001 0101 0010 1010 0010 1010 0010 1110 0010 1110 0101 0000 0001 0101 0000 0000 0101 000
6 0000 0001 0111 0010 1110 0010 1110 0010 1110 0010 1110 0001 0000 0001 0111 0000 0000 0110 000
7 0000 0001 0100 0000 1110 0000 1110 0000 1110 0000 1110 0000 0000 0001 0100 0000 0000 0111 000
8 0000 0001 0101 0010 1010 0010 1010 0010 0100 0010 0100 0110 0000 0001 0101 0000 0000 1000 000
9 0000 0001 1000 0010 0100 0010 0100 0010 0100 0010 0100 0001 0000 0001 1000 0000 0000 1001 000
10 0000 0001 0100 0000 1110 0000 1110 0000 1110 0000 1110 0000 0000 0001 0100 0000 0000 1010 000
11 0000 0000 1010 0111 0000 0000 0000 1111 0001 1111 0001 0111 0000 0000 0000 0000 0000 1011 010
12 0000 0001 1001 1111 0001 1111 0001 1111 0001 1111 0001 0001 0000 0001 1001 0000 0000 1100 010
13 0000 0001 0101 0010 1010 0010 1010 0010 1010 0010 1010 0000 0000 0001 0101 0000 0000 1101 010
14 0000 0000 1101 0111 0000 0000 0000 1101 0101 1101 0101 0111 0000 0000 0000 0000 0000 1110 010
15 0000 0001 1010 1101 0101 1101 0101 1101 0101 1101 0101 0001 0000 0001 1010 0000 0000 1111 010
16 0000 0000 1111 0111 1100 0000 0000 1101 0101 1101 0101 0111 1100 0000 0000 0000 0000 1111 010
Для кращої наочності узагальнимо результати:
● Результат операції AND: A & B: 0000 1010 0000 10102, РО: 0002;
● Результат операції OR: A | B: 0010 1110 0010 11102, РО: 0002;
● Результат операції XOR: A ⊕ B: 0010 0100 0010 01002, РО: 0002;
● Результат операції NOT для першого числа: А: 1111 0001 1111 00012, РО: 0102;
● Результат операції NOT для другого числа: B: 1101 0101 1101 01012, РО: 0102.

3. Дослідити у потактовому режимі інструкції AND і XOR - для непарних номерів із


журналу списку групи, OR та NOT - для парних номерів із списку групи. Виписати
результати виконання програми

Я маю 13 варіант, тому досліджую інструкції AND і XOR.

1) Дослідження функції AND.


Заношу в Аккумулятор та в комірки пам'яті потрібні мені дані:
А) А → Число 0000 1110 0000 11102. (Записую число 1410, використавши всі 4 тетради
16-тирозрядного формату);
Б) Adr.0 → 0100 0000 0000 00012. (Інструкція AND); записую код інструкції AND та
адресу комірки з якої буде взято друге число(в моєму випадку 4210));
В) Adr.1 → Число 0010 1010 0010 10102 (записую число 4210, використавши всі 4
тетради 16-ти розрядного формату);
Г) ЛАІ → Adr 0.
Запускаю її у потактовому режимі та досліджую:
№ Мнемонічний Код, що Коментар
запис обробляється
1 ЛАІ → РА 0000 0000 0000 вибір адреси інструкції і занесення її до Регістра
Адреси
2 Пам(РА) → РД 0100 0000 0000 0001 вибір коду інструкції з РА і занесення його до
Регістра Даних
3 РД → РІ 0100 0000 0000 0001 декодування інструкції у Регістрі Інструкцій
4 РІ →РА 0000 0000 0001 Передача адреси операнда
5 Пам(РА) → РД 0010 1010 0010 1010 вибір коду другого операнда з РА і занесення його
до Регістра Даних
6 А | РД → А 0000 1010 0000 1010 Виконується інструкція AND і результат
записується до А
7 А→РО 000 Встановлення прапорців ознак
8 ЛАІ + 1 → ЛАІ 0000 0000 0001 підготовка адреси нової інструкції

2) Дослідження інструкції XOR:


А) А → Число 0000 1110 0000 11102. (Записую число 1410, використавши всі 4
тетради 16-ти розрядного формату);
Б) Adr.0 → 0110 0000 0000 00012. (Інструкція XOR); записую код інструкції XOR та
адресу комірки з якої буде взято друге число(в моєму випадку 4210));
В) Adr.1 → Число 0010 1010 0010 10102 (записую число 4210, використавши всі 4
тетради 16-ти розрядного формату);
Г) ЛАІ → Adr 0.

№ Мнемонічний Код, що Коментар


запис обробляється
1 ЛАІ → РА 0000 0000 0000 вибір адреси інструкції і занесення її до Регістра
Адреси
2 Пам(РА) → РД 0110 0000 0000 0001 вибір коду інструкції з РА і занесення його до
Регістра Даних
3 РД → РІ 0110 0000 0000 0001 декодування інструкції у Регістрі Інструкцій
4 РІ →РА 0000 0000 0001 Передача адреси операнда
5 Пам(РА) → РД 0010 1010 0010 1010 вибір коду другого операнда з РА і занесення його
до Регістра Даних
6 А | РД → А 0010 0100 0010 0100 Виконується інструкція XOR і результат
записується до А
7 А→РО 000 Встановлення прапорців ознак
8 ЛАІ + 1 → ЛАІ 0000 0000 0001 підготовка адреси нової інструкції
4. Розробити алгоритм і написати програму, що для довільного числа "А", яке
розміщене у комірці пам"яті з адресою "N", підраховує кількість пар "11" - для
непарних номерів із списку групи, і кількість пар "00" - для парних номерів із списку

групи.

(Рис.1)Блок-схема алгоритму до завдання 4


Задане число А міститься в 32-ій комірці. Число В – лічильник пар нулів в числі А,
міститься в 34-ій комірці. Число k – лічильник циклу, міститься в 30-ій комірці, k = 100012 .
В комірці 31 записано число 1. Число А буде скопійовано в 33 комірку.

Пишу програму для підрахунку пар 11:


№і Двійковий код Мнемонічний Коментар до груп інструкцій, що відповідають
інструкції формат блокам алгоритму програми
інструкції
1 0000 0000 0010 0000 LOAD 32 Робимо копію числа з яким будемо проводити
2 0001 0000 0010 0001 STORE 33 операцію підрахунку пар 11.
3 0000 0000 0001 1110 LOAD 30 Зменшення лічильника циклу на 1 та
4 0011 0000 0001 1111 SUB 31 збереження нового значення.
5 0001 0000 0001 1110 STORE 30
6 1001 0000 0001 1010 JZ 26 Умовний перехід на 26 комірку,
якщо лічильник буде дорівнювати нулю.
Інакше виконується наступний оператор.
7 0000 0000 0010 0000 LOAD 32 Визначення молодшого розряду за допомогою
8 1111 1110 0000 0000 RСR зсуву числа A на один розряд вправо. Оператор
9 1101 0000 0000 1011 JС 11 умовного переходу перевірить яке значення
містить посунутий розряд, 1 чи 0.
10 0001 0000 0010 0000 STORE 32 Збереження нового значення числа в якому
відбувся зсув.
11 1100 0000 0000 0010 JNС 2 Умовний перехід на початок циклу при С=0.
Інакше виконується наступний оператор.
12 0001 0000 0010 0000 STORE 32 Запис числа яке отримали під час операції зсуву в
32 комірку.
13 0000 0000 0001 1110 LOAD 30 Зменшення лічильника циклу на 1 та
14 0011 0000 0001 1111 SUB 31 збереження нового значення.
15 0001 0000 0001 1110 STORE 30
16 1001 0000 0001 1010 JZ 26 Умовний перехід на 26 комірку,
якщо лічильник буде дорівнювати нулю.
Інакше виконується наступний оператор.
17 0000 0000 0010 0000 LOAD 32 Визначення молодшого розряду за допомогою
18 1111 1110 0000 0000 RСR зсуву числа A на один розряд вправо. Оператор
19 1101 0000 0001 0101 JС 21 умовного переходу перевірить яке значення
містить посунутий розряд, 1 чи 0.
20 0001 0000 0010 0000 STORE 32 Збереження нового значення числа в якому
відбувся зсув.
21 1100 0000 0000 0010 JNС 2 Умовний перехід на початок циклу при С=0.
Інакше виконується наступний оператор.
22 0001 0000 0010 0000 STORE 32 Збереження попередньо отриманого числа до 32
комірки .
23 0000 0000 0010 0010 LOAD 34 Збільшення лічильника пар 11 на 1 та
24 0010 0000 0001 1111 ADD 31 збереження нового значення.
25 0001 0000 0010 0010 STORE 34
26 1110 0000 0000 0010 JMP 2 Перехід на початок циклу.
27 0111 1100 0000 0000 HALT Завершення програми.
5. Розробити алгоритм і написати програму, у якій для числа, яке використовується у
пункті 4, виконується інвертування пар "11" - для парних номерів із списку групи і
інвертування пар "00" - для непарних номерів із списку групи.

Програма для інвертування 00 в 11:

45 комірка містить 1100 0000 0000 0000

46 комірка містить лічильник циклу 1710

В 47 комірці записано 1 для проведення обрахунків

Число А ми вносимо в 48 комірку

В 49 комірку буде скопійовано число А

В 50 комірці буде число В – інвертовані пари 00 числа А.


№і Двійковий код Мнемонічний Коментар до груп інструкцій, що відповідають блокам
інструкції формат алгоритму програми
інструкції
0 0000 0000 0011 0000 LOAD 48 Копіюю вхідне число А в наступну комірку пам’яті для
1 0001 0000 0011 0001 STORE 49 того, щоб порівняти його з результатом. Число А у
вхідній комірці буде стерто.
2 0000 0000 0010 1110 LOAD 46
Зменшення лічильника циклу на 1, та збереження
3 0011 0000 0010 1111 SUB 47
нового значення.
4 0001 0000 0010 1110 STORE 46
5 1001 0000 0010 0100 JZ 36 В разі нульового значення лічильника, завершуємо
програму.
6 0000 0000 0011 0000 LOAD 48 Заносимо молодший розряд в ознаку переносу С для
7 1111 1110 0000 0000 RCR того, щоб визначити якому значенню він відповідає,
8 0001 0000 0011 0000 STORE 48 0 чи 1. Якщо С=0 то ми перейдемо на вказану комірку,
9 якщо С=1 програма продовжить послідовне виконання.
1100 0000 0000 1111 JNC 15
10 0000 0000 0011 0010 LOAD 50 Додаємо одиницю до інвертованого числа, виконуємо
11 0010 0000 0010 1111 ADD 47 зсув вправо, зберігаємо нове значення і повертаємось на
12 1111 1010 0000 0000 ROR початок циклу. Так ми записуємо неінвертовані одиниці
13 для числа В.
0001 0000 0011 0010 STORE 50
14 1110 0000 0000 0010 JMP 2
15 0000 0000 0011 0010 LOAD 50 Сунемо молодший розряд інвертованого числа вправо,
16 1111 1010 0000 0000 ROR зберігаємо нове значення. Так ми записуємо нулі для
17 0001 0000 0011 0010 STORE 50 числа В.
18 0000 0000 0010 1110 LOAD 46 Зменшення лічильника циклу на 1, та збереження
19 0011 0000 0010 1111 SUB 47 нового значення.
20 0001 0000 0010 1110 STORE 46
21 1001 0000 0010 0100 JZ 36 В разі нульового значення лічильника, завершуємо
програму
22 0000 0000 0011 0000 LOAD 48 Заносимо молодший розряд в ознаку переносу С для
23 1111 1110 0000 0000 RCR того, щоб визначити якому значенню він відповідає,
24 0001 0000 0011 0000 STORE 48 0 чи 1. Якщо С=0 то ми перейдемо на вказану комірку,
25 якщо С=1 програма продовжить послідовне виконання.
1100 0000 0001 1111 JNC 31
26 0000 0000 0011 0010 LOAD 50 Додаємо одиницю до інвертованого числа, виконуємо
27 0010 0000 0010 1111 ADD 47 зсув вправо, зберігаємо нове значення і повертаємось на
28 1111 1010 0000 0000 ROR початок циклу. Так ми записуємо неінвертовані одиниці
29 для числа В.
0001 0000 0011 0010 STORE 50
30 1110 0000 0000 0010 JMP 2
31 0000 0000 0011 0010 LOAD 50 Якщо ознака переносу С буде дорівнювати 0 два рази
32 1111 1010 0000 0000 ROR підряд, то до результуюючого числа В додаємо 0 в
33 0110 0000 0010 1101 XOR 45 найменший розряд і зсуваємо його циклічно вправо.
34 Отримаємо два 00 в двох старших розрядах і з
0001 0000 0011 0010 STORE 50
допомогою XOR інвертуємо їх в 11 не змінюючи
решти значень в розрядах.
35 1110 0000 0000 0010 JMP 2 Оператор безумовного переходу повертає на початок
циклу.
36 0111 1100 0000 0000 HALT Завершення програми.
Висновок:
На цій лабораторній роботі я вивчив призначення логічних операцій, навчився
створювати і використовувати "фільтри" за допомогою логічних операцій, вивчив правила
кодування додатних і від’ємних двійкових чисел для здійснення арифметичних операцій у
інструкціях навчального комп’ютера – симулятора DeComp.

You might also like