- •Мета роботи:
 - •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 виконання арифметичної операції множення двійкових чисел без знаку.
