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

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

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

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

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

Частина тексту файла

Міністерство освіти і науки Національний університет „Львівська політехніка” Кафедра СКС
/
Звіт з лабораторної роботи 5 з дисципліни: «Організація та функціонування комп’ютерів» на тему: «Дослідження виконання арифметичних операцій з числами у форматі з фіксованою комою у симуляторі DeComp»
Львів 2019
Мета: Вивчити форми подання і застосування додатних та від’ємних чисел у арифметиці з фіксованою комою; Навчитись розробляти алгоритми і здійснити їх реалізацію у інструкціях процесора навчального комп'ютера DeComp виконання арифметичних операцій додавання та віднімання над двійковими числами з фіксованою комою у модифікованих кодах; Навчитись розробляти алгоритми і здійснити їх реалізацію у інструкціях процесора навчального комп'ютера DeComp виконання арифметичної операції множення двійкових чисел без знаку. Теоретичні відомості
1.1. Додавання і віднімання двійкових чисел з фіксованою комою
Простота виконання арифметичних дій є важливою особливістю двійкової системи числення. Але у дійсності, при виконанні арифметичних операцій у конкретному комп’ютері потрібно додатково враховувати не тільки знаки чисел, що обробляються, але і діапазон та форму подання чисел. Відомо, що одним з можливих шляхів виконання операції віднімання є заміна знаку числа, яке віднімається, на протилежний і додавання його до зменшуваного.
А - В = А + ( - В)
Таким чином операцію арифметичного віднімання замінюють операцією алгебраїчного додавання, яку можна виконати за допомогою двійкових суматорів. Нагадаємо, що від’ємні числа у комп’ютері подаються у прямому, доповняльному і оберненому кодах. Числа, що зберігаються у прямому коді, перед виконанням обчислень перетворюються у потрібний – доповняльний або обернений - код і після виконання обчислень знову перетворюються у прямий код.
При реалізації заміни віднімання додаванням, другий доданок у наведенному виразі переводиться у доповняльний код шляхом інвертування та додавання одиниці у молодший розряд. (Треба пам’ятати, що доповняльний код додатного числа співпадає з прямим кодом).
A –B = A ++1
При додаванні двох двійкових чисел, за абсолютною величиною менших одиниці, код суми може за абсолютною величиною перевищити одиницю або стати рівним їй. У такому випадку відбудеться переповнення розрядної сітки, що призведе до неправильного результату. У таких випадках результату не існує. Переповнення може відбутися у тих випадках, коли доданки мають однакові знаки. Ознакою переповнення розрядної сітки слугує протилежність знаку суми, що отримана, знакам доданків. Звідси витікає, що для отримання коректного результату при додаванні двійкових чисел з фіксованою комою обов’язковою є умова, щоб кожний з доданків і їх сума за абсолютною величиною були менше одиниці.
1.2. Додавання двійкових чисел у модифікованому доповняльному коді
Доповняльні коди чисел додаються порозрядно. Причому знакові розряди додаються як звичайні розряди цілих чисел. Одиниця переносу, яка виникає при додаванні знакових розрядів, не враховується, тобто відкидається. Суму отримуємо у доповняльному коді. Для отримання остаточного результату цю суму необхідно обов’язково перевести у прямий код, тобто зробити друге доповнення. Приклад 1. Додати у модифікованому доповняльному коді двійкові числа А і В при наступних умовах: А > 0; B > 0; A + B > 0.
A = + 0,1101;
B = + 0,0001
+ 00,1110;
00,1110;
2.
А < 0; B < 0; A + B
0; B
0.
A = + 0,1101; B = - 0,0001;
+ 100,1011
Циклічний перенос +1
;
00,1100;
2)
А < 0; B < 0; A + B
0;А + В < 0; +
+
Відкидається
(
Як видно з прикладів, у знакових розрядах отриманої суми додатних доданків маємо комбінацію „01”, а
від’ємних – „10”,
що свідчить про переповнення розрядної сітки.
1.5. Множення двійкових чисел без знаку
Множення двійкових чисел виконують за правилами, аналогічними для десяткових чисел, тобто визначають проміжні добутки, а потім їх додають. Але, важливо зазначити, що у цьому процесі значно полегшується процес визначення проміжних добутків. Насправді виконуються тільки два правила множення двійкового числа на двійкову цифру: 1). Якщо ця двійкова цифра (розряд множника) дорівнює 1, то двійкове множене просто копіюється без змін у якості проміжного добутку;
2). Якщо цей розряд множника дорівнює 0, то проміжний добуток дорівнює 0. Ці правила ілюструє приклад 4. Дії виконуються наступним шляхом: у першому розряді множника стоїть 1, тому у якості першого проміжного добутку копіюється значення множеного. У наступному зліва розряді множника стоїть 0, і, відповідно, другий проміжний добуток дорівнює 0000. Далі, дії повторюються.
При визначенні кожного наступного проміжного добутку він зсувається вліво на один розряд відносно попереднього. Всі отримані проміжні добутки, враховуючи зсуви, додаються між собою. Таблиця ХХ – таблиця множення одного розряду двійкових чисел.
Табл. ХХ
Приклад 4.
0 * 0
0
1 * 0
0
0 * 1
0
1 * 1
1
1 0 0 1 - множене
* 1 1 0 1 - множник
1 0 0 1
+ 0 0 0 0
проміжні
1 0 0 1
добутки
1 0 0 1
.
1 1 1 0 1 0 1 = добуток
Отже, операція множення двійкових чисел зводиться до операцій зсуву та додавання. Крім того зауважимо, що множення двох n – розрядних чисел дає результат, який містить 2n бітів. Відомі два наступні основні способи виконання операції множення: а) Множення, починаючи з молодших розрядів множника, із зсувом вліво, процес починається з молодшого розряду множника; б) Множення, починаючи із старших розрядів множника, із зсувом вправо, процес починаючи із старших розрядів множника:
1101 - множене
1101 - множене * 1101 - множник
* 1101 - множник
1101
1101
+
0000
+
1101
1101
0000 1101
1101
10101001 - добуток
10101001 - добуток
а)
б)
Схема множення із зсувом СДП
вправо подана на наступному малюнку. На цьому малюнку позначено:
A(a3, a2, a1, a0) i B(b3, b2, b1, b0) – двійкові 4-рирозряднічисла – сомножники; Р – добуток; ДПі – проміжні добутки.
Зауважимо, що операція множення числа на 10 n -
основу системи числення в степені n, рівноцінна
зсуву даного числа вправо на nрозрядів, якщостепінь додатна, і вліво, якщо степінь від’ємна.
Хоча процес аналізу розрядів множника і додавання множенного із самим собою стільки разів, скільки одиниць у множнику, простий, він вимагає достатньо великих витрат часу. Сумування проміжних добутків (ДП) виконується звичайно не на кінцевому етапі, а по мірі їх отримання. Це дозволяє не зберігати всі ДП, тобто скорочує апаратні витрати. У залежності від способу отримання суми ДП (СДП) можливі чотири варіанти реалізації “традиційної” схеми множення: 1. Множення, починаючи з молодших розрядів множника, із зсувом СДП вправо і при множеному, що є нерухоме; 2. Множення, починаючи із старших розрядів множника, при зсуві СДП вліво і при множеному, що є нерухоме; 3. Множення, починаючи з молодших розрядів множника, із зсувом множеного вліво і СДП, що є нерухоме; 4. Множення, починаючи із старших розрядів множника, при зсуві множеного вправо і при СДП, що є нерухоме. Варіанти із зсувом множеного (вар. 3, 4) на практиці використовуються менше, тому що для їх реалізації регістри множеного, СДП і суматор повинні мати розрядність 2n .
Хід виконання роботи Розробити алгоритм і написати програму додавання довільних 16-розрядних двійкових чисел із знаком, поданих у форматі з фіксованою комою у модифікованому доповняльному коді у інструкціях навчального комп’ютера DeComp. Блок-схема алгоритму:
Інформація про вхідні дані і їх попереднє розташування у комірках пам’яті: Вхідними даними будуть числа A та B, які розташовуватимуться у 27-ій та 28-ій комірках пам’яті відповідно. Змінна А дорівнює десятковому числу 1010, яке у модифікованому доповняльному коді дорівнює 0000 0000 0000 10102. Змінна B дорівнює десятковому числу
-910, яке у модифікованому доповняльному коді дорівнює 1100 0000 0000 10012.
Призначення комірок що використовуються: Для роботи програми використовується 29-а, 30-а, 31-а, 32-а комірка пам’яті. У 29-ій комірці записано двійковий код десяткового числа 110, що необхідна для зменшення лічильника циклу, та інкременту лічильника кількості одиниць у вхідному двійковому числі. У 30-ій комірці записано двійковий код 1100 0000 0000 00002. Це маска, що призначена для визначення знаку числа.
У 31-ій комірці записано двійковий код десяткового числа 010, для збереження результату додавання. У 32-ій комірці записано двійковий код 1111 1111 1111 11112. Це ознака неправильного результату.
Текст програми:
Адреса
комірки
пам’яті Двійковий код інструкції Мнемонічний формат інструкції Коментар
інструкцій, що відповідають блокам алгоритму програми 0 0000 0000 0001 1011 LOAD
27; Додаємо вміст 3110 комірки в якій записано 010 ,для того щоб перевірити чи від’ємне це число. 1 0010 0000 0001 1111 ADD 31; 2 1010 0000 0000 0111 JP 7; Перевірка знаку першого доданка “А”, якщо S = 0, то операція доповнення пропускається. 3 0110 0000 0001 1110 XOR 30; Переведення першого доданка “А” з прямого
модифікованого коду в доповняльний модифікований. 4 0111 0000 0000 0000 NOT; 5 0010 0000 0001 1101 ADD 29; 6 0001 0000 0001 1011 STORE 27; 7 0000 0000 0001 1100 LOAD 28; Додаємо вміст 3110 комірки в якій записано 010 ,для того щоб
перевірити чи від’ємне це число. 8 0010 0000 0001 1111 ADD 31; 9 1010 0000 0000 1110 JP 14; Перевірка знаку другого доданка “В”, якщо S = 0,то операція доповнення пропускається. 10 0110 0000 0001 1110 XOR 30; Переведення другого доданка “В” з прямого модифікованого коду в доповняльний модифікований. 11 0111 0000 0000 0000 NOT; 12 0010 0000 0001 1101 ADD 29; 13 0001 0000 0001 1100 STORE 28; 14 0000 0000 0001 1011 LOAD 27; Додати до
вмісту 2710 комірки нього вміст 2810. 15 0010 0000 0001 1100 ADD 28; 16 0001 0000 0001 1100 STORE 28; 17 1100 0000 0001 0100 JNC 21; Перевірка результату на переповнення розрядної сітки. 18 0000 0000 0010 0000 LOAD 32; Перехід на кінець виконання програми. Результат не коректний. 19 0000 0000 0001 1111 STORE 31; 20 0000 0000 0001 1010 JMP 26; 21 0101 0000 0001 1010 JP 26; Перевірка чи результат додавання невід’ємне число тобто
S = 0. Якщо так, то перетворення суми у прямий код пропускається. 22 0111 0000 0000 0000 NOT; Перетворення результату суми у прямий код.
23 0010 0000 0001 1101 ADD 29; 24 0110 0000 0001 1110 XOR 30; 25 0001 1100 0001 1111 STORE 31; 26 0111 1100 0000 0000 HALT; Зупинка процесора. Виконати дослідження програми, розробленої у пункті 2, у покроковому режимі.
Результат дослідження РА РД А РІ ЛАІ РО 1 0000 0001 0111 0000 0000 0000 1010 0000 0000 0000 1010 0000 0000 0001 0111 0000 0000 0001 000 2 0000 0001 1011 0000 0000 0000 0000 0000 0000 0000 1010 0010 0000 0001 1011 0000 0000 0010 000 3 0000 0000 0010 1010 0000 0000 0111 0000 0000 0000 1010 1010 0000 0000 0111 0000 0000 0111 000 4 0000 0001 1000 1100 0000 0000 1001 1100 0000 0000 1001 0000 0000 0001 1000 0000 0000 0001 000 5 0000 0001 1011 0000 0000 0000 0000 11000 0000 0000 1001 00010 0000 0001 1011 0000 0000 1001 010 6 0000 0000 1001 1010 0000 0000 1110 1100 0000 0000 1001 1010 0000 0000 1110 0000 0000 1010 010 7 0000 0001 1010 1100 0000 0000 0000 0000 0000 0000 1001 0110 0000 0001 1010 0000 0000 1011 000 8 0000 0000 1011 0111 0000 0000 0000 1111 1111 1111 0110 0111 0000 0000 000 0000 0000 1100 010 9 0000 0001 1001 0000 0000 0000 0001 1111 1111 1111 0111 0010 0000 0001 1001 0000 0000 1101 010 10 0000 0001 1000 1111 1111 1111 0111 1111 1111 1111 0111 0001 0000 0001 1000 0000 0000 1110 010 11 0000 0001 0111 0000 0000 0000 1010 0000 0000 0000 1010 0000 0000 0001 0111 0000 0000 1111 010 12 0000 0001 1000 1111 1111 1111 0111 0000 0000 0000 0001 0010 0000 0001 1000 0000 0001 0000 001 13 0000 0001 1100 0000 0000 0000 0001 0000 0000 0000 0001 0001 0000 0001 1100 0000 0001 0001 001 14 0000 0001 0110 0111 1100 0000 0000 0111 1100 0000 0001 0101 0000 0001 0110 0000 0001 0010 001 15 0000 0001 0010 0111 0000 0000 0000 1000 0011 1111 1110 0111 0000 0000 0000 0000 0001 0011 010 Після виконання програми значення 28-ої комірки змінилось на 1111 1111 1111 01112, тобто число В у доповняльному модифікованому коді, в комірці 31 встановилось значення 0000 0000 0000 00012, тобто двійковий результат додавання десяткових чисел 1010 і -910.
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

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

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

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

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Новини