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

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

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

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

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

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт з курсової з дисципліни: “Організація та функціонування комп’ютерів” на тему: “Дослідження інструкцій логічних операцій і виконання арифметичних операцій навчального симулятора DeComp ” 2008 Мета роботи: 1. Вивчити призначення логічних операцій. 2. Навчитись створювати і використовувати "фільтри" за допомогою логічних операцій. 3. Вивчити правила кодування додатних і від’ємних двійкових чисел для здійснення арифметичних операцій у комп’ютерах; 4. Навчитися кодувати двійкові числа із знаком у інструкціях навчального комп’ютера – симулятора DeComp. 1. Теоретичні відомості 1.1. Загальні відомості про логічні функції Арифметична операція – операція, у якій операнди і результат сприймаються як числа. До них відносяться операції додавання і віднімання, з якими ми познайомилися у попередніх роботах, а також операції множення і ділення. Усі інші операції, наприклад, добування кореня квадратного, піднесення до степеня, дифференцювання та ін., реалізуються у комп’ютері на основі вказаних операцій. Логічна операція – операція, що полягає у логічній обробці операндів, які приймають у ній участь. До них відносяться операції порівняння, визначення модуля, визначення ознак результатів арифметичних операцій та ін. До них часом відносять операції зсуву праворуч або ліворуч. Вся діяльність людини так або інакше пов’язана з різними висловлюваннями. Будь-яке вимовлене твердження, зауваження є певним висловлюванням. За змістом висловлювання поділяють на прості і складні Будь-яке висловлювання може відповідати або не відповідати дійсності. У першому випадку його називають істинним (правдивим, true) і позначають як 1, а в інших – помилковим (хибним, false) і позначають як 0. 1.2. Подання від’ємних чисел у комп’ютерах Для виконання операцій обробки інформації у комп’ютерах і системах збереження та передачі даних, її замінюють числами. Позначення різної інформації відповідними числами називають цифровим кодування, а послідовність цифр для позначення певної інформації - її кодом. Кодуванню числової інформації у комп’ютерах приділяється особлива увага. Це викликано декількома причинами, одна з яких – наявність знаків у числах. Основна проблема полягає у тому, що центральним складовим елементом арифметично-логічного пристрою (АЛП) є суматор, який виконує лише порозрядне додавання двох кодів із врахуванням ваги кожного з розрядів та з організацією міжрозрядних переносів. Знак числа суматор не “розуміє”, його не розрізняє і сприймає знак числа як звичайний двійковий код. На даний час прийнято, що мінус кодується як одиниця (1), а плюс – як нуль (0). Для здійснення арифметичних операцій у комп’ютерах були розроблені спеціальні способи кодування і відповідні коди. Найбільш поширеними є прямий, обернений та доповняльний коди. Підкреслимо, що доповняльний та обернений коди використовуються тільки для подання від’ємних двійкових чисел. Додатні числа у цих кодах не міняють свого зображення і подаються як у прямому коді. 1.2.1. Прямий код Він базується на природньому поданні чисел у вигляді їх абсолютного значення з кодом відповідного знаку: плюса (0) або мінуса (1) у старшому розряді. Формула утворення прямого коду двійкового числа А = ± 0, а1а2а3…аn має вигляд  Таким чином, цифрові розряди числа у прямому коді залишаються незмінними, а у знаковій частині записується одиниця для від’ємного числа і нуль для додатного числа. 1.2.2. Обернений код Обернений код від’ємного числа називають доповненням до 1. Тут так само присутній знаковий розряд (0 – це “+”, 1 – це “-”). Формула утворення оберненого коду має вигляд Аоб =  (1.3.2) Обернений код додатного числа повністю співпадає з відображенням числа у прямому коді. Приклад 1.3.2. А = - 0,100110. Аоб = 10 + (– 0,100110) – 0,000001 = 1,011001. Звідси витікає правило: щоб записати від’ємне число в оберненому коді, потрібно у знаковому розряді цього числа поставити одиницю, а в числових розрядах нулі замінити одиницями, а одиниці – нулями. Операція заміни нуля на одиницю і навпаки називається інвертуванням. 1.2.3. Доповняльний код Для подання від’ємних чисел у двійковій системі числення частіше використовується система доповнення до двох. У ній також є знаковий розряд (0 це “ + ”, а 1 – це “-”). Доповнення виконується у два етапи. Спочатку кожна 1 міняється на 0, а кожний 0 – на 1 (інверсія). Потім до молодшого розряду отриманого результату додається 1. Наприклад, розглянемо перетворення вісьмирозрядного числа - 610 у форму з доповненням до двох: 000001102 = (+ 6)10 111110012 = (- 6 у системі з доповненням до 1) 111110102 = (- 6 у системі з доповненням до 2). Формула утворення доповняльного коду двійкового числа має вигляд Адоп =  Порівнюючи від’ємне число А з його доповняльним кодом Адоп, можна вивести наступне правило: щоб записати від’ємне число у доповняльному коді, потрібно у знаковому розряді цього числа поставити одиницю, а у всіх числових розрядах нулі замінити одиницями, а одиниці – нулями і до отриманого результату добавити одиницю до молодшого розряду 1.3.4. Модифіковані коди Ці коди відрізняються від простих машинних кодів тим, що на відображення знака відводиться два розряди: плюс відображається двома нулями (00), а мінус - двома одиницями (11). З погляду побудови АЛП вони зручні для виявлення переповнення розрядної сітки, яке може виникнути при додаванні чисел. Значення 01 та 10 у знакових розрядах свідчать про переповнення розрядної сітки. Невизначеність знаку приводить до того, що результат у цьому випадку буде не коректний, тобто, втрачається. У модифікованих кодах другий розряд ліворуч від коми визначає знак числа, а перший розряд служить для аналізу переповнення розрядної сітки при виконанні арифметичних операцій над числами. ХІД ВИКОНАННЯ РОБОТИ 1)Призначення логічних операцій AND, OR, NOT, XOR За винятком останньої логічної інструкції NOT, усі решта є адресними інструкціями, які виконують логічні операції над двома числами: значенням числа, що розміщене у акумуляторі та вмістом комірки пам’яті, на яку вказує 12-розрядна адреса у машинному коді інструкції, а також записують результат назад до акумулятора. Інструкція NOT є безадресною і вона заперечує (інвертує) усі розряди акумулятора із збереженням результату назад до акумулятора. Перші 3 адресні інструкції мають такі 4-розрядні коди операцій: AND – 0100, OR – 0101 та XOR – 0110. Безадресна інструкція NOT має 6-розрядний код інструкції 0111 00. Позначення, які використовуються для різних логічних операцій: І – *, & чи (; АБО – +, | чи (; Виключне-АБО – ( чи #; НЕ – ~ чи риска над значенням логічного аргумента , наприклад  чи . Логічну операцію І (*,&, () називають кон’юнкцією (від англ. – 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 – перевертання). 2 Ввесли у симулятор та дослідити у покроковому режимі програму, яка буде виконувати логічні операції І, АБО, Виключне-АБО та НЕ над двома числами. Коди чисел вибрали згідно варіанту 26, що визначається у 1-й лабораторній роботі, використовуючи всі чотири тетради 16-ти розрядного формату. Отже число 35 записали 0010 0011 0010 0011, а число 26 записали 0001 1010 0001 1010. У 10 комірку записали 35,у 11 комірку записали 26 Логічна операція І № Адреса комірки Код інструкції Мнемонічний запис Коментар  1 0000 0000 0000 0000 0000 0000 1010 Load 10 Завантажує операнд 10-ї комірки  2 0000 0000 0001 0100 0000 0000 1011 AND 11 Виконує операцію І над операндами 10-ї і 11-ї комірок  3 0000 0000 0010 0111 1100 0000 0000 Halt Завершує виконання програми   РА РД А РІ  0000 0000 1010 0001 1010 0001 1010 0001 1010 0001 1010 0000 0000 0000 1010  0000 0000 1011 0111 1000 0000 0000 0001 1000 0000 0000 0100 0000 0000 1011  0000 0000 1100 0001 1000 0000 0000 0001 1000 0000 0000 0001 0000 0000 1100  0000 0000 0011 0111 1100 0000 0000 0001 1000 0000 0000 0111 1100 0000 0000   ЛАІ РО  0000 0000 0001 000  0000 0000 0010 000  0000 0000 0011 000  0000 0000 0011 000   Логічна операція АБО № Адреса комірки Код інструкції Мнемонічний запис Коментар  1 0000 0000 0000 0000 0000 0000 1010 Load 10 Завантажує операнд 10-ї комірки  2 0000 0000 0001 0101 0000 0000 1011 OR 11 Виконує операцію АБО над операндами 10-ї і 11-ї комірок  3 0000 0000 0010 0111 1100 0000 0000 Halt Завершує виконання програми   РА РД А РІ  0000 0000 1010 0010 0011 0010 0011 0010 0011 0010 0011 0000 0000 0000 1010  0000 0000 1011 0001 1010 0001 1010 0011 1011 0011 1011 0101 0000 0000 1011  0000 0000 1100 0011 1011 0011 1011 0011 1011 0011 1011 0001 0000 0000 1100  0000 0000 0011 0111 1100 0000 0000 0011 1011 0011 1011 0111 1100 0000 0000   ЛАІ РО  0000 0000 0001 000  0000 0000 0010 000  0000 0000 0011 000  0000 0000 0011 000   Логічна операція Виключне-АБО № Адреса комірки Код інструкції Мнемонічний запис Коментар  1 0000 0000 0000 0000 0000 0000 1010 Load 10 Завантажує операнд 10-ї комірки  2 0000 0000 0001 0110 0000 0000 1011 XOR 11 Виконує операцію Виключне-АБО над операндами 10-ї і 11-ї комірок  3 0000 0000 0010 0111 1100 0000 0000 Halt Завершує виконання програми   РА РД А РІ  0000 0000 0101 0010 0000 0001 0110 0010 0000 0001 0110 0000 0000 0000 0101  0000 0000 1011 0001 1010 0001 1010 0011 1010 0000 1100 0110 0000 0000 1011  0000 0000 1100 0011 1010 0000 1100 0011 1010 0000 1100 0001 0000 0000 1100  0000 0000 0011 0111 1100 0000 0000 0011 1010 0000 1100 0111 1100 0000 0000   ЛАІ РО  0000 0000 0001 000  0000 0000 0010 000  0000 0000 0011 000  0000 0000 0011 000   Логічна операція НЕ № Адреса комірки Код інструкції Мнемонічний запис Коментар  1 0000 0000 0000 0000 0000 0000 1010 Load 10 Завантажує операнд 10-ї комірки  2 0000 0000 0001 0111 0000 0000 1011 NOT 11 Виконує операцію НЕ над операндами 10-ї і 11-ї комірок  3 0000 0000 0010 0111 1100 0000 0000 Halt Завершує виконання програми   РА РД А РІ  0000 0000 1010 0010 0011 0010 0011 0010 0011 0010 0011 0000 0000 0000 1010  0000 0000 1011 0010 0011 0010 0011 0000 0000 0000 0000 0110 0000 0000 1011  0000 0000 1100 0000 0000 0000 0000 0000 0000 0000 0000 0001 0000 0000 1100  0000 0000 0011 0111 1100 0000 0000 0000 0000 0000 0000 0111 1100 0000 0000   ЛАІ РО  0000 0000 0001 000  0000 0000 0010 S  0000 0000 0011 S  0000 0000 0011 S   3) Дослідили у потактовому режимі інструкції OR,NOT (парний номер списку групи.) До 1-ї комірки – число 15 (двійковий код = 0000 0000 0000 1111), а до акумулятора число 16 (двійковий код = 0000 0000 0001 0000).Виписали результати виконання роботи Інструкція АБО № Мнемонічний запис Код що обробляється Коментар  1 ЛАІ→РА 0000 0000 0001 Вибір адреси 1-ої інструкції і занесення до РА  2 РА→РД 0101 0000 0000 0001 Вибір коду інструкції з РА і занесення до РД  3 РД→РІ 0101 0000 0000 0001 Декодування інструкції у РІ  4 РІ→РА 0000 0000 0000 0001 Вибір адреси 1-го операнда  5 РА→РД 0101 0000 0000 0000 Вибір коду 1-го операнда з пам’яті і занесення до РД(Другий операнд у акумуляторі)  6 РД+А→А 0101 0000 0000 0000 Виконання операції АБО  7 ZSC(A)→РО 000 Встановлення прапорців регістру ознак  8 ЛАІ +1→ЛАІ 0000 0000 0001 Підготовка адреси нової інструкції   Інструкція НЕ № Мнемонічний запис Код що обробляється Коментар  1 ЛАІ→РА 0000 0000 0001 Вибір адреси 1-ої інструкції і занесення до РА  2 РА→РД 0111 0000 0000 0001 Вибір коду інструкції з РА і занесення до РД  3 РД→РІ 0111 0000 0000 0001 Декодування інструкції у РІ  4 А+1→А 1010 1111 1111 1111 Виконання операції НЕ(Другий операнд у акумуляторі  5 ZSC(A)→РО S Встановлення прапорців ознак  6 ЛАІ +1→ЛАІ 0000 0000 0001 Підготовка адреси нової інструкції   3) Для підрахування пар «00» попередньо в комірку з номером 20 записую число, в якому буду рахувати пари – 0011 0011 1011 1011, в комірку з номером 21 записую маску – 0000 0000 0000 0000, в 22-у лічильник пар (початкове значення – 0), в 23-у – 1 для зміни параметру циклу, і зміни лічильника, в 24-у – 16, лічильник циклу. Далі виконую таку програму: №п/п Адреса комірки Код інструкції Мнемонічний запис Коментар  1 0000 0000 0000 0000 0000 0001 0100 Load 20 Завантажує значенння 20-ої комірки  2 0000 0000 0001 1111 1000 0000 0000 ROL Циклічний зсув вліво  3 0000 0000 0010 0001 0000 0001 0100 Store 20 Записує значення у 20-ту комірку  4 0000 0000 0011 0110 0000 0001 0101 XOR 21 Проводить операцію Виключне Або над значенням акумулятора та операндом 21-ї комірки  5 0000 0000 0100 1111 1110 0000 0000 RCR Циклічний зсув вправо через С  6 0000 0000 0101 1100 0000 0000 1011 JNC 11 Умовний перехід якщо С=0  7 0000 0000 0110 1111 1110 0000 0000 RCR  Циклічний зсув вправо через С  8 0000 0000 0111 1100 0000 0000 1011 JNC 11 Умовний перехід якщо С=0  9 0000 0000 1000 0000 0000 0001 0110 Load 22 Завантажує значення 22-ої комірки  10 0000 0000 1001 0010 0000 0010 0111 Add 23 Додає до 23-ої  11 0000 0000 1010 0001 0000 0001 0110 Store 22 Записує у 22-у  12 0000 0000 1011 0000 0000 0001 1000 Load 24 Завантажує значення 24-ої к омірки  13 0000 0000 1100 0011 0000 0001 0111 Sub 23  Віднімає 1  14 0000 0000 1101 0001 0000 0001 1000 Store 24 Зберігає у 24  15 0000 0000 1110 1100 0000 0000 0000 JNZ 0 Виконує перевірку кінця циклу (керування циклом)  16 0000 0001 0001 0111 1100 0000 0000 Halt Закінчити виконання програми   В результаті одержую число 3 4) Для інвертування пар «11» в 20-у комірку заношу те саме число, в 21-у – маску, в 22-у – маску(0000 0000 0000 0000), 23-у – 1, а в 24-у – 17(10001) і виконую таку програму:лічильник циклу №п/п Адреса комірки Код інструкції Мнемонічний запис Коментар  1 0000 0000 0000 0000 0000 0001 0100 Load 20 Виконує циклічний зсув вліво над операндом 20-ї комірки  2 0000 0000 0001 1111 1000 0000 0000 ROL   3 0000 0000 0010 0001 0000 0001 0100 Store 20   4 0000 0000 0011 0100 0000 0001 0101 AND 21 Проводить операцію логічного множення над значенням акумулятора та операндом 21-ї комірки  5 0000 0000 0100 1111 1110 0000 0000 RCR Перевіряє наявність пари «11», при її відсутності виконання програми продовжується з 11-ї комірки  6 0000 0000 0101 1100 0000 0000 1011 JNC 11   7 0000 0000 0110 1111 1110 0000 0000 RCR   8 0000 0000 0111 1100 0000 0000 1011 JNC 11   9 0000 0000 1000 0000 0000 0001 0100 Load 20 Інвертує знайдену пару «11» в операнді 20-ї комірки  10 0000 0000 1001 0100 0000 0001 0110 AND 22   11 0000 0000 1010 0001 0000 0001 0100 Store 20   12 0000 0000 1011 0000 0000 0001 1000 Load 24 Виконує зміну параметру циклу  13 0000 0000 1100 0011 0000 0001 0111 Sub 23   14 0000 0000 1101 0001 0000 0001 1000 Store 24   15 0000 0000 1110 1100 0000 0000 0000 JNC 0 Виконує перевірку кінця циклу (керування циклом)  18 0000 0001 0001 0111 1000 0000 0000 Halt Закінчити виконання програми   В результаті вийшло 0000 0000 1000 1000 Висновок На даній лабораторній роботі ми 1. Вивчили призначення логічних операцій. 2. Навчились створювати і використовувати "фільтри" за допомогою логічних операцій. 3. Вивчили правила кодування додатних і від’ємних двійкових чисел для здійснення арифметичних операцій у комп’ютерах; 4. Навчилися кодувати двійкові числа із знаком у інструкціях навчального комп’ютера – симулятора DeComp.
Антиботан аватар за замовчуванням

11.04.2013 22:04-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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