li> Провести вирівнювання порядків чисел. Порядок меншого (по модулю) числа приймається рівним порядку більшого числа, а мантиса меншого числа зсувається вправо на число розрядів, рівне різниці порядків чисел.
Провести віднімання мантис, в результаті чого виходить мантиса віднімання.
Порядок результату приймається рівним порядку більшого числа.
Отримана різниця нормалізується, виконуються перевірки результату на виникнення нездійсненних операцій, виконується округлення результату якщо потрібно.
2. ЗАВДАННЯ ДЛЯ КУРСОВОЇ РОБОТИ
Вихідні дані:
. Стандарт IEEE754 (файл рукописи «Основи арифметики ЕОМ»)
Завдання на проектування (ТЗ):
Розробити Граф схему алгоритму (ГСА) виконання операції над операндами з плаваючою крапкою.
Операнди з плаваючою точкою представлені у форматі стандарту IEEE 754. Результат виконання операції повинен бути присвоєний змінної С і задовольняти вимогам стандарту.
Ваша ДСА має обчислювати результат тільки при заданих поєднаннях операндів. При інших поєднаннях ДСА повинна ігнорувати запуск і виходити на КІНЕЦЬ.
Мій порядковий номер 6.
Тип здійсненним операції:
Віднімання нормалізованого і ненормалізірованного чисел, NAN, нескінченних величин, нулів і їх комбінацій.
Обидва операнди у форматі подвійної точності.
плаваючий точка число операнд
3. Опис алгоритмів ПРОЦЕСУ ВИКОНАННЯ ОПЕРАЦІЇ
В алгоритмі використовувалися такі змінні:
А, В, С - регістри операндів і результату, розміром формату числа з плаваючою точкою, подвійної точності;
eA, eB, eC - поля зміщеного порядку, що займають 1..11 розряди відповідних регістрів;
mA, mB, mC - поля дробової частини мантиси, що займають 12..63 розряди, відповідних регістрів;
Fl - 5-ти бітовий регістр прапорів виняткових ситуацій; [0]=10000 - нездійсненне операція. [1]=01000 - переповнення формату. [2]=00100 - ділення на нуль. [3] =00010 - втрата точності. [4]=00001 - втрата значущості.
Bl - 5-ти бітовий регістр блокування обробника переривання. Якщо якийсь з бітів встановлений в одиницю, то не викликається обробник переривання з цієї виняткової ситуації;
Pr- виклик обробника переривання, в який передаються операнди і значення прапорцевого регітра Fl.
Нижче наведено, поблочних опис алгоритму процесу
Алгоритм процесу виконання операції представлений у додатку А.
Блок 1 - початок алгоритму.
Блок 2- введення в обчислювальний пристрій операндів. Запис їх у відповідні регістри. Далі блок 3.
Блок 3 - установка в нуль всіх бітів прапорцевого регістра. Прапори попередніх операцій не впливають на поточну. Далі блок 4.
Блок 4 - перевірка зміщеного порядку операнда А на рівність усіх його бітів одиниці. Якщо умова виконується, значить А є NaN або нескінченністю і відбувається перехід до блоку 5, інакше А є числом або нулем і відбувається перехід до блоку 18.
Блок 5 - перевірка дробової частини мантиси операнда А на рівність усіх його бітів нулю. Якщо умова виконується, значить А є нескінченністю і відбувається перехід до блоку 7, інакше А є NaN і відбувається перехід до блоку 6.
Блок 6 - перевірка старшого розряду дробової частини мантиси А. Якщо він дорівнює одиниці, то в А записано сигнальне NaN і відбувається перехід до блоку 71, інакше в А записано просте NaN і відбувається перехід до блоку 8. Сигнальне NaN вимагає виклику обробника переривання по виняткової ситуації, а просте - безпосередньо копіюється в результат.
Блок 7- перевірка зміщеного порядку операнда В на рівність усіх його бітів одиниці. Якщо умова виконується, значить В є NaN або нескінченністю і відбувається перехід до блоку 11, інакше В є числом або нулем і відбувається перехід до блоку 9.
Блок 8 - перевірка зміщеного порядку операнда В на рівність усіх його бітів одиниці. Якщо умова виконується, значить В є нескінченністю або NAN і відбувається перехід до блоку 10, інакше В є числом або нулем і відбувається перехід до блоку 15.
Блок 9 - присвоюємо результат отриманий в регістрі А операнду в регістрі С, в даному випадку присвоюємо нескінченність, далі блок 149.
Блок 10 - перевірка дробової частини мантиси операнда В на рівність усіх його бітів нулю. Якщо умова виконується, значить В є нескінченністю ...