Дослідження виконання арифметичних операцій у форматі з рухомою комою

Контрольная работа - Компьютеры, программирование

Другие контрольные работы по предмету Компьютеры, программирование

ат

Передбачити відповідні заходи з корекції результату.

Блок-схема написаної програми

 

Попередньо в такі комірки заношу такі дані:

 

350хххх хххх хххх ххххЧисло а351хххх хххх хххх ххххЧисло b3521100 0000 0000 0000Маска для знаку порядку3530000 1111 0000 0000Маска для порядку3540000 0000 0000 0000Порядок числа а3550000 0000 0000 0000Знак порадка числа а3560000 0000 0000 0000Порядок числа b3570000 0000 0000 0000Знак порядку числа b3580000 0000 0000 0000Порядок зі знаком числа a3590000 0000 0000 0000Порядок зі знаком числа b3600000 0000 0000 0001Одиниця для додавання3610000 0000 0000 0010Нормалізація порядку3620011 1100 0000 0000Маска для нормалізації інвертації порядка3630000 0000 0000 0000Мантиса числа a3640000 0000 0000 0000Мантиса числа b3650000 0000 0000 0000Знак мантиси числа a3660000 0000 0000 0000Знак мантиси числа b3670011 0000 0000 0000маска для відокремлення знаку мантиси3680000 0000 1111 1111Маска для відокремлення мантиси3690000 0000 0000 0000Мантиса зі знаком числа a3700000 0000 0000 0000Мантиса зі знаком числа a3710000 0000 0000 0000Різниця порядків3720011 1110 0000 0000Маска для взяття різниці порядків3731011 1111 1111 1111Обернена маска для взяття модуля різниці3740000 0000 0000 1001Нормалізація різниці порядків3750000 0000 0000 0101Підготовка мантиси3760000 0000 0000 0101Підготовка мантиси3770000 0000 0000 0010Нормалізація порядку3780000 0000 1111 1111Маска для виділення мантиси3791000 0000 0000 0000Відновлення знаку мантиси3800000 0000 0000 0000Сума двох чисел3810000 0000 0000 0000Мантиса результату3820000 0000 0000 0000Знак мантиси результату3830000 0000 0000 0000Порядок результату3840000 0000 0000 0000Знак порядоку результату3850011 1111 1110 0000Маска для вибору мантиси результату3860000 0000 0000 0110Зсув мантиси до молодших розрядів3870000 0000 0000 0000Результат (Зн. П, Зн.М, Порядок, Мантиса)3880000 0100 0000 0000Додавання одиниці для переведення порядку3890000 0010 0000 0000Одиниця для переведення різниці порядків3900000 0000 0010 0000Додавання одиниці для переведення мантиси

Код програми:

00000 0001 0101 1110LOAD 350Виділення порядка 1-го числа10100 0001 0110 0001AND 35320001 0001 0110 0010STORE 354Переміщення порядку до старших розрядів30000 0001 0110 0010LOAD 35441111 0010 0000 0000LSL50001 0001 0110 0010STORE 35460000 0001 0110 1001LOAD 36170011 0001 0110 1000SUB 36080001 0001 0110 1001STORE 36191000 0000 0000 0011JNZ 3100000 0001 0101 1110LOAD 350Виділення знаку порядку 1-го числа110100 0001 0110 0000AND 352120001 0001 0110 0011STORE 355131111 1100 0000 0000LSLПеревірка на відємність порядка 1-го числа141100 0000 0001 0100JNC 20150000 0001 0110 0010LOAD 354Якщо порядок 1-го числа відємний інвертуєм порядок перевести в доповняльний код160111 0000 0000 0000NOT170100 0001 0110 1010AND 362180010 0001 1000 0100ADD 388190001 0001 0110 0010STORE 354200000 0001 0110 0010LOAD 354Обєднання знаку і порядку в одне число210010 0001 0110 0011ADD 355220001 0001 0110 0110STORE 358230000 0001 0101 1111LOAD 351Виділення порядка 2-го числа240100 0001 0110 0001AND 353250001 0001 0110 0100STORE 356260000 0001 0110 0100LOAD 356Переміщення порядку до старших розрядів271111 0010 0000 0000LSL280001 0001 0110 0100STORE 356290000 0001 0110 1001LOAD 377300011 0001 0110 1000SUB 360310001 0001 0110 1001STORE 377321000 0000 0001 1010JNZ 26330000 0001 0101 1111LOAD 351Виділення знаку порядку 2-го числа340100 0001 0110 0000AND 352350001 0001 0110 0101STORE 357361111 1100 0000 0000LSLПеревірка на відємність порядка 2-го числа371100 0000 0010 1011JNC 43380000 0001 0110 0100LOAD 356Якщо порядок 2-го числа відємний інвертуєм порядок390111 0000 0000 0000NOT400100 0001 0110 1010AND 362410010 0001 1000 0100ADD 388420001 0001 0110 0100STORE 356430000 0001 0110 0100LOAD 356Обєднання знаку і порядку в одне число440010 0001 0110 0101ADD 357450001 0001 0110 0111STORE 359460000 0001 0101 1110LOAD 350Виділення мантиси470100 0001 0111 0000AND 368480001 0001 0110 1011STORE 363490000 0001 0101 1110LOAD 350Виділення і нормалізація знаку500100 0001 0110 1111AND 367511111 1100 0000 0000LSL521111 1100 0000 0000LSL530001 0001 0110 1101STORE 365540000 0001 0101 1111LOAD 351Виділення мантиси550100 0001 0111 0000AND 368560001 0001 0110 1100STORE 364570000 0001 0101 1111LOAD 351Виділення і нормалізація знаку580100 0001 0110 1111AND 367591111 1100 0000 0000LSL601111 1100 0000 0000LSL610001 0001 0110 1110STORE 366620000 0001 0110 0110LOAD 358Визначення різниці порядків630010 0001 0110 0111ADD 359640001 0001 0111 0011STORE 371651011 0000 0100 1100JM 76Визначення знаку різниці661111 0010 0000 0000LSRКорекція результату670100 0001 0111 0100AND 372680001 0001 0111 0011STORE 371690000 0001 0111 0011LOAD 371Нормалізація різниці порядків701111 0010 0000 0000LSR710001 0001 0111 0011STORE 371720000 0001 0111 0110LOAD 374730011 0001 0110 1000SUB 360740001 0001 0111 0110STORE 374751000 0000 0100 0101JNZ 69760000 0001 0111 0011LOAD 371770010 0001 0110 1000ADD 360780001 0001 0111 0011STORE 371790000 0001 0110 0111LOAD 359Збільшення меншого порядку на величину різниці800010 0001 0111 0011ADD 371810001 0001 0110 0111STORE 359820000 0001 0111 0011LOAD 371Зсув мантиси на величину різниці порядків830011 0001 0110 1000SUB 360841001 0000 0101 1010JZ 90850001 0001 0111 0011STORE 371860000 0001 0110 1100LOAD 364871111 0010 0000 0000LSR880001 0000 0110 1100STORE 364891110 0000 0101 0010JMP 82901111 0010 0000 0000LSRКорекція результату910100 0001 0111 0101AND 373920001 0001 0111 0011STORE 371930100 0001 0111 0100AND 372Переведення числа в прямий код940111 0000 0000 0000NOT950010 0001 1000 0101ADD 389960000 0001 0110 0110LOAD 358Збільшення меншого порядку на величину різниці970010 0001 0111 0011ADD 371980001 0001 0110 0110STORE 358990001 0001 0111 0011STORE 371Нормалізація різниці порядків1000000 0001 0111 0011LOAD 3711011111 0010 0000 0000LSR1020001 0001 0111 0011STORE 3711030000 0001 0111 0110LOAD 3741040011 0001 0110 1000SUB 3601050001 0001 0111 0110STORE 3741061000 0000 0110 0011JNZ 991070000 0001 0111 0011LOAD 371Зсув мантиси на величину різниці порядків1080011 0001 0110 1000SUB 3601091001 0000 0111 0011JZ 1151100001 0001 0111 0011STORE 3711110001 0001 0110 1011LOAD 3631121111 0010 0000 0000LSR1130000 0001 0110 1011STORE 3631141110 0000 0110 1011JMP 1071150000 0001 0110 1101LOAD 365Переведення числа в доповняльний код1161111 1100 0000 0000LSL1171100 0000 0110 1110JNC 1101180001 0000 0110 1011LOAD 3631190111 0000 0000 0000NOT1200010 0001 0110 1000ADD 3601210100 0001 0111 1010AND 3781220000 0000 0110 1011STORE 3631230000 0001 0110 1110LOAD 366Переведення числа в доповняльний код1241111 1100 0000 0000LSL1251100 0000 0111 0110JNC 1181260000 0000 0110 1100LOAD 3641270111 0000 0000 0000NOT1280010 0001 0110 1000ADD 3601290100 0001 0111 1010AND 3781300001 0001 0110 1100STORE 3641310001 0001 0110 1011LOAD 363Зсув мантиси до старших розрядів1321111 1100 0000 0000LSL1330001 0001 0110 1011STORE 3631340000 0001 0111 1101LOAD 3751350011 0001 0110 1000SUB 3601360001 0001 0111 1101STORE 3751371000 0000 1000 0011JNZ 1311380000 0001 0110 1100LOAD 364Зсув мантиси до старших розрядів1391111 1100 0000 0000LSL1400001 0001 0110 1100STORE 3641410000 0001 0111 1110LOAD 3761420011 0001 0110 1000SUB 3601430001 0001 0111 1110STORE 3761441000 0000 1000 1010JNZ 1381450001 0001 0110 1011LOAD 363Обєднання знаку і мантиси в одне число 1-го числа1460010 0001 0110 1101ADD 3651470001 0001 0111 0001STORE 3691480000 0001 0110 1100LOAD 364Обєднання знаку і мантиси в одне число 2-го числа1490010 0001 0110 1110ADD 3661500001 0001 0111 0010STORE 3701510000 0001 0111 0001LOAD 369Додавання мантис двох чисел1520000 0001 0111 0001ADD 3701531011 0000 1001 1100JM 156Збереження результату при додатньому результаті1541111 1100 0000 0000LSL1550001 0001 0111 1100STORE 3801561111 1100 0000 0000LSLЗбереження результату при відємном