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

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

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

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

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

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

Міністерство освіти і науки, молоді та спорту України Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт з лабораторної роботи № 5 з дисципліни: “Організація та функціонування комп’ютерів” на тему: Дослідження виконання арифметичних операцій з числами у форматі з фіксованою комою у навчальному комп’ютері - симуляторі DeComp ” Тема: Дослідження виконання арифметичних операцій з числами у форматі з фіксованою комою у симуляторі DeComp. Мета: Вивчити подання і застосування додатних та від’ємних чисел у арифметиці з фіксованою комою; Навчитись розробляти алгоритми виконання операції віднімання з використанням обернених, доповнювальних і модифікованих кодів; Навчитись розробляти алгоритми виконання операції множення додатних і від’ємних двійкових чисел. Теоретичні відомості Відомо, що одним з можливих шляхів виконання операції віднімання є заміна знаку числа, яке віднімається, на протилежний і додавання його до зменшуваного. А - В = А + ( - В) Таким чином операцію арифметичного віднімання замінюють операцією алгебраїчного додавання, яку можна виконати за допомогою двійкових суматорів. Нагадаємо, що від’ємні числа у комп’ютері подаються у прямому, доповняльному і оберненому кодах. Числа зберігаються у прямому коді, перед виконанням обчислень перетворюються у потрібний – доповняльний або обернений - код і після виконання обчислень знову перетворюються у прямий код. При додаванні двох двійкових чисел, за абсолютною величиною менших одиниці, код суми може за абсолютною величиною перевищити одиницю або стати рівним їй. У такому випадку відбудеться переповнення розрядної сітки, що призведе до неправильного результату. Переповнення розрядної сітки при додавання модифікованих кодів може бути лише у випадках, коли доданки мають однакові знаки. Таке переповнення виявляється способом порівняння знакових розрядів отриманої суми. Признаком переповнення є неспівпадіння цифр, які створюються у двох знакових розрядах суми, тобто результат неможливо віднести до жодного з модифікованих кодів. Операція множення двох чисел зводиться до послідовного виконання сукупності операцій множення множеного на розряди множника і зсуву проміжних добутків та множника. Нагадаємо, що у цьому процесі у дійсності застосовуються тільки два правила множення одного двійкового числа на двійкову цифру: якщо ця цифра множника дорівнює 1, то двійкове число (множник) просто копіюється; якщо цей розряд множника дорівнює 0, то проміжний добуток дорівнює 0. При створенні кожного нового проміжного добутку він зсувається вліво на один розряд по відношенню до попереднього проміжного добутку. Наступний проміжний добуток зсувається вліво на один розряд від попереднього і у тому випадку, коли він дорівнює 0. Цей процесс продовжується до тих пір, поки не будуть використані всі розряди множника. Отримані проміжні добутки додаються і їх сума дає остаточний результат. Алгоритми виконання операції множення для різних форм подання чисел відрізняються незначно. Головні відмінності полягають у визначенні величини порядку добутку при множенні чисел з рухомою комою і місця коми при множенні чисел з фіксованою комою. Крім необхідності враховувати знаки співмножників для визначення знаку добутку, потрібно враховувати вплив їх знаків на достовірність результату. Від’ємними можуть бути як множене, так і множник. Якщо від’ємний знак подається одиницею перед старшим розрядом модуля двійкового числа, це сприймається комп’ютером як старший розряд числа. Тоді результат операції множення, коли множене або множник від’ємний, буде хибний і величина похибки залежить від того, яке з двох чисел (або обидва) є від'ємним. Таким чином, крім операції додавання для отримання добутку необхідна операція зсуву. При цьому з'являється можливість зсувати множене або суму проміжних добутків, що дає підставу для різних методів реалізації операції множення. Виконання роботи Розробити алгоритм і написати програму додавання довільних 16-розрядних двійкових чисел із знаком, поданих у форматі з фіксованою комою у модифікованому доповняльному коді у інструкці ях навчального комп’ютера DeComp Інформація про вхідні дані: А 3010  B 4010  N 6010  Блок-схема програми:  Код програми у мнемонічних кодах: №п/п Код інструкції Мнемонічний запис Коментар  0 0000 0000 0001 1110 Load 30 Перевірка чи число від’ємне  1 1111 1100 0000 0000 RCL   2 1100 0000 0001 0000 JNC 8 Якщо число не від’ємне то перейти на 8-у комірку  3 0000 0000 0001 1110 Load 30 Подання числа у доповняльному коді  4 0111 0000 0000 0000 NOT   5 0010 0000 0011 1100 ADD N   6 0001 0000 0011 0111 Store 55   7 1110 0000 0000 1010 JMP 10   8 0000 0000 0001 1110 LOAD A  Залишаю додатне число без змін  9 0001 0000 0011 0111 Store 55        10 0000 0000 0010 1000 Load B   11 1111 1100 0000 0000 RCL B Перевірка чи число від*ємне  12 1100 0000 0001 0010 JNC 18 Якщо число додатне то перейти на 16 комірку  13 0000 0000 0010 1000 LOAD B Подання числа у доповняльному коді  14 0111 0000 0000 0000 NOT   15 0010 0000 0011 1100 Add N   16 0001 0000 0010 1101 Store 45   17 1110 0000 0001 0100 JMP 20   18 0000 0000 0010 1000 Load В Залишаю додатне число без змін  19 0001 0000 0010 1101 Store 45   20 0000 0000 0011 0111 Load 55 Обчислюю результат  21 0010 0000 0010 1101 Add 45   22 0001 0000 0010 0011 Store 35   23 0000 0000 0010 0011 Load 35 Переводжу результат у прямий код  24 0111 0000 0000 0000 Not   25 0010 000 0011 1100 ADD N   26 0001 0000 0010 0011 Store 35   27 0111 1100 0000 0000 Halt    К РА РД А РІ ЛАІ РО (ZSC)  1 0000 0001 1110 0000 0000 0000 1100 0000 0000 0000 1101 0000 0000 0001 1110 0000 0000 0001 000  2 0000 0000 0001 1111 1100 0000 0000 0000 0000 0001 1000 1111 1100 0000 0000 0000 0000 0010 000  3 0000 0000 0010 1100 0000 0000 0100 0000 0000 0001 1000 1100 0000 0000 1000 0000 0000 1000 000  4 0000 0001 1110 0000 0000 0001 1110 0000 0000 0000 1100 0000 0000 0001 1110 0000 0000 1001 000  5 0000 0011 0111 0001 0000 0011 0111 0000 0000 0000 1100 0001 0000 0011 0111 0000 0000 1010 000  6 0000 0010 1000 1100 0000 0000 1111 1100 0000 0000 1111 0000 0000 0010 1000 0000 0000 1011 000  7 0000 0000 1011 1111 1100 0000 0000 1000 0000 0001 1110 1111 1100 0000 0000 0000 0000 1100 011  8 0000 0000 1100 1100 0000 0001 0010 1000 0000 0001 1110 1100 0000 0001 0010 0000 0000 1101 011  9 0000 0010 1000 0000 0000 0000 1111 1100 0000 0000 1111 0000 0000 0010 1000 0000 0000 1110 011  10 0000 0000 1110 0111 0000 0000 0000 0011 1111 1111 0000 0111 0000 0000 0000 0000 0000 1111 000  11 0000 0011 1100 0010 0000 0011 1100 1111 1111 1111 0001 0010 0000 0011 1100 0000 0001 0000 010  12 0000 0010 1101 1111 1111 1111 0001 1110 0000 0001 0100 0001 0000 0001 0001 0000 0001 0001 010  13 0000 0001 0001 0000 0000 0001 0000 0000 0000 0000 0010 1110 0000 0001 0100 0000 0001 0100 010  14 0000 0011 0111 0000 0000 0000 1100 0000 0000 0000 1100 0000 0000 0011 0111 0000 0001 0101 010  15 0000 0010 1101 1111 1111 1111 0001 1111 1111 1111 1101 0010 0000 0010 1101 0000 0001 0110 010  16 0000 0010 0011 1111 1111 1111 1101 1111 1111 1111 1101 0001 0000 0010 0011 0000 0001 1000 010  17 0000 0001 0011 1111 1111 1111 1101 1111 1111 1111 1101 0000 0000 0010 0011 0000 0001 1001 000  18 0000 0001 1000 0111 0000 0000 0000 0000 0000 0000 0010 0111 0000 0000 0000 0000 0001 1001 000  19 0000 0011 1100 1100 0000 0000 0011 1100 0000 0000 0011 0010 0000 0011 1100 0000 0001 1010 010  20 0000 0010 0011 1100 0000 0000 0011 1100 0000 0000 0011 0001 0000 0010 0011 0000 0001 1011 010  21 0000 0001 1011 0111 1100 0000 0000 1100 0000 0000 0011 0111 1100 0000 0000 0000 0001 1011 010   Отже в акумуляторі ми отримали число (–3)10 що свідчить що програма написана правильно. 3. Розробити алгоритм і написати програму множення довільних двійкових чисел без знаку. Блок-схема програми:  Число А зберігаю у 3010 комірці памяті число В у 3110 та у 6410 зберігаю число 1, у 32 комірці початкове значення =0 Код програми Адреса комірки Код інструкції Мнемонічний запис Коментар  0 0000 0000 0001 1110 Load 30 Загрузити число А  1 0010 0000 0010 0000 ADD 32 Додати початкове значення  2 0001 0000 0010 0000 Store 32 Зберегти в 32 комірці  3 0000 0000 0001 1111 Load B Загрузити число В  4 0011 0000 0100 0000 Sub 64 Відняти 1  5 0001 0000 0001 1111 Store B Зберегти різницю у 31 комірці  6 1000 0000 0000 0000 JNZ B Перевірка на 0  7 0000 0000 0010 0000 Load A Загрузити А  8 0001 0000 0011 1100 Store A Зберегти А  9 0111 1100 0000 0000 Halt Зупинити програму   № кроку РА РД А РІ ЛАІ РО ZSC  1 0000 0001 1110 0000 0000 0000 0101 0000 0000 0000 0101 0000 0000 0001 1000 0000 0000 0001 000  2 0000 0010 0000 0000 0000 0110 0100 0000 0000 0110 1001 0010 0000 0010 0000 0000 0000 0010 000  3 0000 0010 0000 0000 0000 0110 1001 0000 0000 0110 1001 0001 0000 0010 0000 0000 0000 0011 000  4 0000 0001 1111 0000 0000 0000 1010 0000 0000 0000 1010 0000 0000 0001 1111 0000 0000 0100 000  5 0000 0100 0000 0000 0000 0000 0001 0000 0000 0000 1001 0011 0000 0100 0000 0000 0000 0101 000  6 0000 0001 1111 0000 0000 0000 1001 0000 0000 0000 1001 0001 0000 0001 1111 0000 0000 0110 000  7 0000 0000 0110 1000 0000 0000 0000 0000 0000 0000 1001 1000 0000 0000 0000 0000 0000 0000 000   Повторення циклу n разів приведе до отриманння результату а саме 11 00112 тобто 5010. Висновок: Під час виконання цієї лабораторної роботи я вивчив подання і застосування додатних та від’ємних чисел у арифметиці з фіксованою комою. Навчився розробляти алгоритми виконання операції віднімання з використанням обернених, доповнювальних і модифікованих кодів, розробляти алгоритми виконання операції множення додатних і від’ємних двійкових чисел.
Антиботан аватар за замовчуванням

04.06.2014 18:06-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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