Дослідження інструкцій логічних операцій і виконання арифметичних операцій навчального комп’ютера – симулятора DeComp

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

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

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

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

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

Міністерство освіти і науки Національний університет „Львівська політехніка” Кафедра СКС / Звіт з лабораторної роботи № 4 з дисципліни: «Організація та функціонування комп’ютерів» на тему: «Дослідження інструкцій логічних операцій і виконання арифметичних операцій навчального комп’ютера – симулятора DeComp» Львів 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). Для здійснення арифметичних операцій у комп’ютерах були розроблені спеціальні способи кодування і відповідні коди. Найбільш поширеними є прямий, обернений та доповняльний коди. Підкреслимо, що доповняльний та обернений коди використовуються тільки для подання від’ємних двійкових чисел. Додатні числа у цих кодах не міняють свого зображення і подаються як у прямому коді. Хід виконання роботи Вивчити і записати у звіт призначення логічних операцій 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-й лабораторній роботі, використовуючи всі чотири тетради 16-ти розрядного формату. Наприклад, якщо задане число 1810 = 000100102 , воно записується у вигляді: 00010010 00010010. Виписати результати виконання програми та значення прапорців ознак. Мій варіант 11. Згідно з умовою 1-ої лабораторної роботи, мої числа: 1810 і 2810. Спочатку переведемо ці числа у двійкову систему числення: 1810 = 00010010 000100102; 2810 = 00011100 000111002. Заношу перше число у 34-ий номер адреси комірки пам’яті, а друге у 35-ий номер адреси комірки пам’яті. Пишу програму в інструкціях: Адреса комірки пам’яті Двійковий код інструкції Мнемонічний запис інструкції Коментар  0000 0000 0000 0000 0000 0010 0010 LOAD 34; Завантажити дані 34-ої комірки (число 1810) до Акумулятора  0000 0000 0001 0100 0000 0010 0011 AND 35; 1810 & 2810  0000 0000 0010 0001 0000 0010 0100 STORE 36; Записати число в 36 комірку  0000 0000 0011 0000 0000 0010 0010 LOAD 34; Завантажити дані 34-ої комірки (число 1810) до Акумулятора  0000 0000 0100 0101 0000 0010 0011 OR 35; 1810 | 2810  0000 0000 0101 0001 0000 0010 0101 STORE 37; Записати результат операції в 37 комірку  0000 0000 0110 0000 0000 0010 0010 LOAD 34; завантажити число 1810 до Акумулятора  0000 0000 0111 0110 0000 0010 0011 XOR 35; 1810  2810  0000 0000 1000 0001 0000 0010 0110 STORE 38; Записати число в 38 комірку.  0000 0000 1001 0000 0000 0010 0010 LOAD 34: Завантажити число 1810 до Акумулятора  0000 0000 1010 0111 0000 0000 0000 NOT;  0001 0100 0010 0010  0000 0000 1011 0001 0000 0010 0111 STORE 39; Записати число в 39 комірку.  0000 0000 1100 0000 0000 0010 0011 LOAD 35; Завантажити число 2810 до Акумулятора  0000 0000 1101 0111 0000 0000 0000 NOT  0001 1110 0010 1100  0000 0000 1110 0001 0000 0010 1000 STORE 40; Завантажити число в 40 комірку  0000 0000 1111 0111 1100 0000 0000 HALT; Зупинити програму   Запускаю і досліджую її у покроковому режимі: РА РД А РІ ЛАІ РО(Z S C)  1 0000 0010 0010 0001 0010 0001 0010 0001 0010 0001 0010 0000 0000 0010 0010 0000 0000 0001 000  2 0000 0010 0011 0001 1100 0001 1100 0001 0000 0001 0000 0100 0000 0010 0011 0000 0000 0010 000  3 0000 0010 0100 0001 0000 0001 0000 0001 0000 0001 0000 0001 0000 0010 0100 0000 0000 0011 000  4 0000 0010 0010 0001 0010 0001 0010 0001 0010 0000 0010 0000 0000 0010 0010 0000 0000 0100 000  5 0000 0010 0011 0001 1100 0001 1100 0001 1110 0001 1110 0101 0000 0010 0011 0000 0000 0101 000  6 0000 0010 0101 0001 1110 0001 1110 0001 1110 0001 1110 0001 0000 0010 0101 0000 0000 0110 000  7 0000 0010 0010 0001 0010 0001 0010 0001 0010 0001 0010 0000 0000 0010 0010 0000 0000 0111 000  8 0000 0010 0011 0001 1100 0001 1100 0000 1110 0000 1110 0110 0000 0010 0011 0000 0000 1000 000  9 0000 0010 0110 0000 1110 0000 1110 0000 1110 0000 1110 0001 0000 0010 0110 0000 0000 1001 000  10 0000 0010 0010 0001 0010 0001 0010 0001 0010 0001 0010 0000 0000 0010 0010 0000 0000 1010 000  11 0000 0000 1010 0111 0000 0000 0000 1110 1101 1110 1101 0111 0000 0000 0000 0000 0000 1011 010  12 0000 0010 0111 1110 1101 1110 1101 1110 1101 1110 1101 0001 0000 0010 0111 0000 0000 1100 010  13 0000 0010 0011 0001 1100 0001 1100 0001 1100 0001 1100 0000 0000 0010 0011 0000 0000 1101 010  14 0000 0000 1101 0111 0000 0000 0000 1110 0011 1110 0011 0111 0000 0000 0000 0000 0000 1110 010  15 0000 0010 1000 1110 0011 1110 0011 1110 0011 1110 0011 0001 0000 0010 1000 0000 0000 1111 010  16 0000 0000 1111 0111 1100 0000 0000 1110 0011 1110 0011 0111 1100 0000 0000 0000 0000 1111 010   Для кращої наочності узагальнимо результати: Результат операції AND: А: 0001 0010 0001 00102, РО: 0002; Результат операції OR: А: 0001 1110 0001 11102, РО: 0002; Результат операції XOR: А: 0000 1110 0000 11102, РО: 0002; Результат операції NOT для першого числа: А: 1110 1101 1110 11012, РО: 0102; Результат операції NOT для другого числа: А: 1110 0011 1110 00112, РО: 0102. Дослідити у потактовому режимі інструкції AND і XOR - для непарних номерів із журналу списку групи, OR та NOT - для парних номерів із списку групи. Виписати результати виконання програми. Мій варіант 11, тому досліджую інструкції AND та XOR. 1) Дослідження функції AND. Заношу в Аккумулятор та в комірки пам'яті потрібні мені дані: А) А ( Число 0001 0010 0001 00102. (Записую число 1810, використавши всі 4 тетради 16-тирозрядного формату); Б) Adr.0 ( AND(0100 0000 0000 0001) записав інструкцію. В) Adr.1 ( Число 0001 1100 0001 11002 (Записую число 2810, використавши всі 4 тетради 16-ти розрядного формату); Г) ЛАІ ( Adr 0. № Мнемонічний запис Код, що обробляється Коментар  1 ЛАІ ( РА 0000 0000 0000 Вибір адреси інструкції і занесення її до Регістра Адреси  2 РА ( РД 0100 0000 0000 0001 Вибір коду інструкції з РА і занесення його до Регістра Даних  3 РД ( РІ 0100 0000 0000 0001 Декодування інструкції у Регістрі Інструкцій  4 РІ (РА 0000 0000 0001 Передача адреси операнда  5 РА ( РД 0001 1100 0001 1100 Вибір коду другого операнда з РА і занесення його до Регістра Даних  6 А | РД ( А 0001 0000 0001 0000 Виконується інструкція OR і результат записується до А  7 А(РО 000 Встановлення прапорців ознак  8 ЛАІ + 1 ( ЛАІ 0000 0000 0001 Підготовка адреси нової інструкції   2) Дослідження функції XOR. Заношу в Аккумулятор та в комірки пам'яті потрібні мені дані: А) А ( Число 0001 0010 0001 00102. (Записую число 1810, використавши всі 4 тетради 16-тирозрядного формату); Б) Adr.0 ( XOR(0110 0000 0000 0001) записав інструкцію. В) Adr.1 ( Число 0001 1100 0001 11002 (Записую число 2810, використавши всі 4 тетради 16-ти розрядного формату); Г) ЛАІ ( Adr 0. № Мнемонічний запис Код, що обробляється Коментар  1 ЛАІ ( РА 0000 0000 0000 Вибір адреси інструкції і занесення її до Регістра Адреси  2 РА ( РД 011 0000 0000 0001 Вибір коду інструкції з РА і занесення його до Регістра Даних  3 РД ( РІ 0110 0000 0000 0001 Декодування інструкції у Регістрі Інструкцій  4 РІ (РА 0000 0000 0001 Передача адреси операнда  5 РА ( РД 0001 1100 0001 1100 Вибір коду другого операнда з РА і занесення його до Регістра Даних  6 А | РД ( А 0000 1110 0000 1110 Виконується інструкція OR і результат записується до А  7 А(РО 000 Встановлення прапорців ознак  8 ЛАІ + 1 ( ЛАІ 0000 0000 0001 Підготовка адреси нової інструкції   4. Розробити алгоритм і написати програму, що для довільного числа "А", яке розміщене у комірці пам"яті з адресою "N", підраховує кількість пар "11" - для непарних номерів із списку групи, і кількість пар "00" - для парних номерів із списку групи. / Задане число А міститься в 20-тій комірці. Число В – лічильник кількості нулів в числі А, які містятья в 21-ій комірці. Число k – змінна для перевірки наявності пар цифр в числі А, міститься в 22-ій комірці, k = 8. В комірці 23 записано число 1. В комірці 25 записано число 310 (двіковий код цього числа: 00112, тому, використовуючи його, легко дослідити число на пару 00). Пишу програму: № Двійковий код інструкції Мнемонічний формат інструкції Коментар до груп інструкцій, що відповідають блокам алгоритму програми  1 0000 0000 0001 0100 LOAD 20 Використовую інструкцію AND для того, щоб перевірити, чи дорівнюють два молодші розряди 0  2 0100 0000 0001 1001 AND 25   3 1001 0000 0000 0111 JZ 7   4 0011 0000 0000 1110 LOAD 21 Збільшую змінну лічильника на 1, якщо цифри дорівнюють 0, якщо ні, то цей блок інструкцій не виконується  5 0010 0000 0001 0111 ADD 23   6 0001 0000 0001 0101 STORE 21   7 0000 0000 0000 1100 LOAD 20 Подвійний зсув числа вправо для перевірки двох наступних розрядів числа.  8 1111 1110 0000 0000 ROR   9 1111 1110 0000 0000 ROR   10 0001 0000 0001 0100 STORE 20   11 0000 0000 0001 0110 LOAD 22 Перевіряю число на наявність неперевірених пар цифр. Якщо ще не всі перевірені, то повертаємось до першого блоку інструкцій.  12 0011 0000 0001 0111 SUB 23   13 0001 0000 0001 0110 STORE 22   14 1001 0000 0000 0000 JZ 1   15 1000 0000 0000 0000 LOAD 21 Якщо всі пари цифр числа перевірені - завантажити до акумулятора лічильник кількості пар цифр ріних 0.  16 0111 1100 0000 0000 HALT Зупинка процесора   5. Розробити алгоритм і написати програму, у якій для числа, яке використовується у пункті 4, виконується інвертування пар "11" - для парних номерів із списку групи і інвертування пар "00" - для непарних номерів із списку групи. Задане число А міститься в 20-тій комірці. Число В – лічильник кількості нулів в числі А, які містятья в 21-ій комірці. Число k – змінна для перевірки наявності пар цифр в числі А, міститься в 22-ій комірці, k = 8. В комірці 23 записано число 1. В комірці 25 записано число 310 (двіковий код цього числа: 00112, тому, використовуючи його, легко дослідити число на пару 00). / № Двійковий код інструкції Мнемонічний формат інструкції Коментар до груп інструкцій, що відповідають блокам алгоритму програми  1 0000 0000 0001 0100 LOAD 20 Почергово використовую інструкцію AND і SUB для того, щоб перевірити, чи дорівнюють цифри двох молодших розрядів 1.  2 0100 0000 0001 1001 AND 25   3 0011 0000 0001 1001 SUB 25   4 1001 0000 0000 0111 JZ   5 0011 0000 0000 1110 LOAD 20 Якщо цифри дорівнюють одиниці, встановлюю два молодші розряди числа рівними 0. Якщо цифри дорівнюють 0, то цей блок не виконується.  6 0011 0000 0001 1001 SUB 25   7 1111 1110 0000 0000 ROR Встановити старшими розрядами дві наступні цифри числа і записати його в 20 комірку.  8 1111 1110 0000 0000 ROR   9 0001 0000 0001 0100 STORE 20   10 0000 0000 0001 0110 LOAD 22 Зменшити лічильник пар цифр в числі на 1 і порівняти його з нулем. Якщо він дорівнює нулю, то в числі всі пари цифр перевірені і наступний блок не виконується.  11 0011 0000 0001 0111 SUB 23   12 0001 0000 0001 0110 STORE 22   13 1001 0000 0000 0000 JZ 1   14 1000 0000 0000 0000 LOAD 20 Завантаження числа до акумулятора  15 0111 1100 0000 0000 HALT Зупинка процесора   6. Розробити алгоритм і написати програму додавання двох від’ємних 16-ти розрядних чисел. Операція виконується у доповняльному коді. Блок-схема алгоритму: Адр. комірки пам’яті у десятковому коді Код інструкції Мнемонічний формат інструкції Коментарі інструкцій.  0 0000 0000 0000 1010 LOAD 10 Переведення в доповняльний код 1-го числа  1 0111 0000 0000 0000  NOT   2 0010 0000 0000 0111 ADD 7   3 0001 0000 0000 0111 STORE 9   4 0000 0000 0000 1011 LOAD 11 Переведення в доповняльний код 2-го числа  5 0111 0000 0000 0000 NOT   6 0010 0000 0000 0111 ADD 7   7 0010 0000 0000 0110 ADD 10 Додавання 2-х чисел  8 0111 0000 0000 0000 NOT Переведення в прямий код результату.  9 0010 0000 0000 0111 ADD 7   10 0001 0000 0000 1001 STORE 9   11 0111 1100 0000 0000 HALT СТОП   Висновок: На цій лабораторній роботі я вивчив призначення логічних операцій, вивчив правила кодування додатних і від’ємних двійкових чисел для здійснення арифметичних операцій у комп’ютерах. Також я навчився кодувати двійкові числа із знаком у інструкціях навчального комп’ютера – симулятора DeComp.
Антиботан аватар за замовчуванням

28.02.2020 01:02-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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