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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» Кафедра СКС Звіт з лабораторної роботи № 5 з дисципліни: «Організація та функціонування комп’ютерів» на тему: «Дослідження виконання арифметичних операцій з числами у форматі з фіксованою комою у симуляторі DeComp.» Варіант - 23 Мета роботи: Вивчити форми подання і застосування додатних та від’ємних чисел у арифметиці з фіксованою комою; Навчитись розробляти алгоритми і здійснити їх реалізацію у інструкціях процесора навчального комп'ютера DeComp виконання арифметичних операцій додавання та віднімання над двійковими числами з фіксованою комою у модифікованих кодах; Навчитись розробляти алгоритми і здійснити їх реалізацію у інструкціях процесора навчального комп'ютера DeComp виконання арифметичної операції множення двійкових чисел без знаку. Хід виконання роботи: Теоретичні відомості. 1.1. Додавання двійкових чисел у модифікованому доповняльному коді Доповняльні коди чисел додаються порозрядно. Причому знакові розряди додаються як звичайні розряди цілих чисел. Одиниця переносу, яка виникає при додаванні знакових розрядів, не враховується, тобто відкидається. Суму отримуємо у доповняльному коді. Для отримання остаточного результату цю суму необхідно обов’язково перевести у прямий код, тобто зробити друге доповнення. Приклад 1. Додати у модифікованому доповняльному коді двійкові числа А і В при наступних умовах: А > 0; B > 0; A + B > 0. A = + 0,1101; B = + 0,0001 +  00,1110; 00,1110; 2. А < 0; B < 0; A + B < 0. A = - 0,1101; B = - 0,0001; +   111,0010; 11,1110; Одиниця переносу із старшого знакового ( розряду не враховується При переведенні у прямий код отриманих від’ємних результатів переводиться саме число і не переводиться знак або число із спотвореним знаком береться за абсолютною величиною. 1.2. Переповнення розрядної сітки при додаванні у модифікованих машинних кодах Переповнення розрядної сітки при додаванні модифікованих кодів, так само як і при додаванні у звичайних кодах із фіксованою комою, може бути лише у випадках, коли доданки мають однакові знаки. Таке переповнення виявляється способом порівняння знакових розрядів отриманої суми, наприклад, застосовуючи операцію додавання за модулем 2 (XOR). Ознакою переповнення є неспівпадання цифр, які створюються у двох знакових розрядах суми, тобто код знаку числа має вигляд 01 або 10. Відповідно, результат неможливо віднести до додатних, ні до від’ємних модифікованих кодів. Пояснимо це на наступних прикладах. Приклад 3: 1. А = + 0,1101; 2. А = - 0,1101; В = + 0,0111; В = - 0,0111; А + В > 0; А + В < 0; + +   Відкидається ( Як видно з прикладів, у знакових розрядах отриманої суми додатних доданків маємо комбінацію „01”, а від’ємних – „10”, що свідчить про переповнення розрядної сітки. 1.3. Множення двійкових чисел без знаку Множення двійкових чисел виконують за правилами, аналогічними для десяткових чисел, тобто визначають проміжні добутки, а потім їх додають. Але, важливо зазначити, що у цьому процесі значно полегшується процес визначення проміжних добутків. Насправді виконуються тільки два правила множення двійкового числа на двійкову цифру: 1). Якщо ця двійкова цифра (розряд множника) дорівнює 1, то двійкове множене просто копіюється без змін у якості проміжного добутку; 2). Якщо цей розряд множника дорівнює 0, то проміжний добуток дорівнює 0. При визначенні кожного наступного проміжного добутку він зсувається вліво на один розряд відносно попереднього. Всі отримані проміжні добутки, враховуючи зсуви, додаються між собою. Табл. Приклад 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 . Виконання алгоритму множення без знаку із зсувом вправо для двох чисел: А = 1010 і В = 1110 показане на наступному прикладі:   Коментар   A B  1010 * 1011 Множене Множник   СДП  0000 початкове значення сумарного проміжного добутку   ДП0 = Ab0 P 0 = СДП + ДП0 P 0 2-1  + 1010 01010 01010 Множення множенного на 20 розряд множника (= 1); Перший проміжний добуток Зсув вправо першого добутку /   ДП1 = Ab1 P 1 = P 0 2-1+ ДП1 P 1 2-1 + 1010 011110 011110 Множення множенного на 21 розряд множника (= 1); Другий проміжний добуток Зсув вправо другого добутку /   ДП2 = Ab2 P 2 = P 1 2-1 + ДП2 P 2 2-1 + 0000 0011110 0011110 Множення множенного на 22 розряд множника (= 0); Третій проміжний добуток Зсув вправо третього добутку /   ДП3 = Ab3 P 3 = P 2 2-1 + ДП3 P 3 2-1 + 1010 01101110 01101110 Множення множенного на 23 розряд множника (= 1); Четвертий проміжний добуток Зсув вправо четвертого добутку, / отриманий кінцевий результат.   Даний алгоритм множення без знаку із зсувом вправо можна описати таким чином: 1. Первинне значення СДП приймається таким, що дорівнює 0; 2. Аналізується наступна цифра множника (аналіз починається з молодшого розряду). Якщо він дорівнює 1, то до СДП додається множене, інакше додавання не виконується; 3. Виконується зсув СДП вправо на один розряд; 4. Пункти 2 і 3 повторюються для усіх цифрових розрядів множника. Розробити алгоритм і написати програму додавання довільних 16-розрядних двійкових чисел із знаком, поданих у форматі з фіксованою комою у модифікованому доповняльному коді у інструкціях навчального комп’ютера DeComp. Блок-схема: Вхідні дані: № № комірки пам’яті Дані в двійковому коді Позначення змінної в алгоритмі Інформація про вхідні дані та призначення комірок, що використовуються.  40 0000 0000 0010 1000 0000 0000 0000 0100 A А=4  41 0000 0000 0010 1001 0000 0000 0000 0101 B В=5  42 0000 0000 0010 1010 1100 0000 0000 0000 М Число М – маска. Слугує для визначення знаку.  43 0000 0000 0010 1011 0000 0000 0000 0001 К Число К=1 допомагає переводити у доповняльний код.  44 0000 0000 0010 1100 0000 0000 0000 0000 S S- сума чисел А і В. Початкове значення 0.  45 0000 0000 0010 1101 0000 0000 0000 0000 0 Маска для визначення знаку через оновлення ознаки   Програма: № № комірки пам’яті Двійковий код інструкції Мнемонічний запис інструкції Коментар  0 0000 0000 0000 0000 0000 0010 1000 LOAD 40 завантажити до акумулятора A  1 0000 0000 0001 0011 0000 0010 1101 SUB 45 Перевести в доповняльний код і зберегти  2 0000 0000 0010 1010 0000 0000 0111 JP 7   3 0000 0000 0011 0111 0000 0000 0000 NOT   4 0000 0000 0100 0101 0000 0010 1010 OR 42   5 0000 0000 0101 0010 0000 0010 1011 ADD 43   6 0000 0000 0110 0001 0000 0010 1000 STORE 40   7 0000 0000 0111 0000 0000 0010 1001 LOAD 41 Перевести в доповняльний код і зберегти  8 0000 0000 1000 0011 0000 0010 1101 SUB 45   9 0000 0000 1001 1010 0000 0000 1110 JP 14   10 0000 0000 1010 0111 0000 0000 0000 NOT   11 0000 0000 1011 0101 0000 0010 1010 OR 42   12 0000 0000 1100 0010 0000 0010 1011 ADD 43   13 0000 0000 1101 0001 0000 0010 1001 STORE 41   14 0000 0000 1110 0010 0000 0010 1000 ADD 40 Скласти два числа Зберігти  15 0000 0000 1111 0001 0000 0010 1100 STORE 44   16 0000 0001 0000 0100 0000 0010 1010 AND 42 ! Після цієї команди ознака S = 1  17 0000 0001 0001 0110 0000 0010 1010 XOR 42 ПЕРЕВІРКА НА 10, 01  18 0000 0001 0010 1000 0000 0001 1010 JNZ 26 Якщо (Z = 0), це означає що число не число. Програма виконана  19 0000 0001 0011 0000 0000 0010 1100 LOAD 44 Перевести в доповняльний код і зберегти  20 0000 0001 0100 0011 0000 0010 1101 SUB 45   21 0000 0001 0101 1010 0000 0001 1010 JP 26   22 0000 0001 0110 0111 0000 0000 0000 NOT   23 0000 0001 0111 0101 0000 0010 1010 OR 42   24 0000 0001 1000 0010 0000 0010 1011 ADD 43   25 0000 0001 1001 0001 0000 0010 1100 STORE 44   26 0000 0001 1010 0000 0000 0010 1100 LOAD 44   27 0000 0001 1011 0111 1100 0000 0000 HALT Кінець програми   Результат виконання: / Виконати дослідження програми, розробленої у пункті 2, у покроковому режимі. Блок-схема: Виконання: № РА РД А РІ ЛАІ РО  0 0000 0010 1000 0000 0000 0000 0100 0000 0000 0000 0100 0000 0000 0010 1000 0000 0000 0001 000  1 0000 0010 1101 0000 0000 0000 0000 0000 0000 0000 0100 0011 0000 0010 1101 0000 0000 0010 000  2 0000 0000 0010 1010 0000 0000 0111 0000 0000 0000 0100 1010 0000 0000 0111 0000 0000 0111 000  3 0000 0010 1001 0000 0000 0000 0101 0000 0000 0000 0101 0000 0000 0010 1001 0000 0000 1000 000  4 0000 0010 1101 0000 0000 0000 0000 0000 0000 000 0101 0011 0000 0010 1101 0000 0001 1001 000  5 0000 0000 1001 1010 0000 0000 1110 0000 0000 0000 0101 1010 0000 0000 1110 0000 0000 1110 000  6 0000 0010 1000 0000 0000 0000 0100 0000 0000 0000 1001 0010 0000 0010 1000 0000 0000 1111 000  7 0000 0010 1100 0000 0000 0000 1001 0000 0000 0000 1001 0001 0000 0010 1100 0000 0001 0000 000  8 0000 0010 1010 1100 0000 0000 0000 0000 0000 0000 0000 0100 0000 0010 1010 0000 0001 0001 100  9 0000 0010 1010 1100 0000 0000 0000 1100 0000 0000 0000 0110 0000 0010 1010 0000 0001 0010 010  10 0000 0001 0010 1000 0000 0001 1010 1100 0000 0000 0000 1000 0000 0001 1010 0000 0001 1010 010  11 0000 0010 1100 0000 0000 0000 1001 0000 0000 0000 1001 0000 0000 0010 1100 0000 0001 1011 010  12 0000 0001 1011 0111 1100 0000 0000 0000 0000 0000 1001 0111 1100 0000 0000 0000 0001 1011 010   Розробити алгоритм і написати програму множення довільних двійкових чисел без знаку. Метод множення 3: Множення, починаючи з молодших розрядів множника, із зсувом множеного вліво і СДП, що є нерухоме; Мій варіант 23 Вхідні дані: № № комірки пам’яті Дані в двійковому коді Позначення змінної в алгоритмі Інформація про вхідні дані та призначення комірок, що використовуються.  20 0000 0000 0001 0100 0000 0000 0001 1111 A А = 31, множеного  21 0000 0000 0001 0101 000 0000 0011 0110 B B = 54, множник  22 0000 0000 0001 0110 0000 0000 0000 0001 М М – маска. Слугує для визначення знаку  23 0000 0000 0001 0111 0000 0000 0000 0000 DP Збереження проміжного значення початкове значення 0  24 0000 0000 0001 1000 0000 0000 0000 0000 S Добуток. Початкове значення 0   Програма: № № комірки пам’яті Двійковий код інструкції Мнемонічний запис інструкції Коментар  0 0000 0000 0000 0000 0000 0001 0101 LOAD 21 LOAD B  1 0000 0000 0001 0100 0000 0001 0110 AND 22 Отримати знак = 0 = 1  2 0000 0000 0010 1001 0000 0000 1000 JZ 8 = 0  3 0000 0000 0011 0000 0000 0001 0100 LOAD 20 LOAD A STORE DP  4 0000 0000 0100 0001 0000 0001 0111 STORE 23   5 0000 0000 0101 0000 0000 0001 1000 LOAD 24 LOAD S ADD DP STORE 24  6 0000 0000 0110 0010 0000 0001 0111 ADD 23   7 0000 0000 0111 0001 0000 0001 1000 STORE 24   8 0000 0000 1000 0000 0000 0001 0110 LOAD 22 Зсув маски вліво  9 0000 0000 1001 1111 0000 0000 0000 LSL   10 0000 0000 1010 0001 0000 0001 0110 STORE 22   11 0000 0000 1011 0000 0000 0001 0100 LOAD 20 Зсув A вліво  12 0000 0000 1100 1111 1100 0000 0000 RCL   13 0000 0000 1101 0001 0000 0001 0100 STORE 20   14 0000 0000 1110 1100 0000 0000 0000 JNC 0 Як тільки дійшов до кінця вихід  15 0000 0000 1111 0000 0000 0001 1000 LOAD 24 Завантажити результат множення  16 0000 0001 0000 0111 1100 0000 0000 HALT Кінець програми   Результат виконання: / Висновок: На цій лаболаторні роботі я вивчив форми подання і застосування додатних та від’ємних чисел у арифметиці з фіксованою комою; навчився розробляти алгоритми і здійснювати їх реалізацію у інструкціях процесора навчального комп'ютера DeComp виконання арифметичних операцій додавання та віднімання над двійковими числами з фіксованою комою у модифікованих кодах; навчився розробляти алгоритми і здійснювати їх реалізацію у інструкціях процесора навчального комп'ютера DeComp виконання арифметичної операції множення двійкових чисел без знаку.
Антиботан аватар за замовчуванням

28.04.2024 13:04-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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