- •Міністерство освіти і науки україни
- •"Організація та функціонування комп'ютерів"
- •І. Теоретичні відомості
- •1.1. Коротка історія розвитку комп’ютерної техніки
- •1.2. Принципи організації комп’ютера фон-Неймана
- •Іі. Опис архітектури навчального комп’ютера DeComp
- •2.1. Організація навчального комп’ютера – симулятора DeComp
- •2.2. Пульт управління навчального комп’ютера
- •2.5. Закладка “Пристрій підготовки даних”
- •2.5.1. Порядок введення інформації на перфострічку
- •III. Вказівки до виконання лабораторних робіт Лабораторна робота № 1
- •1. Теоретична частина
- •1.1 Загальні поняття про системи числення
- •1.2.1 Двійкова система числення
- •1.3. Переведення чисел з однієї позиційної системи числення до іншої
- •1.3.1. Переведення цілих чисел
- •1.3.2. Переведення правильного дробу
- •1.3.3. Особливості переведення вісімкових і шістнадцяткових чисел до двійкової системи числення і навпаки
- •0000 0000 0000 1010 – Двійковий код 1-ої інструкції
- •0010 0000 0000 1011 - - “ - 2-Ої інструкції
- •0001 0000 0000 1100 - - “ - 3-Ої інструкції
- •0111 1100 0000 0000 - - “ - 4-Ої інструкції
- •Лабораторна робота № 2
- •1. Теоретичні відомості
- •1.2. Інструкції арифметичних операцій:
- •1.3. Призначення Регістру Ознак
- •1.4. Дослідження виконання інструкцій навчального комп’ютера
- •2. Порядок виконання роботи
- •Вимоги до звіту
- •Лабораторна робота № 3
- •1. Теоретичні відомості
- •1.2. Організація програмних циклів
- •1.3. Особливості виконання операцій зсуву
- •2. Порядок виконання роботи:
- •3. Вимоги до звіту.
- •Лабораторна робота № 4
- •1. Теоретичні відомості
- •1.1. Загальні відомості про логічні функції
- •1.2. Опис логічних інструкцій навчального комп’ютера
- •1.3. Подання від’ємних чисел у комп’ютерах
- •1.3.1. Прямий код
- •1.3.2. Обернений код
- •1.3.3. Доповняльний код
- •1.3.4. Модифіковані коди
- •2. Порядок виконання роботи:
- •3. Вимоги до звіту
- •Лабораторна робота № 5
- •1. Теоретична частина.
- •1.1. Додавання і віднімання двійкових чисел з фіксованою комою
- •1.2. Додавання двійкових чисел у модифікованому доповняльному коді
- •1.3. Додавання двійкових чисел у модифікованому оберненому коді
- •1.4. Переповнення розрядної сітки при додаванні у модифікованих машинних кодах
- •1.5. Множення двійкових чисел без знаку
- •2. Порядок роботи:
- •3. Вимоги до звіту
- •Лабораторна робота № 6
- •1. Теоретична частина
- •1.1. Подання чисел з рухомою комою
- •1.2. Правила додавання (віднімання) двійкових чисел з рухомою комою
- •2. Порядок роботи:
- •3. Вимоги до звіту.
- •Лабораторна робота № 7
- •1. Теоретична частина
- •1.1. Ділення двійкових чисел без знаку
- •1.1.1. Ділення з відновленням залишку
- •1.1.2. Ділення без відновлення залишку
- •1.2. Множення двійкових чисел із знаком
- •1.2.1 Множення чисел у форматі з фіксованою комою
- •1.3. Ділення двійкових чисел у форматі з фіксованою комою.
- •2. Порядок роботи
- •3. Вимоги до звіту.
- •Література.
- •Додаток
2. Порядок роботи:
Розробити алгоритм і написати програму додавання довільних (додатних і від’ємних) двійкових чисел із рухомою комою у модифікованому доповнювальному коді в інструкціях симулятора DeComp. Числа подаються у форматі:
|
Знак порядку |
Знак мантиси |
Порядок |
Мантиса |
|
2 розряди |
2 розряди |
4 розряди |
8 розрядів |
У алгоритмі передбачити аналіз отриманого результату на:
переповнення розрядної сітки (порушення нормалізації вліво);
наявність порушення нормалізації вправо;
від'ємний результат
Передбачити відповідні заходи з корекції результату.
3. Вимоги до звіту.
Вимоги до звіту аналогічні вимогам до лабораторної роботи № 3.
Лабораторна робота № 7
Тема: Дослідження виконання арифметичних операцій множення і ділення у форматі з фіксованою комою.
Мета роботи:
1. Вивчити алгоритми виконання арифметичних операцій множення та ділення у обчислювальних иашинах;
2. Розробити алгоритми і програми множення і ділення довільних двійкових чисел у форматі з фіксованою комою в інструкціях навчального комп’ютера DeComp.
1. Теоретична частина
1.1. Ділення двійкових чисел без знаку
Ділення двійкових чисел – найбільш трудомістка і тривала за часом операція, що виконується у АЛП більшості комп’ютерів загального призначення. Хоча на перший погляд ділення не складніше, ніж множення, проте виникає ряд проблем, пов’язаних з процесом ділення, що вимагають додаткових кроків з додатковими витратами часу.
Ділення вручну – це процес спроб та помилок. Наприклад, якщо потрібно розділити 461010 на 7710, ми спочатку помічаємо, що 77 не „входить” у 46, тому пробуємо розділити 461 на 77. Можна припустити, що число 461 у шість разів більше дільника 77, але перевірка показує помилковість такого припущення:
4610 | 77
- 462 | 6
-1
Тобто ми завищили значення частки і необхідно зменшити цифру першого розряду частки, яку пробуємо визначити, до значення 5. На більш простому прикладі покажемо повний формальний алгоритм дій, які ми виконуємо при діленні. Нехай нам потрібно поділити десяткові числа 5 на 2.
1-ша перевірка, чи ділене більше ніж дільник; різниця 5 | 2
додатна, тому продовжуємо: -2 | 2,5
2-га перевірка, чи ділене більше ніж дільник; бачимо: різниця 3
від’ємна, тому відновлюємо залишок і у частку записуємо значення -2
1-го розряду, яке дорівнює 2, тому що відбулося дві позитивні перевірки; -1
+ 2
Множимо залишок на 1010 – основу системи числення 10
і продовжуємо перевірки як і раніше, але у частці - 2
треба поставити кому. 8
Таких позитивних перевірок буде 5, доки різниця стане = 0, - 2
тому у частку запишемо число 5. 6
В універсальних комп’ютерах, як правило, реалізується цей “шкільний” алгоритм ділення чисел. Простий алгоритм ділення полягає у тому, що дільник на кожному кроці віднімається із діленого (починаючи із старших розрядів) стільки разів, скільки це можливо для отримання найменшого додатного залишку. Тоді у наступний розряд частки записується цифра, яка дорівнює числу дільників, що містяться у діленому на даному кроці. Інакше кажучі, при ділені операцію віднімання повторюють до тих пір, доки зменшуване не стане менше дільника, що віднімається. Число цих повторів показує, скільки разів число, що віднімається (дільник), вкладається у зменшуване (ділене).
Висновок: значення розряду частки – це кількість віднімань діленого до отримання від’ємного залишку, який відновлюється шляхом додавання до нього дільника.
Та сама проблема виникає, коли комп’ютер пробує розділити одне число на інше. Але для двійкової системи числення є відмінність – дільник або вкладається у ділене - тоді у частку записуємо 1, або не вкладається - тоді у частку записуємо 0 і потрібно розглядати додатковий розряд у діленому. Це значно полегшує процедуру ділення.
Розглянемо попередній приклад, але числа будуть подані у двійковій системі числення:
|
1 0 1 | 1 0 - 1 0 | 1 0 , 1 + 0 1 - 1 0 - 1 + 1 0 0 1 0 - 1 0 0 |
Зразу ж можна побачити, що дільник (10) вкладається у ділене, а тому записуємо 1 у старший розряд частки. Множимо дільник на 1 і віднімаємо з діленого. |
|
Різниця = 0. Об’єднуємо 0 залишку із значенням наступного розряду дільника – це є 1 і продовжуємо перевірки. | |
|
Оскільки дільник (10) 0 разів вкладається у величину 01 (різниця від’ємна), записуємо 0 у наступний розряд частки і відновлюємо залишок, додаючи дільник. | |
|
До значення залишку 01 додаємо наступний розряд діленого | |
|
Через те, що цього розряду немає, додаємо до запису залишку 0 (отримаємо 010), а у частці ставимо кому, яка відділяє цілу частину частки від дробової. Остання перевірка дає 0 у залишку, тому процесс ділення припиняється. |
На любому кроці ділення легко візуально визначити, чи дорівнює частка 1 або 0, але комп’ютер не володіє такою здатністю і повинен кожний раз виконувати пробне віднімання. Якщо після припущення про значення пробного розряду частки і віднімання дільника результат виявиться від’ємним, то поточне значення діленого повинно бути “відновлене”, або ж потрібно застосувати який-небудь інший метод ділення.
Окрім розглянутого, треба зауважити ще одну особливість виконання операції ділення у комп’ютері, незалежно від форми подання чисел і прийнятого алгоритму: перед початком операції необхідно виключити можливість ситуації ділення на 0. Інакше задача втрачає результат, тому що число “нескінченність” у арифметичних операціях використати не можливо. Більшість трансляторів ситуацію “Ділення на 0” вважають “фатальною помилкою” і видають відповідне повідомлення.
Зрозуміло, комп'ютер не може будувати припущень щодо того, скільки разів дільник укладається в тому або іншому числі, тому весь процес ділення зводиться до операцій віднімання і зміщення (зсуву).
Звичайно у комп’ютерах операція ділення реалізується двома способами:
з нерухомим діленим і дільником, що зсувається вправо;
з нерухомим дільником і діленим, що зсувається вліво;
Недоліком першого способу є потреба мати у пристрої ділення суматор і регістр подвійної довжини. Другий спосіб дозволяє будувати пристрій з суматором одинарної довжини. Нерухомий дільник зберігається у регістрі одинарної довжини, а ділене, що зсувається відносно дільника, знаходиться у двох таких самих регістрах. Цифри частки, що створюється, заносяться у розряди одного з регістрів діленого, які звільняються при його зсуві.
Розглянемо два основних алгоритми цілочисельного ділення
