(К155ТМ5 – 4 D-триггера)
Анализпрограммы напримерах
Y1= 0 1001101 110100101110011011100011 = 0 4D D2E6E3
X1= 1 1001011 110001100101110110100111 = 1 4B C65DA7
Выравниваниепорядков:
МК: РгС>РгD (01001101>01001011)переход на МК1
MК1:сдвигаем мантиссуХ1 вправо на 4разр. получаем000011000110010111011010 и увел.порядок Х1 на1 получаем 01001100переходна МК
МК: РгС>РгD (01001101>01001100)переход на МК1
МК1:сдвигаем мантиссуХ1 вправо на 4разр. получаем000000001100011001011101 и увел.порядок Х1 на1 получаем 1001101переходна МК
МК:РгС=РгD(01001101=01001101)
Порядкивыравненны.
Сложениемантисс:
ТгЗн1ТгЗн2 переходна М3
М3:ТгЗн1 0 РгВ =
(00110010 111111110011100110100010); РгСм=РгА+ РгВ + 1 = 01011011 110100100010000010000110;См[0]= 0 переходна М1
М1:РгСм [ 1 7]: = Сч1 [1 7] = 1001101;
РгСм[0] :== еслиТг3н1=0 то 0;
ШИВых:= РгСм = 0 1001101110100100010000010000110 = 04D D22086;
КОНЕЦ.
Y2= 0 1001100 110100101110011011100011 = 0 4СD2E6E3
X2= 0 1001101 110001100101110110100111 = 04D C65DA7
Выравниваниепорядков:
РгD> РгСпереход на МК2
МК2:сдвигаем мантиссуY2 вправо на 4 разр.получаем 000011010010111001101110; уменьшаем порядок Х2 на1 получаем 1001100; РгD = РгС
Порядкивыравненны.
Сложениемантисс:
ТгЗн1= ТгЗн2 См = РгА + ргВ =00000000 110100111000110000010101; переходна М1
М1: РгСм [ 1 7]: = Сч1 [1 7] = 1001110;
РгСм[0] :== еслиТг3н1=0 то 0;
ШИВых:= РгСм = 0 1001101110100111000110000010101 = 04D D38C15;
КОНЕЦ.
Сложенияи вычитаниячисел с плавающейзапятой
1.Производитсявыравниваниепорядков чисел.Порядок меньшею(по модулю) числапринимаетсяравным порядкубольшего числа,а мантиссаменьшего числасдвигаетсявправо на числоS-ичных разрядов,равное разностипорядков чисел.
2.Производитсясложение (вычитание)мантисс, врезультатечего получаетсямантисса суммы(разности).
3. Порядокрезультатапринимаетсяравным порядкубольшего числа.
4.Полученнаясумма (разность)нормализуется.
Примем,что числа сплавающейзапятой имеютоснованиепорядка S = 16.
Первоеслагаемое(уменьшаемое)поступает навходной регистрРг1, второе слагаемое(вычитаемое)— на входнойрегистр Рг3.Знаки слагаемыххранится втриггерахзнаков Тг3н1и Тг3н2. Смещенныепорядки слагаемыхпересылаютсяв регистры РгСи РгD. Схема СОЛОприменяетсядля сравненияи выравниванияпорядков слагаемых.Сумматор См,его входныерегистры РгАи РгВ и выходнойрегистр РгСмиспользуютсяпри сложении(вычитании)мантисс, а такжепри передачемантисс в процедурахвыравниванияпорядков инормализациирезультата.
Операциясложения (вычитания)может бытьподразделенана следующиеэтапы: 1) приемоперандов, 2)выравниваниепорядков, 3) сложениемантисс и 4)нормализациярезультата.
Приемоперандовописываетсяследующеймикропрограммой:
РгЗ: = ШИВх,РгВ: = 0, Тг3н1: = Рг3[0]
;
Рг1: = ШИВых,РгА: = 0, Тг3н2: = еслисложение тоРг1[0]иначе
;Выравниваниепорядков начинаетсяс их сравнения.Мантисса числас меньшим порядкомпри выравниваниисдвигаетсявправо на числоразрядов, равноеразности порядков.Посколькурассматриваемыечисла с плавающейзапятой имеютS = 16, сдвигосуществляетсяшестнадцатеричнымиразрядами, т.е. каждый сдвигпроизводитсяна четыре двоичныхразряда.
Присравнениипорядков возможныпять случаев:
1)
(m— числоразрядов мантиссы).В качестверезультатасуммированиясразу же можетбыть взятопервое слагаемое,так как привыравниваниипорядков всеразряды мантиссывторого слагаемогопринимаютнулевое значение;2)
.В качестверезультатасуммированияможет бытьвзято второеслагаемое;3)
.Можно приступитьк суммированиюмантисс;4)
Мантиссавторого слагаемогосдвигаетсяна разрядов вправо,затем производитсясуммированиемантисс;5)
Передвыполнениемсуммированиямантисс производитсяcдвигна разрядов вправомантиссы первогослагаемого.Запорядок результатапри выполнениисуммированияпринимаетсябольший изпорядков операндов.
Выравниваниепорядковосуществляетсяследующимобразом. Смещенныйпорядок числаХ из РгЗ передаетсяв регистр РгD,РгСОЛО и в счетчик,соединенныйс выходомРгСОЛО. Затемв РгС передаетсясмещенныйпорядок числаY:
РгС: = О,PD [0]: = 0, PгD[1 7] := Рг3 [1 7];
РгСОЛО: = РгСPгD;
Сч1: = РгСОЛО;
РгС [О]: = 0, РгС [17] =Pг[1 7];
Послеэтого начинаетсясравнениепорядков чиселХ и Y наСОЛО и сдвигмантиссы числас меньшим порядкомвправо,
Длятого чтобыучесть случаи1 и 2, возникающиепри сравнениипорядков, и неделать лишнихсдвигов мантиссы,превратившейсяв процессевыравниванияпорядков в 0,на счетчикециклов СчЦфиксируетсяпредельноечисло сдвигов,равное количествушестнадцатеричныхцифр мантиссы:
СчЦ:= 6;
Привыполнениисдвига на одиншестнадцатеричныйразряд содержимоеСчЦ уменьшаетсяна 1. При СчЦ = 0сдвиги прекращаютсяи в качестверезультатаберется большееслагаемое.
Микропрограммавыравниванияпорядков:
МК: | еслиРгС > РгD тоМК1 иначееслиРгС = РгD тоМКЗ иначеМК2; |
MK1: | PгB [831]:=PгЗ[831]; РгСм: = П(4) См,РгСм [0 3]: =0, Сч1 := Сч1+1 ; Рг3[831]:=РгСм[8 31]; РгD:=Сч1,СчЦ: = СчЦ - 1 ; еслиСчЦ 0 тоМК; РгВ: = 0, РгА: =Рг1, РгСм := См; ШИВых: = РгСм; конец ; |
МК2: | РгА[8 31] :=Рг1 [8 31]; РгСм:= П (4) См, РгСм [0 3] : = 0, Сч1 := Сч1-1 ; Рг1 [131]: =РгСм[8 31], РгD: =Сч1,СчЦ: =СчЦ -1, еслиСчЦ 0, тоМК4 иначеРгА: =0, РгВ: =Рг3,РгСм: =См, ШИВых:= РгСм, конец ; |
МК4: | еслиРгС >PгD тоМК2; PгD[0]: = 0,РгD[1 7]: = Рг3[1 7], РгС = 0; РгСОЛО : = РгСPгD; Сч1: = РгСОЛО ; |
МКЗ: | РгСм: = 0,Pгl [0 7] : = РгСм, РгЗ [0 7] : = РгСм ; |
Послевыравниванияпорядков модулимантисс хранятсяв Pгlи РгЗ в разрядахс 8-го по 31-й, ихзнаки в Тг3н2 иТг3н1, а порядокрезультата в Сч1.
Сложениемантисс. Анализируютсязнаки мантисси при равенствезнаков модулимантисс складываются.Если оказывается,что См [7] = 1, то возниклопереполнениепри сложениимантисс. В случаепереполнениямантисса суммысдвигаетсяна четыре двоичныхразряда (одиншестнадцатеричныйразряд) вправо,а порядокувеличиваетсяна 1 (Сч1: = Сч1 + 1). Еслипосле этогоСч1 [0] = 1, то формируетсяпризнак прерыванияиз-за переполненияпорядка. Еслипереполнениянет, то в РгСмформируетсярезультатоперации, длячего содержимоеСч1 [1 7] заноситсяв РгСм [1 7], в РгСм[0]передаетсязнак, а в РгСм[8 31]— мантиссасуммы.
Приразличныхзнаках мантиссотрицательнаямантисса передаетсяна входнойрегистр сумматорав обратном кодеи производитсясуммированиеее с прямымкодом положительноймантиссы и 1,прибавляемойк младшемуразряду сумматора.Знак результатафиксируетсяв триггерезнака. От полученногорезультата,если он отрицателен,берется егомодуль. Еслирезультатнормализован(См [8 11] 0),то на РгСм заносятсязнак результата(по значениютриггера знака),порядок позначению Сч1и модуль мантиссы.
Еслирезультат ненормализовани нет исчезновениязначимости(мантисса неравна 0), производитсянормализация.Мантисса результатасдвигаетсявлево и одновременноуменьшаетсяпорядок результата(Сч1: = Сч1 -1). При отрицательномпереполнениипорядка (Сч1[0] = 1) формируетсяпризнак исчезновенияпорядка. Еслинормализациязавершаетсябез исчезновенияпорядка, формируетсярезультатоперации изкода знака,порядка и мантиссы.
Микропрограммапроцедурысложения мантисс:
еслиТгЗн Тг3н2 тоМЗ; РгА: = Рг1, РгВ:= РгЗ; РгСм: = См; еслиСм[7] = 1 тоМ2; | |
М1: | РгСм [ 1 7]: = Сч1 [1 7]; РгСм[0] :== еслиТг3н1=0 то 0 иначе1; |
М: | ШИВых: = РгСм; конец; |
М2: | Сч1:=Сч1+1, РгСм:= П(4)См, РгСм[0 3]:=0; еслиСч1[0]=0 то М1 иначепрерываниеиз-за переполненияпорядка; |
МЗ: | еслиТг3н1=0 то РгА:= ,РгВ: = РгЗ иначеРгА: = Рг1, РгВ: = ;РгСм:=РгА+РгВ +1; еслиСм[0]=0 то M4; Рг3:=РгСм; РгА:=0, РгВ: = ;РгСм:=РгА +РгВ +1; |
М4: | ТгЗн1:= РгЗ [0]; |
М5: | еслиСм [8 11] 0 тоM1; еслиСм 0 тоМ6; РгСм:= 0, прерываниеиз-за потеризначимости; |
M6: | Сч1:=Сч-1, РгСм:= Л(4)См, РгСм[2831]:= 0; РгЗ: = РгСм; РгВ : = РгЗ, РгА:= 0; РгСм: = См; еслиСч1[0]=0 тоМ5; РгСм:= 0, прерываниеиз-за исчезновенияпорядка; |
Сложениеи вычитаниевыполняютсяприближенно,так как привыравниваниипорядковпроисходитпотеря младшихразрядов одногоиз слагаемых.В этом случаепогрешностьвсегда отрицательнаи может доходитьдо единицымладшего разряда.Чтобы уменьшитьпогрешность,применяютокруглениерезультата.Для этого можетбыть использовандополнительныйразряд сумматора,в который послевыполнениясуммированиядобавляется1.