 
        
        - •Мета роботи:
- •1. Теоретична частина.
- •1.1. Додавання і віднімання двійкових чисел з фіксованою комою
- •1.2. Додавання двійкових чисел у модифікованому доповняльному коді
- •1.3. Додавання двійкових чисел у модифікованому оберненому коді
- •1.4. Переповнення розрядної сітки при додаванні у модифікованих машинних кодах
- •1.5. Множення двійкових чисел без знаку
- •2. Порядок роботи:
2. Порядок роботи:
- 
Вивчити теоретичні відомості методичних вказівок. 
- 
Розробити алгоритм і написати програму додавання довільних 16-розрядних двійкових чисел із знаком, поданих у форматі з фіксованою комою у модифікованому доповняльному коді у інструкціях навчального комп’ютера DeComp. 
Виконання:
Завдання:
Розробити алгоритм і написати програму додавання довільних 16-розрядних двійкових чисел із знаком, поданих у форматі з фіксованою комою у модифікованому доповняльному коді у інструкціях навчального комп’ютера DeComp.
Алгоритм розв’язання задачі №1 зображений на малюнку 1.
Інформація про вхідні дані:
- 
	Адреса комірки Дані в двійковому коді Позначення змінної в алгоритмі Інформація про вхідні дані та призначення комірок, що використовуються. 40 0000 0000 0000 1010 A Число А - перший доданок. А=10 знаходиться у 40-й комірці 41 1100 0000 0000 1001 B Число В – другий доданок. В=-9 знаходиться у 41-й комірці 42 1100 0000 0000 0000 М Число М – маска. Слугує для визначення знаку. знаходиться у 42-й комірці. 43 0000 0000 0000 0001 К Число К=1 допомагає переводити у доповняльний код 44 0000 0000 0000 0000 S Змінна “ S ”- сума чисел А і В. Знаходиться у 44-й комірці. Початкове значення 0. 45 1111 1111 1111 1111 О Ознака неправильного результату. 
| дреса комірки пам’яті | Код інструкції (двійковий) | Мнемонічний формат інструкції | Коментар | 
| 0 | 0000 0000 0010 1000 | LOAD40 | Завантаження першого доданка в акумулятор . Якщо “А” – додатнє (Z=1) то відбувається перехід на8 . | 
| 1 | 0100 0000 0010 1010 | AND42 | |
| 2 | 1001 0000 0000 1000 | JZ8 | |
| 3 | 0000 0000 0010 1000 | LOAD40 | Завантаження першого доданка в акумулятор. Відбувається перетворення його у доповняльний модифікований код ізапис назад до 40 комірки | 
| 4 | 0111 0000 0000 0000 | NOT | |
| 5 | 0010 0000 0010 1011 | ADD43 | |
| 6 | 0101 0000 0010 1010 | OR42 | |
| 7 | 0001 0000 0010 1000 | STORE40 | |
| 8 | 0000 0000 0010 1001 | LOAD41 | Завантаження другого доданка в акумулятор . Якщо “А” – додатнє (Z=1) то відбувається перехід на 16 . | 
| 9 | 0100 0000 0010 1010 | AND42 | |
| 10 | 1001 0000 0001 0000 | JZ16 | |
| 11 | 0000 0000 0010 1001 | LOAD41 | Завантаження другого доданка в акумулятор. Відбувається перетворення його у доповняльний модифікований код ізапис назад до 41-ї комірки | 
| 12 | 0111 0000 0000 0000 | NOT | |
| 13 | 0010 0000 0010 1011 | ADD43 | |
| 14 | 0101 0000 0010 1010 | OR42 | |
| 15 | 0001 0000 0010 1001 | STORE41 | |
| 16 | 0000 0000 0010 1000 | LOAD40 | Додавання “А” і “B” в модифікованих кодах. Запис результату у 44 ту комірку. | 
| 17 | 0010 0000 0010 1001 | ADD41 | |
| 18 | 0001 0000 0010 1100 | STORE44 | |
| 19 | 0100 0000 0010 1010 | AND42 | Перевірка знаку результату. Якщо (Z=0) це означає, що число додатне ми переходимо на 33. Програма виконана. | 
| 20 | 1001 0000 0010 0001 | JZ28 | |
| 21 | 0000 0000 0010 1100 | LOAD44 | Завантаження “S” до акумулятора. Даними кроками ми перевіряємо чи не вийшло в результаті додавання від’ємного числа (тобто чи у знакових розрядах є 11). якщо виявляється від’ємне число переходим на 33. Програма виконана. | 
| 22 | 0100 0000 0010 1010 | AND42 | |
| 23 | 0011 0000 0010 1010 | SUB42 | |
| 24 | 1001 0000 0001 1011 | JZ33 | |
| 25 | 0000 0000 0010 1101 | LOAD45 | Завантаження ознаки переповнення | 
| 26 | 0001 0000 0010 1100 | STORE44 | Запис ознаки переповнення розрядної сітки процесора до 44-ї | 
| 27 | 1110 0000 0010 0001 | JMP33 | Безумовний перехід на кінець виконання програми. Результат неправильний | 
| 28 | 0000 0000 0010 1100 | LOAD44 | Завантаження суми S=А+В Перетворення у прямий код. Та запис результату. 
 | 
| 29 | 0111 0000 0000 0000 | NOT | |
| 30 | 0010 0000 0010 1011 | ADD43 | |
| 31 | 0101 0000 0010 1010 | OR42 | |
| 32 | 0001 0000 0010 1100 | STORE44 | |
| 33 | 
 | HALT | Кінець виконання програми. | 
- 
Виконати дослідження програми, розробленої у пункті 2, у покроковому режимі. 
Виконання:
Виконую дослідження програми, розробленої у пункті 2, у покроковому режимі.
| № | РФ | РД | А | РІ | ЛАІ | РО | 
|  | 0000 0010 1000 | 0000 0000 0000 1010 | 0000 0000 0000 1010 | 0000 0000 0010 1000 | 0000 0000 0001 | 000 | 
|  | 0000 0010 1010 | 1100 0000 0000 0000 | 0000 0000 0000 0000 | 0100 0000 0010 1010 | 0000 0000 0010 | 100 | 
|  | 0000 0000 0010 | 1001 0000 0000 1000 | 1001 0000 0000 1000 | 1001 0000 0000 1000 | 0000 0000 1000 | 100 | 
|  | 0000 0010 1001 | 1100 0000 0000 1001 | 1100 0000 0000 1001 | 0000 0000 0010 1001 | 0000 0000 1001 | 100 | 
|  | 0000 0010 1010 | 1100 0000 0000 0000 | 1100 0000 0000 0000 | 0100 000 0010 1010 | 0000 0000 1010 | 010 | 
|  | 0000 0000 1010 | 1001 0000 0001 0000 | 1100 0000 0000 0000 | 1001 0000 0001 0000 | 0000 0000 1011 | 010 | 
|  | 0000 0010 1001 | 1100 0000 0000 1001 | 1100 0000 0000 1001 | 0000 0000 0010 1001 | 0000 0000 1100 | 010 | 
|  | 0000 0000 1100 | 0111 0000 0000 0000 | 0011 1111 1111 0110 | 0111 0000 0000 0000 | 0000 0000 1101 | 000 | 
|  | 0000 0010 1011 | 0000 0000 0000 0001 | 0011 1111 1111 0111 | 0010 0000 0010 1011 | 0000 0000 1110 | 000 | 
|  | 0000 0010 1010 | 1100 0000 0000 0000 | 1111 1111 1111 0111 | 0101 0000 0010 1010 | 0000 0000 1111 | 010 | 
|  | 0000 0010 1001 | 1111 1111 1111 0111 | 1111 1111 1111 0111 | 0001 0000 0010 1001 | 0000 0001 0000 | 010 | 
|  | 0000 0010 1000 | 0000 0000 0000 1010 | 0000 0000 0000 1010 | 0000 0000 0010 1000 | 0000 0001 0001 | 010 | 
|  | 0000 0010 1001 | 1111 1111 1111 0111 | 0000 0000 0000 0001 | 0010 0000 0010 1001 | 0000 0001 0010 | 001 | 
|  | 0000 0010 1100 | 0000 0000 0000 0001 | 0000 0000 0000 0001 | 0001 0000 0010 1100 | 0000 0001 0010 | 001 | 
|  | 0000 0010 1010 | 1100 0000 0000 0000 | 0000 0000 0000 0000 | 0100 0000 0010 1010 | 0000 0001 0100 | 100 | 
|  | 0000 0001 0100 | 10001 0000 0010 0001 | 0000 0000 0000 0000 | 1001 0000 0010 0001 | 0000 0010 0001 | 100 | 
|  | 0000 0010 0001 | 0111 1100 0000 0000 | 0000 0000 0000 0000 | 0111 1100 0000 0000 | 0000 0010 0001 | 100 | 
- 
Розробити алгоритм і написати програму множення довільних двійкових чисел без знаку. Варіант виконання вибрати з таблиці: 
Виконання:
Розробити алгоритм і написати програму множення довільних двійкових чисел без знаку.
Мій варіант 10
Алгоритм розв’язування завдання.
Інформація про вхідні дані
| Адреса комірки пам’яті у десятковому коді | Дані в двійковому вигляді | Позначення змінної в алгоритмі | Інформація про вхідні дані та призначення комірок, що використовуються. | 
| 17 | 0000 0000 0000 1010 | A | Змінна “А” зберігається в 1710 комірці пам’яті і має початкове значення 1010. В програмі змінна виступає множеним. | 
| 18 | 0000 0000 0000 1010 | B | Змінна “В” зберігається в 1810 комірці пам’яті і має початкове значення 1010. В програмі змінна виступає множником. | 
| 19 | 0000 0000 0000 0000 | DP | Змінна “DP” зберігається в 1910 комірці пам’яті і має початкове значення 010. В програмі змінна служить для збереження проміжного результату множення. | 
| 20 | 0000 0000 0000 0001 | М | Змінна ”М” зберігається в 2010 комірці пам’яті і має початкове значення 110. В алгоритмі змінна є маскою. Викор.для виявлення «0» або «1» | 
| 22 | 0000 0000 0000 0000 | S | Добуток | 
| дреса комірки пам’яті | Код інструкції (двійковий) | Мнемонічний формат інструкції | Коментар | 
| 0 | 0000 0000 0001 0000 | LOAD16 | Завантаження А до акумулятора. | 
| 1 | 0001 0000 0001 0010 | STORE18 | Запис А до 18-ї комірки.(ДП=А) | 
| 2 | 0000 0000 0001 0001 | LOAD17 | Завантаження В до акумулятора. | 
| 3 | 0100 0000 0001 0011 | AND19 | Перевірка розряду множника (1 чи 0) | 
| 4 | 1001 0000 0000 1000 | JZ8 | |
| 5 | 0000 0000 0001 0010 | LOAD18 | Завантаження ДП до аккумулятора | 
| 6 | 0010 0000 0001 0100 | ADD20 | ДП+S | 
| 7 | 0001 0000 0001 0100 | STORE20 | Запис нового значення S | 
| 8 | 0000 0000 0001 0010 | LOAD18 | Завантаження В до Акумулятора | 
| 9 | 1111 1110 0000 0000 | RCL | Циклічний зсув числа В вліво через С | 
| 10 | 0001 0000 0001 0010 | STORE18 | Запис нового значення В | 
| 11 | 0000 0000 0001 0011 | LOAD19 | Завантаження маски | 
| 12 | 1111 1110 0000 0000 | RCL | Зсув маски вліво | 
| 13 | 0001 0000 0001 0011 | STORE19 | Запис нового значення маски | 
| 14 | 1100 0000 0000 0010 | JNC2 | Перевірка чи не сталося переповнення розрядної сітки | 
| 15 | 0111 1100 0000 0000 | HALT | Зупинка виконання програми | 
Висновок: на цій лаболаторні роботі я вивчив форми подання і застосування додатних та від’ємних чисел у арифметиці з фіксованою комою; навчився розробляти алгоритми і здійснювати їх реалізацію у інструкціях процесора навчального комп'ютера DeComp виконання арифметичних операцій додавання та віднімання над двійковими числами з фіксованою комою у модифікованих кодах; навчився розробляти алгоритми і здійснювати їх реалізацію у інструкціях процесора навчального комп'ютера DeComp виконання арифметичної операції множення двійкових чисел без знаку.
