You are on page 1of 16

Міністерство освіти і науки України

Національний університет «Львівська Політехніка»


Кафедра СКС

Звіт
з лабораторної роботи №6
з дисципліни:
«Організація та функціонування комп'ютерів”
на тему:
“ Дослідження виконання арифметичних операцій у форматі з рухомою комою. “

Виконав:ст. гр. КІ-11


Мацько О.М.
Прийняв: ст. викл.
Кудрявцев О.Т.

Львів
2014

Лабораторна робота № 6
Тема: «Дослідження виконання арифметичних операцій у форматі з рухомою комою.»

Мета:
1. Ознайомитися з поданням чисел у нормальній формі. Засвоїти порядок нормалізації чисел з
рухомою комою. Ознайомитися з поняттям “характеристика” для чисел з рухомою комою.
2. Вивчити правила додавання (віднімання) двійкових чисел з рухомою комою.
3. Розробити алгоритми і програми додавання чисел в арифметиці з рухомою комою в
інструкціях навчального комп'.ютера - симулятора DeComp.

1. Теоретична частина

1.1. Подання чисел з рухомою комою

У форматі з рухомою комою, який звичайно називають нормальною формою запису, числа
записуються наступним чином:
A =  М * d Р ,

де p – ціле число, яке називається порядком числа А;


d – основа системи числення;
М – мантиса числа А (звичайно |M| < 1).

При нормальній формі запис одного числа може приймати різний вигляд у залежності від
обмежень, що накладаються на його форму. Фактично місце коми у мантисі М визначається
величиною порядку р. Із зміною порядку р у більшу або меншу сторону кома відповідно
переміщується ліворуч або праворуч, тобто рухається (“плаває”) у зображені мантиси.
Наприклад:
23410 = 234 * 100 = 0,234 * 103 = 0,0234 * 104 = 2,34 * 102 ;

1011012 = 101101 * 100 = 0,101101 * 10110 = 0,00101101 * 101000 .

Можна зауважити, що хоча числа у наведених прикладах однакові за абсолютною


величиною, проте мантиса потребує різної кількості розрядів. Для цього, щоб запобігти цьому,
звичайно уводять деякі обмеження. Найбільш розповсюдженим і зручним для подання у
комп’ютерах обмеженням є наступне:
d-1  M  1.

Числа, що записані у такій формі називаються нормалізованими. Іншими словами, у


нормалізованих числах у мантисі першою цифрою перед комою стоїть 0, а перша цифра після
коми – це цифра відмінна від нуля. Для двійкової системи числення вона дорівнює 1.
Таким чином, мантису розглядають як число менше одиниці, а порядок – як ціле число.
Операція нормалізації виконується шляхом зсуву мантиси вліво із зменшенням порядку,
або вправо із збільшення порядку на величину, яка дорівнює кількості розрядів, на яку була
зсунута мантиса.
Приклад: нормалізувати наступні числа:
0,00237 * 105 = 0,237 * 103 – мантиса зсувається на два розряди вліво, тобто – збільшується,
а порядок зменшується на дві одиниці.
10101,0112 * 1010 = 0,10101011 * 10 111 - мантиса зсувається вправо на 5 розрядів, тобто –
зменшується, а порядок збільшується на 5 одиниць.
Нормалізоване подання чисел дозволяє зберігати у розрядній сітці комп’ютера більшу
кількість цифр, що мають значення, тому точність обчислень підвищується. Зазвичай у
комп’ютерах нормалізація здійснюється автоматично як при вводі чисел, так і у процесі
обчислень (після виконання чергової операції). При цьому мантиса зсувається ліворуч на
необхідну кількість розрядів і виконується відповідне зменшення порядку, тобто виконується
“нормалізація вліво”.
При виконанні операції додавання або віднімання нормалізованих чисел з різними
порядками одно з них “денормалізується” до вирівнювання порядків, а сума (або різниця) знову
нормалізується.
У розрядній сітці комп’ютерів фіксуються знак числа, знак порядку, порядок числа і
числовий вираз мантиси.

0 1 2 ... ... ... ... ... ... m+n+1


0 0 1 2 ... m 1 2 ... n
Знак Знак
мантиси порядку Порядок Мантиса

У комп’ютерах із рухомою комою можливе переповнення розрядної сітки, так само, як і у


комп’ютерах із фіксованою комою. Наприклад, переповнення може виникнути при додаванні
нормалізованих чисел одного знаку з однаковими порядками. У цьому випадку з’являється “1”
ліворуч від коми. Такого роду переповнення коригується зсувом мантиси вправо на один розряд
і збільшенням порядку на одиницю, тобто виконується “нормалізація вправо”.

1.2. Правила додавання (віднімання) двійкових чисел з рухомою комою

Додавання і віднімання чисел з рухомою комою виконується у декілька етапів.


1. Вирівнювання порядків;
Як відомо, реальна величина (вага) Ni одиниці і-го розряду мантиси визначається не тільки
позицією даного розряду, але й порядком р числа, тобто Ni = d p-і, де і – номер позиції, рахуючи
вправо від коми.
При додаванні (відніманні) необхідно, щоб ваги однойменних розрядів мантис чисел були
однаковими. Для цього мантиси зсувають одна щодо одної так, щоб їх порядки вирівнялися.
Щоб при вирівнюванні порядків не отримати мантиси більшої за одиницю, їх потрібно
вирівнювати від меншого до більшого порядку. Мантиса з меншим порядком зсувається вправо
(у бік молодших розрядів) на кількість розрядів, що дорівнює різниці порядків і одночасно
коректується порядок (збільшується до значення спільного порядку).
2. Додавання мантис;
Додавання мантис із вирівненими порядками виконується згідно правил додавання чисел з
фіксованою комою. Зазвичай використовується модифікований доповнювальний код.
(Пригадайте правила подання від’ємних чисел з використанням доповнювального або
оберненого модифікованого коду).
3. Переведення результату додавання мантис у прямий код.
У результаті додавання мантис може виникнути один з трьох випадків:
а). Виникає переповнення розрядної сітки комп’ютера (порушення нормалізації вправо).
Ознакою переповнення є невизначенність знакових розрядів, коли результат неможливо
віднести ні до додатних, ні до від’ємних чисел (код 01 або 10). У цьому випадку необхідно
виконати корекцію результату додавання мантис шляхом його зсуву вправо на один розряд і
одночасного збільшення порядку на 1.
Наприклад, після додавання мантис отримуємо число 01,00001. Нормалізуємо його зсувом
вправо на один розряд і одночасно збільшуємо порядок на 1. В результаті отримуємо:

(А + В)доп = 00,100001 * 10к+1

Переводимо у прямий код: (А + В)пр = 00,100001 * 10к+1.


Внаслідок корекції результату шляхом зсуву вліво точність його погіршилася.
б). Результат від’ємний. Переведення результату додавання мантис у прямий код
віконується шляхом виконання другого доповнення (тобто, виконується інверсія результату і до
отриманого коду додається 1 у молодший розряд) або другого обертання (тобто, виконується
інверсія результату);
в). Результат додатний. У прямому коді додатний результат залишається без змін;
4. Нормалізація результату.
Виконується тоді, коли після переведення у прямий код у отриманому результаті
відбувається порушення нормалізації вправо, тобто з правого боку від коми є один або декілька
нулів. Це порушення коректується зсувом мантиси результату вліво і одночасне зменшення
порядку на кількість розрядів зсуву мантиси до повної нормалізації мантиси.
4. Остаточний результат додавання двох чисел з рухомою комою : сума мантис – це мантиса
результату, порядок результату – вирівняний порядок доданків, із врахуванням всіх
проведених корекцій. .

Розглянемо приклади виконання операції додавання двійкових чисел з рухомою комою.


Всі арифметичні дії будемо виконувати у модифікованому доповнювальному коді.

Приклад 1: Додати A = - 0,1101 * 10101 i B = + 0,1100 * 10011.

а) Вирівнюємо порядки.. Спочатку, визначаємо арифметичну різницю між порядками,


віднімаючи від значення порядку числа А значення порядку числа В. При цьому операцію
віднімання замінюємо операцією додавання у доповнювальному модифікованому коді.
рА – рВ = рА + (– рВ) = (pA доп(м) = 00,101) + (pB доп(м) = 11,101) = 00,010 – різниця порядків

Аналіз отриманої різниці:


- знак різниці показує, що порядок числа А більше порядку числа В;
- порядки відрізняються на дві одиниці.
Через те, що рА > pB, зсуваємо мантису числа В вправо на два розряди, тобто

МВ пр= 00,001100 і Впр= 00,001100 * 10101.

Розряди мантиси числа В, які вийшли за межі розрядної сітки процесора, будуть втрачені,
що погіршить точність обчислень.
б) Переводимо мантиси обох чисел у модифікований доповнювальний код (в межах 4-х
розрядів):
МА пр = 11,1101  МА доп(М) =.11,0011
МВ пр = 00,0011  МВ доп(М) =.00,0011

в) Додаємо модифіковані доповнювальні коди мантис чисел А та В і отримуємо результат


у модифікованому доповнювальному коді:

(А + В)доп (М) = 11,0011 + 00,0011 = 11,0110

г) Аналіз результату додавання мантис починається із знакових розрядів. Знакові розряди


показують, що переповнення розрядної сітки у нас не виникло. Результат – від'ємний, тому
переводимо мантису результату у прямий код шляхом виконання другого доповнення і
дописуємо спільний порядок:

(А + В)пр (М) = (11,1001 + 00,0001) * 10 101 = 11,1010 * 10101 - остаточний результат.

При переведенні у прямий код знак результату не міняється.


Подальший аналіз показує, що порушення нормалізації результату вправо немає.

Приклад 2. : Додати двійкові числа: А = + 0,10100 * 10101 та В = - 0,10110 * 10100 .

а) Для вирівнювання порядків доданків необхідно із порядку числа А відняти порядок


числа В. Віднімання замінимо додаванням у модифікованому доповняльному коді.

(рА доп(м)= 00,101) + (рВ доп(м) = 11,100) = ,101 – 00,100 = 00,101 + (- 00,100) =

= 00,101 + (11,011 + 00,001) = 00,101 + 1,100 = 00,001

Через те, що рА > pB на +1, виконуємо зсув мантиси числа В вправо на 1 розряд.

МВ пр = 11,010110 і В = 11,010110 * 10101.

б) Переведемо мантиси доданків у модифікований доповняльний код.

МА пр = 00,10100  МА доп(М) = 00,10100.


МВ пр = 11,010110  МВ доп(М) = 11,101010.

в) Додаємо мантиси чисел А і В у модифікованих доповняльних кодах:


(МА доп(М) = 00,10100) + (МВ доп(М) = 11,10101) = 00,01001

г) Переводимо результат у прямий код (виконуємо друге доповнення). У нашому випадку


прямий код суми мантис збігається з доповнювальним кодом суми мантис, тому що результат є
число додатне.
(МА + МВ) пр(м) = 00,01001

Як видно, виникло порушення нормалізації вправо, тому що вправо від коми розряд
дорівнює 0.
д) Виконуємо нормалізацію результату, тобто зсув мантиси ліворуч на 1 розряд з
одночасним відповідним зменшенням порядку:

(А + В)пр = 0,1001 * 10100 – остаточний результат.

2. Порядок роботи:

1. Розробити алгоритм і написати програму додавання довільних (додатних і від’ємних)


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

Знак порядку Знак мантиси Порядок Мантиса


2 розряди 2 розряди 4 розряди 8 розрядів

У алгоритмі передбачити аналіз отриманого результату на:


- переповнення розрядної сітки (порушення нормалізації вліво);
- наявність порушення нормалізації вправо;
- від'ємний результат
Передбачити відповідні заходи з корекції результату
Початок
1 2

Зсув ma вправо на
Зсув mb вправо на кількість різниці
Ввід чисел кількість різниці
аіb порядків
порядків

Анал ні
із ні
знаку Анал
Pa+? Перетворення Pa із
у доповняльний знаку Перетворення Pa
код ma+? у доповняльний
так
код
так
Перетворення Pa
у модифікований
доповняльний Перетворення ma
код у модифікований
доповняльний
код

Анал ні
із ні
знаку Анал
Перетворення Pb
Pb+? із
у доповняльний
знаку
код
так mb+? Перетворення Pb
у доповняльний
так код

Перетворення Pb
у модифікований Перетворення mb
доповняльний у модифікований
код доповняльний так
код

Віднімання Рa І Рb
Додавання ma і
mb
Переведення результату
віднімання в прямий код

так Переповнен
так
ня розрядної
Рa< сітки
Рb 01?
10? Корекція мантиси
ні
шляхом зсуву всього
Збільшення Pb на результату вправо на
Збільшення Pb на олин розряд
величину різниці величину різниці ні

1 4
2 3
3 4

Збільшення
порядку на 1
Перевірка так
на
від’ємніст
ь
(ma+mb)<0
?
Виконання
другого
доповнення
Результат
додатний

Переведення
результату в
прямий код

Нормалізац
ія
порушена?

Нормалізація
прямого коду

Виведення
результату

Кінець
Виконання:
Інформація про вхідні дані:

350 aaaa aaaa aaaa aaaa Число а


351 aaaa aaaa aaaa aaaa Число b
352 1100 0000 0000 0000 Маска для знаку порядку
353 0000 1111 0000 0000 Маска для порядку
354 0000 0000 0000 0000 Pa (порядок числа а)
355 0000 0000 0000 0000 Знак порядка числа а
356 0000 0000 0000 0000 Pb (порядок числа b)
357 0000 0000 0000 0000 Знак порядку числа b
358 0000 0000 0000 0000 Порядок зі знаком числа a
359 0000 0000 0000 0000 Порядок зі знаком числа b
360 0000 0000 0000 0001 Одиниця для додавання
361 0000 0000 0000 0010 Нормалізація порядку
362 0011 1100 0000 0000 Маска для нормалізації інвертування порядка
363 0000 0000 0000 0000 ma (мантиса числа a)
364 0000 0000 0000 0000 mb (мантиса числа b)
365 0000 0000 0000 0000 Знак мантиси числа a
366 0000 0000 0000 0000 Знак мантиси числа b
367 0011 0000 0000 0000 Маска для відокремлення знаку мантиси
368 0000 0000 1111 1111 Маска для відокремлення мантиси
369 0000 0000 0000 0000 Мантиса зі знаком числа a
370 0000 0000 0000 0000 Мантиса зі знаком числа b
371 0000 0000 0000 0000 Різниця порядків
372 0011 1110 0000 0000 Маска для взяття різниці порядків
373 1011 1111 1111 1111 Обернена маска для взяття модуля різниці
374 0000 0000 0000 1001 Нормалізація різниці порядків
375 0000 0000 0000 0101 Підготовка мантиси числа а
376 0000 0000 0000 0101 Підготовка мантиси числа b
377 0000 0000 0000 0010 Нормалізація порядку
378 0000 0000 1111 1111 Маска для виділення мантиси
379 1000 0000 0000 0000 Відновлення знаку мантиси
380 0000 0000 0000 0000 Сума двох чисел
381 0000 0000 0000 0000 Мантиса результату
382 0000 0000 0000 0000 Знак мантиси результату
383 0000 0000 0000 0000 Порядок результату
384 0000 0000 0000 0000 Знак порядку результату
385 0011 1111 1110 0000 Маска для вибору мантиси результату
386 0000 0000 0000 0110 Зсув мантиси до молодших розрядів
387 0000 0000 0000 0000 Результат (Зн. П, Зн.М, Порядок, Мантиса)
388 0000 0100 0000 0000 Додавання одиниці для переведення порядку
389 0000 0010 0000 0000 Одиниця для переведення різниці порядків
390 0000 0000 0010 0000 Додавання одиниці для переведення мантиси

Код програми:
2 0000 0001 0101 1110 LOAD 350
3 0100 0001 0110 0001 AND 353 Виділення порядку першого числа (А)
4 0001 0001 0110 0010 STORE 354
5 0000 0001 0110 0010 LOAD 354
6 1111 0010 0000 0000 LSL
7 0011 0001 0110 1000 SUB 360
8 0001 0001 0110 1001 STORE 361
9 1000 0000 0000 0011 JNZ 3 Переміщення порядку до старших розрядів,
10 0000 0001 0101 1110 LOAD 350 шляхом зсуву вліво та віднімання одиниці з
11 0100 0001 0110 0000 AND 352 заготовленої маски
12 0001 0001 0110 0011 STORE 355
13 1111 1100 0000 0000 LSL Виділення знаку першого порядку числа
14 1100 0000 0001 0100 JNC 20 (А) логічним «І»
15 0000 0001 0110 0010 LOAD 354 Перевірка на від’ємність першого порядку
16 0111 0000 0000 0000 NOT числа (А)
17 0100 0001 0110 1010 AND 362
18 0010 0001 1000 0100 ADD 388
19 0001 0001 0110 0010 STORE 354 Якщо А<0, то переводимо порядок в
20 0000 0001 0110 0010 LOAD 354 доповняльний код логічним «І» та додавши
21 0010 0001 0110 0011 ADD 355 одиницю до молодшого розряду
22 0001 0001 0110 0110 STORE 358 Об’єднання знаку і порядку в одне число
23 0000 0001 0101 1111 LOAD 351
24 0100 0001 0110 0001 AND 353
25 0001 0001 0110 0100 STORE 356
26 0000 0001 0110 0100 LOAD 356
27 1111 0010 0000 0000 LSL Виділення порядку другого числа (В)
28 0001 0001 0110 0100 STORE 356
29 0000 0001 0110 1001 LOAD 377
30 0011 0001 0110 1000 SUB 360
31 0001 0001 0110 1001 STORE 377
32 1000 0000 0001 1010 JNZ 26 Переміщення порядку до старших розрядів,
33 0000 0001 0101 1111 LOAD 351 шляхом зсуву вліво та віднімання одиниці з
34 0100 0001 0110 0000 AND 352 заготовленої маски
35 0001 0001 0110 0101 STORE 357
36 1111 1100 0000 0000 LSL Виділення знаку другого числа (В)
37 1100 0000 0010 1011 JNC 43 логічним «І»
38 0000 0001 0110 0100 LOAD 356
39 0111 0000 0000 0000 NOT Перевірка на від’ємність (В)
40 0100 0001 0110 1010 AND 362
41 0010 0001 1000 0100 ADD 388
42 0001 0001 0110 0100 STORE 356 Якщо порядок другого числа <0, то
43 0000 0001 0110 0100 LOAD 356 переводимо порядок в доповняльний код
44 0010 0001 0110 0101 ADD 357 шляхом додавання одиниці з маски
45 0001 0001 0110 0111 STORE 359
46 0000 0001 0101 1110 LOAD 350
47 0100 0001 0111 0000 AND 368 Об’єднання знаку і порядку в одне число
48 0001 0001 0110 1011 STORE 363
49 0000 0001 0101 1110 LOAD 350
50 0100 0001 0110 1111 AND 367 Виділення мантиси числа А
51 1111 1100 0000 0000 LSL
52 1111 1100 0000 0000 LSL
53 0001 0001 0110 1101 STORE 365
54 0000 0001 0101 1111 LOAD 351 Виділення і нормалізація знаку матиси (А)
55 0100 0001 0111 0000 AND 368 подвійним зсувом вліво
56 0001 0001 0110 1100 STORE 364
57 0000 0001 0101 1111 LOAD 351
58 0100 0001 0110 1111 AND 367 Виділення мантиси числа В
59 1111 1100 0000 0000 LSL Виділення і нормалізація знаку матиси (В)
60 1111 1100 0000 0000 LSL
61 0001 0001 0110 1110 STORE 366
62 0000 0001 0110 0110 LOAD 358
63 0010 0001 0110 0111 ADD 359
64 0001 0001 0111 0011 STORE 371
65 1011 0000 0100 1100 JM 76
66 1111 0010 0000 0000 LSR Визначення різниці порядків
67 0100 0001 0111 0100 AND 372 Визначення знаку різниці
68 0001 0001 0111 0011 STORE 371
69 0000 0001 0111 0011 LOAD 371
70 0011 0001 0110 1000 SUB 360 Корекція результату віднімання порядків
71 1001 0000 0101 1010 JZ 90
72 0001 0001 0111 0011 STORE 371
73 0000 0001 0110 1100 LOAD 364
74 1111 0010 0000 0000 LSR
75 0001 0000 0110 1100 STORE 364
76 1110 0000 0101 0010 JMP 82 Зсув мантиси на величину різниці порядків
77 1111 0010 0000 0000 LSR шляхом зсуву вправо двійкогового коду
78 0100 0001 0111 0101 AND 373 мантиси
79 0001 0001 0111 0011 STORE 371
80 0100 0001 0111 0100 AND 372
81 0111 0000 0000 0000 NOT Корекція результату
82 0010 0001 1000 0101 ADD 389
83 0000 0001 0110 0110 LOAD 358 Переведення числа в прямий код додаючи
84 0010 0001 0111 0011 ADD 371 одиницю
85 0001 0001 0110 0110 STORE 358
86 0001 0001 0111 0011 STORE 371 Збільшення меншого порядку на величину
87 0000 0001 0111 0011 LOAD 371 різниці
88 1111 0010 0000 0000 LSR
89 0001 0001 0111 0011 STORE 371
90 0000 0001 0111 0110 LOAD 374
91 0011 0001 0110 1000 SUB 360
92 0001 0001 0111 0110 STORE 374
93 1000 0000 0110 0011 JNZ 99 Нормалізація різниці порядків шляхом
94 0000 0001 0111 0011 LOAD 371 зсуву вправо, та додаванням одиниці з
95 0011 0001 0110 1000 SUB 360 маски до молодшого розряду

96 1001 0000 0111 0011 JZ 115 Зсув мантиси на величину різниці порядків,
97 0001 0001 0111 0011 STORE 371
98 0001 0001 0110 1011 LOAD 363
99 1111 0010 0000 0000 LSR
100 0000 0001 0110 1011 STORE 363
101 1110 0000 0110 1011 JMP 107
102 0000 0001 0110 1101 LOAD 365 шляхом зсуву двійкового коду мантиси та
103 1111 1100 0000 0000 LSL відніманням одиниці в молодшому розряді
104 1100 0000 0110 1110 JNC 110
105 0001 0000 0110 1011 LOAD 363
106 0111 0000 0000 0000 NOT
107 0010 0001 0110 1000 ADD 360
108 0100 0001 0111 1010 AND 378
109 0000 0000 0110 1011 STORE 363 Переведення числа a в доповняльний код
110 0000 0001 0110 1110 LOAD 366 шляхом інвертування , та додаванням
111 1111 1100 0000 0000 LSL одиниці до молодшого розряду
112 1100 0000 0111 0110 JNC 118
113 0000 0000 0110 1100 LOAD 364
114 0111 0000 0000 0000 NOT
115 0010 0001 0110 1000 ADD 360
116 0100 0001 0111 1010 AND 378
117 0001 0001 0110 1100 STORE 364 Переведення числа b в доповняльний код
118 0001 0001 0110 1011 LOAD 363 шляхом інвертування , та додаванням
119 1111 1100 0000 0000 LSL одиниці до молодшого розряду
120 0001 0001 0110 1011 STORE 363
121 0000 0001 0111 1101 LOAD 375
122 0011 0001 0110 1000 SUB 360
123 0001 0001 0111 1101 STORE 375
124 1000 0000 1000 0011 JNZ 131 Зсув мантиси числа а до старших розрядів,
125 0000 0001 0110 1100 LOAD 364 зсувум вліво та відніманням одиниці від
126 1111 1100 0000 0000 LSL молодших розрядів
127 0001 0001 0110 1100 STORE 364 Зсув мантиси числа b до старших розрядів
128 0000 0001 0111 1110 LOAD 376 шляхом зсуву вліво та відніманням одиниці

129 0011 0001 0110 1000 SUB 360 від двійкового коду власне мантиси
130 0001 0001 0111 1110 STORE 376
131 1000 0000 1000 1010 JNZ 138
132 0001 0001 0110 1011 LOAD 363
133 0010 0001 0110 1101 ADD 365
134 0001 0001 0111 0001 STORE 369
135 0000 0001 0110 1100 LOAD 364 Об’єднання знаку і мантиси в одне число
136 0010 0001 0110 1110 ADD 366 числа а шляхом додаання
137 0001 0001 0111 0010 STORE 370
138 0000 0001 0111 0001 LOAD 369 Об’єднання знаку і мантиси в одне число
139 0000 0001 0111 0001 ADD 370 числа b шляхом додавання
140 1011 0000 1001 1100 JM 156 Додавання мантис двох чисел (Власне
141 1111 1100 0000 0000 LSL додавання)
142 0001 0001 0111 1100 STORE 380 Збереження результату при додатньому
143 1111 1100 0000 0000 LSL результаті, зсунувши при цьому вліво для
нормалізації результату, тобто прибравши
144 0010 0001 0111 1011 ADD 379 одиницю з старших розрядів(якщо вона є)
145 0111 0000 0000 0000 NOT Збереження результату при від’ємному
146 0100 0001 1000 0001 AND 385 результаті
147 0010 0001 1000 0110 ADD 390
148 0010 0001 0110 0000 ADD 352
149 0001 0001 0111 1100 STORE 380 Переведення від’ємного результату в
150 0000 0001 0110 0010 LOAD 354 прямий код шляхом логічного «І», тобто
151 1111 0010 0000 0000 LSR власне інвертуванням
152 1111 0010 0000 0000 LSR
153 0001 0001 0111 1111 STORE 383
Збереження порядку результату
154 0000 0001 0110 0011 LOAD 355
155 0001 0001 1000 0000 STORE 384
156 0000 0001 0111 1100 LOAD 380
Збереження знаку порядку результату
157 0100 0001 1000 0001 AND 385
158 1111 1100 0000 0000 LSL Перевірка денормалізації вправо і корекція
159 1111 1100 0000 0000 LSL результату

160 1111 1100 0000 0000 RCL


161 1101 0000 1011 0110 JC 182
162 1111 1100 0000 0000 RCL
163 1101 0000 1011 0110 JC 182
164 0000 0001 0111 1111 LOAD 383
165 0010 0001 0110 1000 ADD 360
166 0001 0001 0111 1111 STORE 383
167 0000 0001 0111 1101 LOAD 381
168 1110 0000 1010 1001 JMP 169
169 1111 1110 0000 0000 RCR
170 0001 0001 0111 1101 STORE 381
171 0000 0001 0111 1101 LOAD 381
172 1111 0010 0000 0000 LSR
173 0001 0001 0111 1101 STORE 381
174 0000 0001 1000 0010 LOAD 386
175 0011 0001 0110 1000 SUB 360 Збереження мантиси результату зсувом
176 0001 0001 1000 0010 STORE 386 вправо та відніманням одиниці з молодшого
177 1000 0000 1011 1000 JNZ 184 розряду

178 0000 0001 0111 1100 LOAD 380


179 0100 0001 0110 0000 AND 352
180 1111 0010 0000 0000 LSR
181 1111 0010 0000 0000 LSR
Збереження знаку мантиси результату
182 0001 0001 0111 1110 STORE 382
подвійним зсувом вправо
183 0000 0001 0111 1101 LOAD 381
184 0010 0001 0111 1110 ADD 382
185 0010 0001 0111 1111 ADD 383
186 0010 0001 1000 0000 ADD 384 Формування результату, тобто нормалізація
187 0001 0001 1000 0011 STORE 387 вихідних даних, для зчитування власне
188 0111 1100 0000 0000 HALT користувачем

Завершення програми

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


комою, ознайомився з поняттям “характеристика” для чисел з рухомою комою, вивчив
правила додавання (віднімання) двійкових чисел з рухомою комою, розробив алгоритми і
програми додавання чисел в арифметиці з рухомою комою в інструкціях навчального
комп'ютера - симулятора DeComp.

You might also like