Міністерство науки і освіти України
Технічний коледж національного університету
«Львівська політехніка»
ЗВІТ
з лабораторної роботи №5
З предмету архітектура комп’ютера
Виконав: ст. гр. КІ-21
Кобринович Р. В.
Прийняв:
Чистяк В. І.
Львів - 2019
Мета:
Вивчити форми подання і застосування додатних та від’ємних чисел у арифметиці з фіксованою комою;
Навчитись розробляти алгоритми і здійснити їх реалізацію у інструкціях процесора навчального комп'ютера DeComp виконання арифметичних операцій додавання та віднімання над двійковими числами з фіксованою комою у модифікованих кодах;
Навчитись розробляти алгоритми і здійснити їх реалізацію у інструкціях процесора навчального комп'ютера DeComp виконання арифметичної операції множення двійкових чисел без знаку.
Простота виконання арифметичних дій є важливою особливістю двійкової системи числення. Але у дійсності, при виконанні арифметичних операцій у конкретному комп’ютері потрібно додатково враховувати не тільки знаки чисел, що обробляються, але і діапазон та форму подання чисел.
Відомо, що одним з можливих шляхів виконання операції віднімання є заміна знаку числа, яке віднімається, на протилежний і додавання його до зменшуваного.
А - В = А + ( - В)
Таким чином операцію арифметичного віднімання замінюють операцією алгебраїчного додавання, яку можна виконати за допомогою двійкових суматорів. Нагадаємо, що від’ємні числа у комп’ютері подаються у прямому, доповняльному і оберненому кодах.
Числа, що зберігаються у прямому коді, перед виконанням обчислень перетворюються у потрібний – доповняльний або обернений - код і після виконання обчислень знову перетворюються у прямий код.
При реалізації заміни віднімання додаванням, другий доданок у наведенному виразі переводиться у доповняльний код шляхом інвертування та додавання одиниці у молодший розряд. (Треба пам’ятати, що доповняльний код додатного числа співпадає з прямим кодом).
A –B =
A
+
+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;
Одиниця переносу із старшого знакового
розряду не враховується
При переведенні у прямий код отриманих від’ємних результатів переводиться саме число і не переводиться знак (див. приклад 2), або число із спотвореним знаком береться за абсолютною величиною.
Реалізується так само, як і в доповняльному коді. Обернені коди чисел додаються порозрядно, знакові розряди додаються як розряди цілих чисел. Суму отримуємо у оберненому коді.
Відмінність полягає у тому, що одиницю переносу із старшого знакового розряду, якщо вона з’являється, потрібно додати до молодшого розряду суми, тобто виникає циклічний перенос.
Приклад 2. Додати у модифікованому оберненому коді числа А і В при умові:
1) А > 0; B < 0; A + B > 0.
A =
+ 0,1101; B
=
- 0,0001; +



100,1011
Циклічний перенос +1
;
00,1100;
2) А < 0; B < 0; A + B < 0.
A =
- 0,1101; B
=
- 0,0001; +



111,0000;
Циклічний перенос +1

11,1110;
Переповнення розрядної сітки при додаванні модифікованих кодів, так само як і при додаванні у звичайних кодах із фіксованою комою, може бути лише у випадках, коли доданки мають однакові знаки. Таке переповнення виявляється способом порівняння знакових розрядів отриманої суми, наприклад, застосовуючи операцію додавання за модулем 2 (XOR). Ознакою переповнення є неспівпадання цифр, які створюються у двох знакових розрядах суми, тобто код знаку числа має вигляд 01 або 10. Відповідно, результат неможливо віднести до додатних, ні до від’ємних модифікованих кодів. Пояснимо це на наступних прикладах.
Приклад 3:
1. А = + 0,1101; 2. А = - 0,1101;
В = + 0,0111; В = - 0,0111;
А + В > 0;А + В < 0;
+
+


Відкидається
Як видно з прикладів, у знакових розрядах отриманої суми додатних доданків маємо комбінацію „01”, а від’ємних – „10”, що свідчить про переповнення розрядної сітки.
Множення двійкових чисел виконують за правилами, аналогічними для десяткових чисел, тобто визначають проміжні добутки, а потім їх додають. Але, важливо зазначити, що у цьому процесі значно полегшується процес визначення проміжних добутків. Насправді виконуються тільки два правила множення двійкового числа на двійкову цифру:
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.
Блок-схема алгоритму:
Ввід чисел
Перше число від’ємне
Ні
Так
Перевести число у доповняльний код
Друге число від’ємне
Ні
Так
Перевести число у доповняльний код
Додати числа у доповняльних кодах
Виникло переповнення розрядної сітки
Так
Ні
Ні
Результат від’ємний число
Результат втрачено,
Записати ознаку переповнення
Так
Переведення результату у прямий код