- •Теоретичні відомості
- •1.1. Додавання і віднімання двійкових чисел з фіксованою комою
- •1.2. Додавання двійкових чисел у модифікованому доповняльному коді
- •1.3. Додавання двійкових чисел у модифікованому оберненому коді
- •1.4. Переповнення розрядної сітки при додаванні у модифікованих машинних кодах
- •1.5. Множення двійкових чисел без знаку
- •Хід виконання роботи
- •Результат дослідження
- •Результат дослідження
Результат дослідження
№ |
РА |
РД |
А |
РІ |
ЛАІ |
РО |
1 |
0000 0001 0111 |
0000 0000 0000 1010 |
0000 0000 0000 1010 |
0000 0000 0001 0111 |
0000 0000 0001 |
000 |
2 |
0000 0001 1011 |
0000 0000 0000 0000 |
0000 0000 0000 1010 |
0010 0000 0001 1011 |
0000 0000 0010 |
000 |
3 |
0000 0000 0010 |
1010 0000 0000 0111 |
0000 0000 0000 1010 |
1010 0000 0000 0111 |
0000 0000 0111 |
000 |
4 |
0000 0001 1000 |
1100 0000 0000 1001 |
1100 0000 0000 1001 |
0000 0000 0001 1000 |
0000 0000 0001 |
000 |
5 |
0000 0001 1011 |
0000 0000 0000 0000 |
11000 0000 0000 1001 |
00010 0000 0001 1011 |
0000 0000 1001 |
010 |
6 |
0000 0000 1001 |
1010 0000 0000 1110 |
1100 0000 0000 1001 |
1010 0000 0000 1110 |
0000 0000 1010 |
010 |
7 |
0000 0001 1010 |
1100 0000 0000 0000 |
0000 0000 0000 1001 |
0110 0000 0001 1010 |
0000 0000 1011 |
000 |
8 |
0000 0000 1011 |
0111 0000 0000 0000 |
1111 1111 1111 0110 |
0111 0000 0000 000 |
0000 0000 1100 |
010 |
9 |
0000 0001 1001 |
0000 0000 0000 0001 |
1111 1111 1111 0111 |
0010 0000 0001 1001 |
0000 0000 1101 |
010 |
10 |
0000 0001 1000 |
1111 1111 1111 0111 |
1111 1111 1111 0111 |
0001 0000 0001 1000 |
0000 0000 1110 |
010 |
11 |
0000 0001 0111 |
0000 0000 0000 1010 |
0000 0000 0000 1010 |
0000 0000 0001 0111 |
0000 0000 1111 |
010 |
12 |
0000 0001 1000 |
1111 1111 1111 0111 |
0000 0000 0000 0001 |
0010 0000 0001 1000 |
0000 0001 0000 |
001 |
13 |
0000 0001 1100 |
0000 0000 0000 0001 |
0000 0000 0000 0001 |
0001 0000 0001 1100 |
0000 0001 0001 |
001 |
14 |
0000 0001 0110 |
0111 1100 0000 0000 |
0111 1100 0000 0001 |
0101 0000 0001 0110 |
0000 0001 0010 |
001 |
15 |
0000 0001 0010 |
0111 0000 0000 0000 |
1000 0011 1111 1110 |
0111 0000 0000 0000 |
0000 0001 0011 |
010 |
Після виконання програми значення 28-ої комірки змінилось на 1111 1111 1111 01112, тобто число В у доповняльному модифікованому коді, в комірці 31 встановилось значення
0000 0000 0000 00012, тобто двійковий результат додавання десяткових чисел 1010 і -910.
4. Розробити алгоритм і написати програму множення довільних двійкових чисел без знаку.
Блок-схема алгоритму:
Інформація про вхідні дані і їх попереднє розташування у комірках пам’яті:
Вхідними даними будуть числа A і B, які розташовуватимуться у 20-ій і 21-ій комірках пам’яті відповідно. Змінна А є множеним і дорівнює десятковому числу 12210, яке у двійковому поданні дорівнює 0000 0000 0111 10102. Змінна B є множником і дорівнює десятковому числу 4310, яке у двійковому поданні дорівнює 0000 0000 0010 10112.
Призначення комірок що використовуються:
Для роботи програми використовується 22-а, 23-а, 24-а комірка пам’яті. У 24-ій комірці записано двійковий код десяткового числа 110, що необхідна для зменшення лічильника циклу, а також для інкременту лічильника кількості одиниць у вхідному числі. У 23-ій комірці записано двійковий код 0000 0000 0001 00002, що відіграє роль лічильника циклів. У 22-ій комірці записано двійковий код десяткового числа 010. Ця змінна необхідна для збереження результату множення.
Текст програми:
Адреса
|
Двійковий код інструкції |
Мнемонічний код |
Коментар |
0 |
0000 0000 0001 0100 |
LOAD 20 |
Зсув множеного вправо і збереження. |
1 |
1111 1010 0000 0000 |
ROR |
|
2 |
0001 0000 0001 0100 |
STORE 20 |
|
3 |
0000 0000 0001 0101 |
LOAD 21 |
Зсув множника вліво через ознаку С і збереження. |
4 |
1111 1100 0000 0000 |
RCL |
|
5 |
0001 0000 0001 0101 |
STORE 20 |
|
6 |
1100 0000 0000 1010 |
JNC 10 |
Якщо С = 0, додавання множеного до результату пропускається. |
7 |
0000 0000 0001 0110 |
LOAD 22 |
Додавання проміжного доданку до результату. |
8 |
0010 0000 0001 0100 |
ADD 20 |
|
9 |
0001 0000 0001 0110 |
STORE 22 |
|
10 |
0000 0000 0001 0111 |
LOAD 23 |
Зменшення лічильника циклів на 1. |
11 |
0011 0000 0001 1000 |
SUB 24 |
|
12 |
0001 0000 0001 0111 |
STORE 23 |
|
13 |
1000 0000 0000 0000 |
JNZ 0 |
Якщо K не 0, то виконується цикл з 0 комірки. |
14 |
0111 1100 0000 0000 |
HALT |
Зупинка програми |
-
Виконати дослідження програми, розробленої у пункті 4, у покроковому режимі.
Програма протягом своєї роботи повертається в початок , таким чином у неї умовні блоки будуть майже аналогічні, відмінність буде лише тоді, коли при зсуві множника 1 потрапляє в ознаку С, тоді крім операцій зсуву множника і множеного буде присутня операція додавання проміжного доданку.