Материал: звіт лаб4

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

Технічний коледж національного університету

«Львівська політехніка»

ЗВІТ

з лабораторної роботи №4

З предмету архітектура комп’ютера

Виконав: ст. гр. КІ-21

Кобринович Р. В.

Прийняв:

Чистяк В. І.

Львів - 2019

Мета:

  • Вивчити призначення логічних операцій;

  • Навчитись створювати і використовувати "фільтри" за допомогою логічних операцій;

  • Вивчити правила кодування додатних і від’ємних двійкових чисел для здійснення арифметичних операцій у комп’ютерах;

  • Навчитися кодувати двійкові числа із знаком у інструкціях навчального комп’ютера – симулятора DeComp.

Теоретичні відомості

1.1. Загальні відомості про логічні функції

Усі дії, які виконуються у комп’ютері, повинні бути закодовані попередньо у програмі. За допомогою кожної команди програми кодується одна операція комп’ютера, яка виконується над парою операндів.

Арифметична операція – операція, у якій операнди і результат сприймаються як числа. До них відносяться операції додавання і віднімання, з якими ми познайомилися у попередніх роботах, а також операції множення і ділення. Усі інші операції, наприклад, добування кореня квадратного, піднесення до степеня, дифференцювання та ін., реалізуються у комп’ютері на основі вказаних операцій.

Логічна операція – операція, що полягає у логічній обробці операндів, які приймають у ній участь. До них відносяться операції порівняння, визначення модуля, визначення ознак результатів арифметичних операцій та ін. До них часом відносять операції зсуву праворуч або ліворуч.

Точна, певна послідовність операцій або програма, яка потрібна для виконання певної задачі на комп’ютері, формується на основі математичної теорії, відомої як алгебра логіки. Створив алгебру логіки англійський математик Дж. Буль (1815 – 1864). Тому її називають також алгеброю Буля. Алгебра логіки отримала значний розвиток завдяки роботам таких вчених як Е. Пост, К. Шеннон, В. Глушков, С. Яблонський та ін. Основним поняттям алгебри логіки є висловлювання.

Під час вивчення звичайної алгебри розглядають залежності типу А = f(x1, x2, …xn), де x1, x2, …xn – аргументи, а А – функція. Аргументи і функція при цьому можуть набувати найрізноманітніших числових значень: додатних і від’ємних, цілих і дробових. У алгебрі логіки вивчають залежності аналогічного вигляду А = f(x1, x2, …xn), але такі, в яких аргументи і функція можуть набувати тільки двох значень: 1 і 0. Практичне використання таких функцій є формальним (математичним) описом логіки людського мислення в процесі виконання якоїсь задачі.

Вся діяльність людини так або інакше пов’язана з різними висловлюваннями. Будь-яке вимовлене твердження, зауваження є певним висловлюванням. У алгебрі логіки саме висловлювання є змінною (аргументом), яка може набувати одного з двох можливих значень (істина чи фальш, так чи ні, правдиво чи не правдиво) і над якою можна виконувати деякі дії. Подібно до аргументів у звичайній алгебрі, висловлювання позначають буквами якого-небудь алфавіту, наприклад, X, Y,Z або а, в, с. . .

За змістом висловлювання поділяють на прості і складні. Наприклад, прості: “вікно відчинене”, “у квартирі холодно”, “Микола вчиться в національному університеті “Львівська політехніка”, “Микола йде на стадіон”. З простих висловлювань за допомогою слів-зв’язок (сполучників) І, АБО, НЕ, ЯКЩО-ТО та ін. утворюють складні. Наприклад, речення: „Вікно відчинене і у квартирі холодно”, „Микола піде у парк або на стадіон”.

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

Група інструкцій, яку ми будемо досліджувати у даній роботі, присвячена логічним операціям: AND (логічне І), OR (логічне АБО), XOR (логічне Виключне-АБО) та NOT (логічне НЕ).

За винятком останньої логічної інструкції NOT, усі решта є адресними інструкціями, які виконують логічні операції над двома числами: значенням числа, що розміщене у акумуляторі та вмістом комірки пам’яті, на яку вказує 12-розрядна адреса у машинному коді інструкції, а також записують результат назад до акумулятора. Інструкція NOT є безадресною і вона заперечує (інвертує) усі розряди акумулятора із збереженням результату назад до акумулятора.

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

1.3. Подання від’ємних чисел у комп’ютерах

Для виконання операцій обробки інформації у комп’ютерах і системах збереження та передачі даних, її замінюють числами. Позначення різної інформації відповідними числами називають цифровим кодування, а послідовність цифр для позначення певної інформації - її кодом.

Кодуванню числової інформації у комп’ютерах приділяється особлива увага. Це викликано декількома причинами, одна з яких – наявність знаків у числах. Основна проблема полягає у тому, що центральним складовим елементом арифметично-логічного пристрою (АЛП) є суматор, який виконує лише порозрядне додавання двох кодів із врахуванням ваги кожного з розрядів та з організацією міжрозрядних переносів. Знак числа суматор не “розуміє”, його не розрізняє і сприймає знак числа як звичайний двійковий код.

На даний час прийнято, що мінус кодується як одиниця (1), а плюс – як нуль (0).

Для здійснення арифметичних операцій у комп’ютерах були розроблені спеціальні способи кодування і відповідні коди. Найбільш поширеними є прямий, обернений та доповняльний коди. Підкреслимо, що доповняльний та обернений коди використовуються тільки для подання від’ємних двійкових чисел. Додатні числа у цих кодах не міняють свого зображення і подаються як у прямому коді.

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

  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. Іншими словами результатом операції є молодший розряд суми.

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

Мій варіант 13. Згідно з умовою 1-ої лабораторної роботи, мої числа: 2010 і 3010.

Спочатку переведемо ці числа у двійкову систему числення:

2010 = 0001 0100 0001 01002;

3010 = 0001 1110 0001 11102.

Заношу перше число у 20-ту комірку, а друге у 21. Пишу програму в інструкціях:

№ комірки пам’яті

Двійковий код інструкції

Мнемонічний запис

інструкції

Коментар

0000 0000 0000

0000 0000 0001 0100

LOAD 20;

Завантажити дані 20-ої комірки (число 2010) до Акумулятора

0000 0000 0001

0100 0000 0001 0101

AND 21;

2010 & 3010

0000 0000 0010

0001 0000 0001 0110

STORE 22;

Записати число в 22 комірку

0000 0000 0011

0000 0000 0001 0100

LOAD 20;

Завантажити дані 20-ої комірки (число 2010) до Акумулятора

0000 0000 0100

0101 0000 0001 0101

OR 21;

2010 | 3010

0000 0000 0101

0001 0000 0001 0111

STORE 23;

Записати результат операції в 23 комірку

0000 0000 0110

0000 0000 0001 0100

LOAD 20;

завантажити число 2010 до Акумулятора

0000 0000 0111

0110 0000 0001 0101

XOR 21;

2010  3010

0000 0000 1000

0001 0000 0001 1000

STORE 24;

Записати число в 24 комірку.

0000 0000 1001

0000 0000 0001 0100

LOAD 20:

Завантажити число 2010 до Акумулятора

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;

Завантажити число 3010 до Акумулятора

0000 0000 1101

0111 0000 0000 0000

NOT

0000 0000 1110

0001 0000 0001 1010

STORE 26;

Завантажити число в 26 комірку

0000 0000 1111

0111 1100 0000 0000

HALT;

Зупинити програму

Запускаю програму і досліджую її у покроковому режимі:

РА

РД

А

РІ

ЛАІ

РО(Z S C)

1

0000 0001 0100

0001 0100 0001 0100

0001 0100 0001 0100

0000 0000 0001 0100

0000 0000 0001

0 0 0

2

0000 0001 0101

0001 1110 0001 1110

0001 0100 0001 0100

0100 0000 0001 0101

0000 0000 0010

0 0 0

3

0000 0001 0110

0001 0100 0001 0100

0001 0100 0001 0100

0001 0000 0001 0110

0000 0000 0011

0 0 0

4

0000 0001 0100

0001 0100 0001 0100

0001 0100 0001 0100

0000 0000 0001 0100

0000 0000 0100

0 0 0

5

0000 0001 0101

0001 1110 0001 1110

0001 1110 0001 1110

0101 0000 0001 0101

0000 0000 0101

0 0 0

6

0000 0001 0111

0001 1110 0001 1110

0001 1110 0001 1110

0001 0000 0001 0111

0000 0000 0110

0 0 0

7

0000 0001 0100

0001 0100 0001 0100

0000 1101 0000 1101

0000 0000 0001 0100

0000 0000 0111

0 0 0

8

0000 0001 0101

0001 1110 0001 1110

0010 1100 0010 1100

0110 0000 0001 0101

0000 0000 1000

0 0 0

9

0000 0001 1000

0000 1010 0000 1010

0010 1100 0010 1100

0001 0000 0001 1000

0000 0000 1001

0 0 0

10

0000 0001 0100

0001 0100 0001 0100

0001 0100 0001 0100

0000 0000 0001 0100

0000 0000 1010

0 0 0

11

0000 0000 1010

0111 0000 0000 0000

1110 1011 1110 1011

0111 0000 0000 0000

0000 0000 1011

0 1 0

12

0000 0001 1001

1110 1011 1110 1011

1110 1011 1110 1011

0001 0000 0001 1001

0000 0000 1100

0 1 0

13

0000 0001 0101

0001 1110 0001 1110

0001 1110 0001 1110

0000 0000 0001 0101

0000 0000 1101

0 1 0

14

0000 0000 1101

0111 0000 0000 0000

1110 0001 1110 0001

0111 0000 0000 0000

0000 0000 1110

0 1 0

15

0000 0001 1010

1110 0001 1110 0001

1110 0001 1110 0001

0001 0000 0001 1010

0000 0000 1111

0 1 0

16

0000 0000 1111

1110 0001 1110 0001

1110 0001 1110 0001

0111 1100 0000 0000

0000 0000 1111

0 1 0

Для кращої наочності узагальнимо результати:

  • Результат операції AND: А: 0001 0100 0001 01002, РО: 0002;

  • Результат операції OR: А: 0001 1110 0001 11102, РО: 0002;

  • Результат операції XOR: А: 0010 1100 0010 11002, РО: 0002;

  • Результат операції NOT для першого числа: А: 1110 1011 1110 10112, РО: 0102;

  • Результат операції NOT для другого числа: А: 1110 0001 1110 00012, РО: 0102.

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

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

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

Заношу в Аккумулятор та в комірки пам'яті потрібні мені дані:

А) А Число 0001 0100 0001 01002. (Записую число 2010, використавши всі 4 тетради 16-тирозрядного формату);

Б) Adr.0 0101 0000 0000 00012. (Інструкція OR); записую число 3010, використавши всі 4 тетради 16-ти розрядного формату);

В) Adr.1 Число 0001 1110 0001 11102 (записую число 3010, використавши всі 4 тетради 16-ти розрядного формату);

Г) ЛАІ Adr 0.

Запускаю її у потактовому режимі та досліджую:

Мнемонічний запис

Код, що обробляється

Коментар

1

ЛАІ РА

0000 0000 0000

вибір адреси інструкції і занесення її до Регістра Адреси

2

Пам(РА) РД

0101 0000 0000 0001

вибір коду інструкції з РА і занесення його до Регістра Даних

3

РД РІ

0101 0000 0000 0001

декодування інструкції у Регістрі Інструкцій

4

РІ РА

0000 0000 0001

Передача адреси операнда

5

Пам(РА) РД

0001 1110 0001 1110

вибір коду другого операнда з РА і занесення його до Регістра Даних

6

А | РД А

0001 1110 0001 1110

Виконується інструкція OR і результат записується до А

7

АРО

000

Встановлення прапорців ознак

8

ЛАІ + 1 ЛАІ

0000 0000 0001

підготовка адреси нової інструкції