 
        
        2. Порядок роботи:
- 
Розробити алгоритм і написати програму додавання довільних (додатних і від’ємних) двійкових чисел із рухомою комою у модифікованому доповнювальному коді в інструкціях симулятора DeComp. Числа подаються у форматі: 
| Знак порядку | Знак мантиси | Порядок | Мантиса | 
| 2 розряди | 2 розряди | 4 розряди | 8 розрядів | 
У алгоритмі передбачити аналіз отриманого результату на:
- 
переповнення розрядної сітки (порушення нормалізації вліво); 
- 
наявність порушення нормалізації вправо; 
- 
від'ємний результат 
Передбачити відповідні заходи з корекції результату
Виконання:
Інформація про вхідні дані:
- 
	Адреса комірки Дані в двійковому коді Позначення змінної в алгоритмі Інформація про вхідні дані та призначення комірок, що використовуються. 300 1100 0101 1101 0000 А A перший доданок. А=-0,1101101(У декомпі А=1100 0101, 1101 0000) знаходиться у 300-й комірці 301 0000 0011 1100 0000 В Число В – другий доданок. В=0,1100011 (У деком пі В=0000 0011, 1100 0000) знаходиться у 301-й комірці 302 1100 0000 0000 0000 М1 Число М1 – маска. Слугує для визначення знаку мантис А та В. 303 0011 0000 0000 0000 М2 Число М2 – маска. Слугує для визначення знаку порядків А та В. 304 1100 0000 1111 1111 М3 Число М3 – маска. Слугує для відокремлення мантис А та В зі знаком. 305 0011 1111 0000 0000 М4 Число М4 – маска. Слугує для відокремлення порядку А і В зі знаком 306 0000 1111 0000 0000 М5 Число М5 – маска. Слугує для відокремлення порядку без знаку 307 0000 0001 0000 0000 М6 Число М6 – маска. Допомагає переводити у модифікований доповняльний код порядок 308 0000 0000 0000 0001 М7 Число М7 – маска. Допомагає переводити у модифікований доповняльний код мантису 309 0000 0000 1000 0000 М8 Число М7 – маска. Перевіряє чи є порушення нормалізаці вліво 310 0000 0000 0000 0000 REZ Результат додавання А і В 311 0000 0000 0000 0000 MA Мантиса А 312 0000 0000 0000 0000 MB Мантиса В 313 0000 0000 0000 0000 PA Порядок А 314 0000 0000 0000 0000 PB Порядок В 315 0000 0000 0000 0000 PAM Порядок А у доп.мод коді 316 0000 0000 0000 0000 PBM Порядок В у доп.мод коді 317 0000 0000 0000 0000 SPP Різниця порядків 318 0000 0000 0000 0000 M Проміжне значення мантиси 319 0000 0000 0000 0000 MM Остаточне Значення мантии 320 0000 0000 0000 0000 P Остаточне значення порядку REZ 
Код програми:
- 
	дреса комірки пам’яті Код інструкції (двійковий) Мнемонічний формат інструкції Коментар 0 0000 0001 0010 1100 LOAD 300 Виділення мантиси А зі знаком (МА) 1 0100 0001 0011 0000 AND 304 2 0001 0001 0011 0111 STORE 311 3 0000 0001 0010 1101 LOAD 301 Виділення мантиси В зі знаком (МВ) 4 0100 0001 0011 0000 AND 304 5 0001 0001 0011 1000 STORE 312 6 0000 0001 0010 1100 LOAD 300 Виділення порядку А зі знаком (РА) 7 0100 0001 0011 0001 AND 305 8 0001 0001 0011 1001 STORE 313 9 0000 0001 0010 1101 LOAD 301 Виділення порядку В зі знаком (РВ) 10 0100 0001 0011 0001 AND 305 11 0001 0001 0011 1010 STORE 314 12 0000 0001 0011 1001 LOAD 313 Перевірка знаку порядку А. Якщо «+»(Z=1) то перехід на 21 ні программа виконується дальше. 13 0100 0001 0010 1111 AND 303 14 1001 0000 0001 0101 JZ 21 15 0000 0001 0011 1001 LOAD 313 Переведення РА у доп.мод код. Запис РАМ. Перехід на 23. 16 0111 0000 0000 0000 NOT 17 0101 0001 0010 1111 OR 303 18 0100 0001 0011 0001 AND 305 19 0001 0001 0011 1011 STORE 315 20 1110 0000 0001 0111 JMP 23 21 0000 0001 0011 1001 LOAD 313 Завантаження РА, запис РАМ.(РА=РАМ) 22 0001 0001 0011 1011 STORE 315 23 0000 0001 0010 1101 LOAD 301 Перевірка знаку порядку числа В. Якщо «+»(Z=1) – перехід на 29, «-» - програма виконується дальше. 24 0100 0001 0010 1111 AND 303 25 1001 0000 0001 1101 JZ 29 26 0000 0001 0011 1011 LOAD 315 Знаходження різниці порядків SPP=PA+(-PB). Перехід на 37 27 0010 0001 0011 1010 ADD 314 28 1110 0000 0010 0100 JMP 37 29 0000 0001 0011 1010 LOAD 314 Переведення РВ у доп.мод код. Запис РВМ. 30 0111 0000 0000 0000 NOT 31 0010 0001 0011 0011 ADD 307 32 0101 0001 0010 1111 OR 303 33 0100 0001 0011 0001 AND 305 34 0001 0001 0011 1100 STORE 316 35 0000 0001 0011 1011 LOAD 315 SPP=PAM+PBM 36 0010 0001 0011 1100 ADD 316 37 0001 0001 0011 1101 STORE 317 Запис різниці порядків (SPP) 38 0000 0001 0011 1101 LOAD 317 Перевірка знаку SPP. Якщо «+»(Z=1)- перехід на 63, «-» - програма виконується дальше. 39 0100 0001 0010 1111 AND 303 40 1001 0000 0011 1111 JZ 63 41 0000 0001 0011 1010 LOAD 314 Запис проміжного порядку суми 42 0001 0001 0010 1101 STORE 301 43 0000 0001 0011 1101 LOAD 317 Встановлення кількості зсувів мантиси А (МА) 44 0100 0001 0011 0010 AND 306 45 0001 0001 0011 1101 STORE 317 Запис кількості зсувів МА 46 0000 0001 0011 0111 LOAD 311 Зсув вправо МА. Запис нової МА. 47 1111 1010 0000 0000 ROR 48 0100 0001 0011 0000 AND 304 49 0001 0001 0011 0111 STORE 311 50 0000 0001 0010 1100 LOAD 300 Визначення знаку МА. Якщо «+»(Z=1)- перехід на 56, «-» - програма виконується дальше. 51 0100 0001 0010 1110 AND 302 52 1001 0000 0011 1000 JZ 56 53 0000 0001 0011 0111 LOAD 311 Встановлення знаку МА 54 0101 0001 0010 1110 OR 302 55 0001 0001 0011 0111 STORE 311 56 0000 0001 0011 1101 LOAD 317 Зменшення лічильника зсувів 57 0011 0001 0011 0011 SUB 307 58 1000 0000 0010 1101 JNZ 45 Перевірка якщо Z=0 перехід на 45, якщо Z=1 програма виконується дальше. 59 1110 0000 0110 0001 JMP 97 Перех на 60 0000 0001 0011 1101 LOAD 317 Перевірка чи SPP=0 чи ні 61 0100 0001 0011 0001 AND 305 62 1001 0000 0110 0001 JZ 97 63 0000 0001 0011 1001 LOAD 313 Встановлення проміжного порядку(Р) суми 64 0001 0001 0100 0000 STORE 320 65 0000 0001 0011 1101 LOAD 317 Встановлення кількості зсувів мантиси В (МВ) 66 0100 0001 0011 0010 AND 306 67 0001 0001 0011 1101 STORE 317 68 0000 0001 0011 1000 LOAD 312 Цикл зсуву мантиси числа В. МВ 69 1111 1010 0000 0000 ROR 70 0100 0001 0011 0000 AND 304 71 0001 0001 0011 1000 STORE 312 72 0000 0001 0010 1101 LOAD 301 73 0100 0001 0010 1110 AND 302 74 1001 0000 0100 1110 JZ 78 75 0000 0001 0011 1000 LOAD 312 76 0101 0001 0010 1110 OR 302 77 0001 0001 0011 1000 STORE 312 78 0000 0001 0011 1101 LOAD 317 79 0011 0001 0011 0011 SUB 307 80 1000 0000 0100 0011 JNZ 67 81 0000 0001 0011 0111 LOAD 311 Визначення знаку МА. Якщо «+»(Z=1)- перехід на 89, «-» - програма виконується дальше. 82 0100 0001 0010 1110 AND 302 83 1001 0000 0101 1001 JZ 89 84 0000 0001 0011 0111 LOAD 311 Переведення РА у доп.мод код. Запис РАМ. 85 0111 0000 0000 0000 NOT 86 0010 0001 0011 0100 ADD 308 87 0101 0001 0010 1110 OR 302 88 0001 0001 0011 0111 STORE 311 89 0000 0001 0011 1000 LOAD 312 Визначення знаку МА. Якщо «+»(Z=1)- перехід на 97, «-» - програма виконується дальше. 90 0100 0001 0010 1110 AND 302 91 1001 0000 0110 0001 JZ 97 92 0000 0001 0011 1000 LOAD 312 Переведення РВ у доп.мод код. Запис РВМ. 93 0111 0000 0000 0000 NOT 94 0010 0001 0011 0100 ADD 308 95 0101 0001 0010 1110 OR 302 96 0001 0001 0011 1000 STORE 312 97 0000 0001 0011 0111 LOAD 311 Додавання мантис запис результату (М). 98 0010 0001 0011 1000 ADD 312 99 0001 0001 0011 1110 STORE 318 100 0100 0001 0010 1110 AND 302 Визначення знаку М 101 1001 0000 0110 1011 JZ 107 102 0000 0001 0011 1110 LOAD 318 Переведення М у доп.мод код. Запис М. 103 0111 0000 0000 0000 NOT 104 0010 0001 0011 0100 ADD 308 105 0101 0001 0010 1110 OR 302 106 0001 0001 0011 1110 STORE 318 107 0000 0001 0011 1110 LOAD 318 Перевірка наявності порушення нормалізації вправо. Якщо відсутнє (Z=1)- перехід на 143, присутнє - програма виконується дальше. 108 0100 0001 0011 0011 AND 307 109 1001 0000 1000 1111 JZ 143 110 0000 0001 0011 1110 LOAD 318 Зсув мантиси вправо(виправлення порушення нормалізації вліво) Запис ММ. 111 1111 1010 0000 0000 ROR 112 0100 0001 0011 0000 AND 304 113 0001 0001 0011 1111 STORE 319 114 0000 0001 0011 1110 LOAD 318 Визначення знаку М. Якщо «+»(Z=1)- перехід на 120, «-» - програма виконується дальше. 115 0100 0001 0010 1110 AND 302 116 1001 0000 0111 1000 JZ 120 117 0000 0001 0011 1111 LOAD 319 Встановлення знаку «-» Числу ММ. 118 0101 0001 0010 1110 OR 302 119 0001 0001 0011 1111 STORE 319 120 0000 0001 0100 0000 LOAD 320 Визначення знаку Р. Якщо «+»(Z=1)- перехід на 139, «-» - програма виконується дальше. 121 0100 0001 0010 1111 AND 303 122 1001 0000 1000 1011 JZ 139 123 0000 0001 0100 0000 LOAD 320 Переведення Р у доп.мод код. Запис Р. 124 0111 0000 0000 0000 NOT 125 0010 0001 0011 0011 ADD 307 126 0100 0001 0011 0001 AND 305 127 0101 0001 0010 1111 OR 303 128 0010 0001 0011 0011 ADD 307 129 0001 0001 0100 0000 STORE 320 130 0100 0001 0010 1111 AND 303 Визначення знаку Р. Якщо «+»(Z=1)- перехід на 138, «-» - програма виконується дальше. 131 1001 0000 1000 1010 JZ 138 132 0000 0001 0100 0000 LOAD 320 Переведення Р у прямий модиф. код. Запис Р 133 0111 0000 0000 0000 NOT 134 0010 0001 0011 0011 ADD 307 135 0100 0001 0011 0001 AND 305 136 0101 0001 0010 1111 OR 303 137 0001 0001 0100 0000 STORE 320 138 1110 0000 1011 0111 JMP 183 Перехід на 183 139 0000 0001 0100 0000 LOAD 320 Збільшення порядку Р+1 140 0010 0001 0011 0011 ADD 307 141 0001 0001 0100 0000 STORE 320 142 1110 0000 1011 0111 JMP 183 Перехід на 183 143 0000 0001 0011 1110 LOAD 318 Організація циклу у якому виправляється порушення нормалізація вправо з одночасним зменшенням порядку (Р) суми. 144 0100 0001 0011 0101 AND 309 145 1000 0000 1011 0101 JNZ 181 146 0000 0001 0011 1110 LOAD 318 147 1111 0100 0000 0000 ASL 148 0001 0001 0011 1111 STORE 319 149 0000 0001 0011 1110 LOAD 318 150 0100 0001 0010 1110 AND 302 151 1001 0000 1001 1101 JZ 157 152 0000 0001 0011 1111 LOAD 319 153 0100 0001 0011 0000 AND 304 154 0101 0001 0010 1110 OR 302 155 0001 0001 0011 1110 STORE 318 156 1110 0000 1010 0000 JMP 160 157 0000 0001 0011 1111 LOAD 319 158 0100 0001 0011 0000 AND 304 159 0001 0001 0011 1110 STORE 318 160 0000 0001 0100 0000 LOAD 320 161 0100 0001 0010 1111 AND 303 162 1001 0000 1010 1001 JZ 169 163 0000 0001 0100 0000 LOAD 320 164 0111 0000 0000 0000 NOT 165 0010 0001 0011 0011 ADD 307 166 0100 0001 0011 0001 AND 305 167 0101 0001 0010 1111 OR 303 168 0001 0001 0100 0000 STORE 320 169 0000 0001 0100 0000 LOAD 320 170 0010 0001 0011 0001 ADD 305 171 0001 0001 0100 0000 STORE 320 172 0100 0001 0010 1111 AND 303 173 1001 0000 1011 0100 JZ 180 174 0000 0001 0100 0000 LOAD 320 175 0111 0000 0000 0000 NOT 176 0010 0001 0011 0011 ADD 307 177 0100 0001 0011 0001 AND 305 178 0101 0001 0010 1111 OR 303 179 0001 0001 0100 0000 STORE 320 180 1110 0000 1000 1111 JMP 143 181 0000 0001 0011 1110 LOAD 318 М=ММ 182 0001 0001 0011 1111 STORE 319 183 0000 0001 0011 1111 LOAD 319 Формування результату 184 0010 0001 0100 0000 ADD 320 185 0001 0001 0011 0110 STORE 310 186 0111 1100 0000 0000 HALT Зупинка виконання програми 
.
Висновок: на цій лабораторні роботі я ознайомився з поданням чисел у нормальній формі засвоїв порядок нормалізації чисел з рухомою комою, ознайомився з поняттям “характеристика” для чисел з рухомою комою, вивчив правила додавання (віднімання) двійкових чисел з рухомою комою, розробив алгоритми і програми додавання чисел в арифметиці з рухомою комою в інструкціях навчального комп'ютера - симулятора DeComp.
