 
        
        звіт лаб6
.docМіністерство науки і освіти України
Технічний коледж національного університету
«Львівська політехніка»
ЗВІТ
з лабораторної роботи №6
З предмету архітектура комп’ютера
Виконав: студент групи 31-КІ
Мартинюк Р.
Прийняв:
Чистяк В. І.
Львів - 2020
Мета роботи:
- 
Ознайомитися з поданням чисел у нормальній формі. Засвоїти порядок нормалізації чисел з рухомою комою. Ознайомитися з поняттям “характеристика” для чисел з рухомою комою. 
- 
Вивчити правила додавання (віднімання) двійкових чисел з рухомою комою. 
- 
Розробити алгоритми і програми додавання чисел в арифметиці з рухомою комою в інструкціях навчального комп'.ютера - симулятора DeComp. 
Хід виконання роботи
- 
Розробити алгоритм і написати програму додавання довільних (додатних і від’ємних) двійкових чисел із рухомою комою у модифікованому доповнювальному коді в інструкціях симулятора DeComp. Числа подаються у форматі: 
| Знак порядку | Знак мантиси | Порядок | Мантиса | 
| 2 розряди | 2 розряди | 4 розряди | 8 розрядів | 
У алгоритмі передбачити аналіз отриманого результату на:
- 
переповнення розрядної сітки (порушення нормалізації вліво); 
- 
наявність порушення нормалізації вправо; 
- 
від'ємний результат 
Передбачити відповідні заходи з корекції результату.
Блок схема алгоритму:
 
 
 
 

 
	 
	Так 
	Ні
 
	 
	Перевести
	у доповняльний код
 
 
 
	Ні


 
	
 
	Так
 
	
	 
	Перевести
	у доповняльний код
 
	 
	Додавання
	порядків у доповняльному коді
 

 
	 
	Так

 
	 
	Ні
 
	 
	Так

 
	 
	Ні
	 
	Від
	порядку числа A
	відняти порядок числа В
 
 
	 
	Ні

 

 
	 
	Так 
	Збільшити
	порядок числа В
	на 1, зсув мантиси вправо 
 
	
	 
	Збільшити
	порядок числа А
	на 1, зсунути мантису вправо
 
	Ні 
	 
 
	Ні 
	
 
 
	Так 
	
	 
	Так 
 
 
	 
	Ні

 
	 
	Так 


 
 
	Перевід
	числа у доповняльний код 
	 
 
 
 
 
 
 
 
	Ні 
	

 
	 
	Так
	 
	Перевід
	числа у доповняльний код
 
 
	Додавання
	чисел А
	та В 
	
 
 
	 
	Ні

 
	 
	Так
	 
	Зсув
	результату вправо, збільшення порядку
	на 1
 
 
 
	Ні 
	

 
	 
	Так
	 
	Перевід
	у прямий код
 

 
 
	Ні 
	Зсув
	мантиси вліво, зменшення порядку на 1 
	
 
	 
	Так
 


 
Після створення алгоритму, я приступаю до написання коду. Перед виконанням програми виконую таку підготовку:
Комірка 010 – число А = 0,11002*1011 → А = (0000 0011 0000 11002)
Комірка 110 – число В = -0,10002*1010 → В = (0011 0010 0000 10002)
Комірка 210 – число (0000 0000 0000 00012) - маска. Допомагає переводити у модифікований доповняльний код мантису.
Комірка 310 – число (1100 0000 0000 00002) - маска .Слугує для визначення знаку мантис А та В.
Комірка 410 – число (0011 0000 0000 00002) - маска ,служить для Слугує для визначення знаку порядків .
Комірка 510 – число (0000 0000 1000 00002) – маска. Допомагає переводити у модифікований доповняльний код порядок.
Комірка 610 – число (0000 0000 1111 11112) – маска. Слугує для відокремлення мантис без знаку.
Комірка 710 – число (1111 1111 0000 00002) – маска. Слугує для відокремлення порядку.
Комірка 810 – число (0000 0000 0000 00002)
Комірка 910 – число (1111 0000 1111 11112) – маска . Слугує для відокремлення знаків і мантиси від порядку.
Комірка 1010 – число (0000 1111 0000 00002) – маска. Слугує для відокремлення порядку без знаку.
Комірка 1110 – число (1100 1111 0000 00002) – маска. Слугує для відокремлення порядку зі знаком.
Комірка 1210 – число (0011 0000 1111 11112) – маска. Слугує для відокремлення мантис зі знаком.
Комірка 1310 – число (0011 1111 1111 11112) – маска. Слугує для відокремлення мантиси із знаком і порядку без знаку зі знаком.
Комірка 1410 – число (0000 1111 1111 11112) – маска. Слугує для відокремлення мантиси і порядку без знаків.
Комірка 1510 – число (0000 0000 0000 00002)
Комірка 1610 – число (0000 0000 0000 00002)
Комірка 1710 – число (0000 0000 0000 00002)
Комірка 1810 – число (0000 0001 0000 00002) маска. Перевіряє чи є порушення нормалізаці вліво
| Адреса комірки пам’яті | Код інструкції (двійковий) | Мнемонічний формат інструкції | Коментар інструкцій, що відповідають блокам алгоритму програми | 
| 19 | 0000 0000 0000 0000 | LOAD 0 | Перевірка чи порядок числа А від’ємний, якщо так то ми його переводимо в доповняльний код | 
| 20 | 1010 0000 0011 1011 | AND 9 | |
| 21 | 0100 0000 0000 1001 | STORE 199 | |
| 22 | 0001 0000 0110 0110 | JP 30 | |
| 23 | 0000 0000 0000 1000 | LOAD 0 | 
 | 
| 24 | 0100 0000 0000 1010 | AND 10 | |
| 25 | 0010 0000 0000 1001 | ADD 9 | |
| 26 | 0111 0000 0000 0000 | NOT | |
| 27 | 0010 0000 0001 0010 | ADD 18 | |
| 28 | 0010 0000 1100 0111 | ADD 199 | |
| 29 | 0001 0000 0000 0000 | STORE 0 | |
| 30 | 0000 0000 0000 0001 | LOAD 1 | Перевірка чи порядок числа В від’ємний, якщо так то ми його переводимо в доповняльний код | 
| 31 | 1010 0000 0100 0110 | JP 41 | |
| 32 | 0100 0000 0000 1001 | AND 9 | |
| 33 | 0001 0000 1100 0111 | STORE 199 | |
| 34 | 0000 0000 0000 0001 | LOAD 1 | |
| 35 | 0100 0000 0000 1010 | AND 10 | |
| 36 | 0010 0000 0000 1001 | ADD 9 | |
| 37 | 0111 0000 0000 0000 | NOT | |
| 38 | 0010 0000 0001 0010 | ADD 18 | |
| 39 | 0010 0000 1100 0111 | ADD 199 | |
| 40 | 0001 0000 0000 0001 | STORE 1 | |
| 41 | 0000 0000 0000 0000 | LOAD 0 | Додавання порядків у модифікованому доповняльному коді | 
| 42 | 0100 0000 0000 1011 | AND 11 | |
| 43 | 0001 0000 1100 1000 | STORE 200 | |
| 44 | 0000 0000 0000 0001 | LOAD 1 | |
| 45 | 0100 0000 0000 1011 | AND 11 | |
| 46 | 0010 0000 110 1000 | ADD 200 | |
| 47 | 1101 0000 1110 0011 | JC 198 | Перевірка, чи відбулось переповнення розрядної сітки, якщо так, то результат втрачено | 
| 48 | 0000 0000 0000 0000 | LOAD 0 | Від першого порядку віднімаємо другий порядок | 
| 49 | 0100 0000 000 1011 | AND 11 | |
| 50 | 0001 0000 1100 1001 | STOR 201 | |
| 51 | 0000 0000 0000 0001 | LOAD 1 | |
| 52 | 0100 0000 0000 1011 | AND 11 | |
| 53 | 0011 0000 1100 1001 | SUB 201 | |
| 54 | 1001 0000 0111 0011 | JZ 86 | |
| 55 | 1101 0000 0110 0100 | JC 71 | |
| 56 | 0000 0000 0000 0001 | LOAD 1 | Якщо результат від’ємний, то збільшуємо порядок числа В на 1, та робимо зсув мантиси вправо | 
| 57 | 0100 0000 0000 1011 | AND 11 | |
| 58 | 0010 0000 0001 0010 | ADD 18 | |
| 59 | 0001 0000 1100 1010 | STORE 202 | |
| 60 | 0000 0000 0000 0001 | LOAD 1 | |
| 61 | 0100 0000 0000 0100 | AND 4 | |
| 62 | 0001 0000 1100 1011 | STORE 203 | |
| 63 | 0000 0000 0000 0001 | 
				 | |
| 64 | 0100 0000 0000 0110 | AND 6 | |
| 65 | 1111 0010 0000 0000 | LSR | 
 | 
| 66 | 0010 0000 1100 1010 | ADD 202 | |
| 67 | 0010 0000 1100 1011 | ADD 203 | |
| 68 | 0001 0000 0000 0001 | STORE 1 | |
| 69 | 0011 0000 0000 0001 | SUB 1 | |
| 70 | 1001 0000 0101 0000 | JZ 61 | |
| 71 | 0000 0000 0000 0100 | LOAD 8 | Якщо результат додатній, то збільшуємо порядок числа А на 1, та робимо зсув мантиси вправо | 
| 72 | 0100 0000 0000 1011 | AND 11 | |
| 73 | 0010 0000 0001 0010 | ADD 18 | |
| 74 | 0001 0000 1100 1010 | STORE 202 | |
| 75 | 0000 0000 0000 0000 | LOAD 0 | |
| 76 | 0100 0000 0000 0100 | AND 4 | |
| 77 | 0001 0000 1100 1011 | STORE 203 | |
| 78 | 0000 0000 0000 0000 | LOAD 0 | |
| 79 | 0100 0000 0000 0110 | AND 6 | |
| 80 | 1111 0010 0000 0000 | LSR | |
| 81 | 0010 0000 1100 1010 | ADD 202 | |
| 82 | 0010 0000 1100 1011 | ADD 203 | |
| 83 | 0001 0000 0000 0000 | STORE 0 | |
| 84 | 0011 0000 0000 0000 | SUB 0 | |
| 85 | 1001 0000 0100 1001 | JZ 48 | |
| 86 | 0000 0000 0000 1000 | LOAD 0 | Перевірка чи число А від’ємне, якщо так, то перевід числа у модифікований доповняльний код | 
| 87 | 1111 0000 0000 0000 | LSL | |
| 88 | 1111 0000 0000 0000 | LSL | |
| 89 | 1010 0000 0111 1111 | JP 98 | |
| 90 | 0000 0000 0000 1000 | LOAD 0 | |
| 91 | 0100 0000 0000 0111 | AND 7 | |
| 92 | 0001 0000 1100 1100 | STORE 204 | |
| 93 | 0000 0000 0000 0000 | LOAD 0 | |
| 94 | 0100 0000 0000 0000 | AND 6 | |
| 95 | 0111 0000 0000 0000 | NOT | |
| 96 | 0010 0000 0000 0010 | ADD 2 | |
| 97 | 0010 0000 1100 1100 | ADD 204 | |
| 98 | 0000 0000 0000 0001 | LOAD 1 | Перевірка чи число В від’ємне, якщо так, то перевід числа у модифікований доповняльний код | 
| 99 | 1111 0000 0000 0000 | LSL | |
| 100 | 1111 0000 0000 0000 | LSL | |
| 101 | 1010 0000 1000 1101 | JP 105 | |
| 102 | 0000 0000 0000 0001 | LOAD 1 | |
| 103 | 0100 0000 0000 0111 | AND 7 | |
| 104 | 0001 0000 1100 1100 | STORE 204 | |
| 105 | 0000 0000 0000 0001 | 
				 | |
| 106 | 0100 0000 0000 0110 | AND 6 | |
| 107 | 0111 0000 0000 0000 | NOT | 
 | 
| 108 | 0010 0000 0000 0010 | ADD 2 | |
| 109 | 0010 0000 1100 1100 | ADD 204 | |
| 110 | 0100 0000 0000 1100 | AND 12 | |
| 111 | 0001 0000 1100 1101 | STORE 205 | |
| 112 | 0000 0000 0000 0000 | LOAD 0 | Додавання чисел А та В у модифікованому доповняльному коді | 
| 113 | 0100 0000 0000 1100 | AND 12 | |
| 114 | 1111 0000 0000 0000 | LSL | |
| 115 | 1111 0000 0000 0000 | LSL | |
| 116 | 0001 0000 1100 1110 | STORE 109 | |
| 117 | 0100 0000 0000 0011 | AND 3 | |
| 118 | 0001 0000 1100 1111 | STORE 207 | |
| 119 | 0000 0000 1100 1110 | LOAD 206 | |
| 120 | 0100 0000 0000 1101 | AND 13 | |
| 121 | 1111 0000 0000 0000 | LSL | |
| 122 | 1111 0000 0000 0000 | LSL | |
| 123 | 1111 0000 0000 0000 | LSL | |
| 124 | 1111 0000 0000 0000 | LSL | |
| 125 | 0010 0000 1100 1111 | ADD 207 | |
| 126 | 0001 0000 1101 0000 | STORE 208 | |
| 127 | 0000 0000 0000 0001 | LOAD 1 | |
| 128 | 0100 0000 0000 1100 | AND 12 | |
| 129 | 1111 0000 0000 0000 | LSL | |
| 130 | 1111 0000 0000 0000 | LSL | |
| 131 | 0001 0000 110 1110 | STORE 206 | |
| 132 | 0100 0000 0000 0011 | AND 3 | |
| 133 | 0001 0000 1100 1111 | STORE 207 | |
| 134 | 0000 0000 1100 1110 | LOAD 206 | |
| 135 | 0100 0000 0000 1101 | AND 13 | |
| 136 | 1111 0000 0000 0000 | LSL | |
| 137 | 1111 0000 0000 0000 | LSL | |
| 138 | 1111 0000 0000 0000 | LSL | |
| 139 | 1111 0000 0000 0000 | LSL | |
| 140 | 0010 0000 0110 1110 | ADD 207 | |
| 141 | 0010 0000 1101 0000 | ADD 208 | |
| 142 | 1100 0000 1011 1111 | JNC 149 | Перевірка чи відбулося переповнення розрядної сітки. | 
| 143 | 1111 0010 0000 0000 | LSR | |
| 144 | 1111 0010 0000 0000 | LSR | |
| 145 | 1111 0010 0000 0000 | LSR | |
| 146 | 0001 0000 1101 0001 | STORE 209 | |
| 147 | 0100 0000 0000 0100 | 
				 | |
| 148 | 0001 0000 1101 0010 | STORE 210 | |
| 149 | 0000 0000 1101 0001 | LOAD 209 | Якщо так, то зсув результату вправо, збільшення порядку на 1. | 
| 150 | 0100 0000 0000 1110 | AND 14 | |
| 151 | 1111 0010 0000 0000 | LSR | |
| 152 | 1111 0010 0000 0000 | LSR | |
| 153 | 1111 0010 0000 0000 | LSR | |
| 154 | 1111 0010 0000 0000 | LSR | |
| 155 | 0010 0000 1101 0010 | ADD 210 | |
| 156 | 0001 0000 1101 0010 | STORE 210 | |
| 157 | 0000 0000 1101 0000 | LOAD 208 | |
| 158 | 0100 0000 0000 0011 | AND 3 | |
| 159 | 0010 0000 0000 1010 | ADD 10 | |
| 160 | 0010 0000 1101 0010 | ADD 210 | |
| 161 | 0001 0000 1101 0010 | STORE 210 | |
| 162 | 0000 0000 1101 0010 | LOAD 210 | Перевірка чи результат від’ємний, якщо так то перевід у прямий код. | 
| 163 | 1111 1000 0000 0000 | ROL | |
| 164 | 1111 1000 0000 0000 | ROL | |
| 165 | 1101 0000 1100 1101 | JS 205 | |
| 166 | 0001 0000 1101 0011 | STORE 211 | |
| 167 | 0100 0000 0000 0111 | AND 7 | |
| 168 | 0001 0000 1101 0100 | STORE 212 | |
| 169 | 0000 0000 1101 0011 | LOAD 211 | |
| 170 | 0100 0000 0000 0110 | AND 6 | |
| 171 | 0100 0000 0000 0111 | ADD7 | |
| 172 | 0111 0000 0000 0000 | NOT | |
| 173 | 0100 0000 0000 0010 | ADD 2 | |
| 174 | 0010 0000 1101 0010 | ADD 212 | |
| 175 | 0001 0000 0000 1111 | STORE 15 | |
| 176 | 0000 0000 0000 1111 | LOAD 15 | Перевірка чи нормалізоване число. | 
| 177 | 0100 0000 0000 0101 | AND 5 | |
| 178 | 0011 0000 0000 0101 | SUB 5 | |
| 179 | 1001 0000 1110 0011 | JZ 187 | |
| 180 | 0000 0000 0000 0101 | LOAD 5 | |
| 181 | 0100 0000 0000 0110 | AND 6 | |
| 182 | 1111 0000 0000 0000 | LSL | |
| 183 | 0001 0000 0001 000 | STORE 16 | |
| 184 | 0000 0000 001 0001 | LOAD 17 | |
| 185 | 0010 0000 0001 0010 | ADD 18 | |
| 186 | 0001 0000 0001 0001 | STORE 17 | |
| 187 | 0000 0000 0001 0000 | LOAD 16 | |
| 188 | 0100 0000 0000 0101 | AND 5 | |
| 189 | 0011 0000 0000 0101 | SUB 5 | |
| 190 | 1001 0000 1101 1110 | JZ 193 | |
| 191 | 0000 0000 0001 0000 | LOAD 16 | Якщо ні, то зсув мантиси вліво, зменшення порядку на 1. | 
| 192 | 1010 0000 1101 0011 | JP 182 | |
| 193 | 0000 0000 0000 1111 | LOAD 15 | |
| 194 | 0100 0000 0000 0111 | AND 7 | |
| 195 | 0010 0000 0001 0000 | ADD 16 | |
| 196 | 0011 0000 0001 0010 | SUB 18 | |
| 197 | 0001 0000 0000 1111 | STORE 15 | |
| 198 | 0111 1100 0000 0000 | HALT | Зупинка процесора | 

 LOAD
				1
LOAD
				1 LOAD
				1
LOAD
				1 AND
				4
AND
				4