- •Мета роботи:
- •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 |
-
Розробити алгоритм і написати програму множення довільних двійкових чисел без знаку. Варіант виконання вибрати з таблиці:
Виконання:
Розробити алгоритм і написати програму множення довільних двійкових чисел без знаку.
Мій варіант 14.
Алгоритм розв’язування завдання.
Інформація про вхідні дані
Адреса комірки пам’яті у десятковому коді |
Дані в двійковому вигляді |
Позначення змінної в алгоритмі |
Інформація про вхідні дані та призначення комірок, що використовуються. |
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 |
Зупинка виконання програми |
-
Виконати дослідження програми, розробленої у пункті 4, у покроковому режимі.
Висновок: на цій лаболаторні роботі я вивчив форми подання і застосування додатних та від’ємних чисел у арифметиці з фіксованою комою; навчився розробляти алгоритми і здійснювати їх реалізацію у інструкціях процесора навчального комп'ютера DeComp виконання арифметичних операцій додавання та віднімання над двійковими числами з фіксованою комою у модифікованих кодах; навчився розробляти алгоритми і здійснювати їх реалізацію у інструкціях процесора навчального комп'ютера DeComp виконання арифметичної операції множення двійкових чисел без знаку.