Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лапко.doc
Скачиваний:
11
Добавлен:
23.08.2019
Размер:
9.41 Mб
Скачать

5. Реалізація операції ділення

5.1. Початкові дані

  • Тип арифметичної операції — ділення двійкових чисел;

  • початковий код подання операндів — прямий;

  • розрядність — ділене X— 16 біт, дільник У— 8 біт;

  • код виконання мікрооперації у суматорі — доповняльний;

  • структура операційного блока — із закріпленими мікроопераціями;

  • тип керуючого блока — автомат з пам'яттю на JK-тригерах.

Елементна база, перелік обов'язкового графічного матеріалу та необхідні роз­рахунки — згідно з пунктом 1.2.

5.2. Алгоритм ділення цілих чисел

Операція ділення цілих чисел Z/Y зводиться до послідовності віднімання ді­льника Y спочатку від діленого X, а потім від створюваних в процесі ділення залиш­ків Ri.

Залежно від способу віднімання дільника Y розрізняють два основні алгоритми ділення: без відновлення залишку Ri та з відновленням залишку. Обидва способи реалізуються приблизно однаковими апаратними затратами, але для ділення без від­новлення залишку потрібно більше мікрооперацій додавання і віднімання. В універ­сальних комп'ютерах зазвичай використовують ділення без відновлення залишку.

У разі ділення цілих чисел часто ділене X подається в 2n-розрядному форматі, а дільник Y — у n-розрядному.

Алгоритм ділення цілих чисел у прямому коді без відновлення залишку реалізу­ється в такій послідовності:

1. У регістри А, В i С послідовно записуються із вхідної шини n –розрядний ді­льник Y та 2n-розрядне ділене X. У лічильник циклів СТ заноситься число циклів n -1.

2. Ділене X та дільник Y аналізуються на рівність нулю. Якщо ділене X=0, то частці Z присвоюється нульoве значення і ділення закінчується. Якщо діль­ник Y= 0, то ділення переривається.

3. Установлюється можливість ділення без переповнення розрядної сітки. Для цього значення діленого подвоюється зсувом вліво на один розряд. Із зсуну­того діленого віднімається дільник. Операція віднімання дільника замінюється на його додавання у доповняльному коді і визначається перший залишок R0 за формулою

R0 = 2|X| - Y = 2|X| + |-Y |Д.

Якщо R0 < 0, то ділення можливе, якщо R0 0, виникає переповнення роз­рядної сітки і ділення припиняється.

4. Якщо ділення можливе, виконуються такі основні дії:

  • частковий залишок в регістрі В і зміст регістра С зсуваються вліво на один розряд (тобто подвоюються);

  • і з зсунутого залишку віднімається дільник, якщо попередній залишок Rі-1 0, або додається, якщо Rі-1 < 0. Це визначається рекурентним спів­відношенням

2 Ri-1 + | Y |, якщо Rі-1 < 0;

Ri =

2 Ri-1 + | -Y |Д, якщо Rі-1 0,

де і = 1, 2, ..., п-1.

• якщо відбувається зсув вліво, в молодший розряд регістра С записується цифра частки r згідно із співвідношенням

0, якщо Rі-1 < 0;

ri =

1, якщо Rі-1 0,

Це означає, що поточна цифра частки є інверсією знака залишку;

• зміст лічильника циклів СТ зменшується на одиницю;

  • п.4 повторюється до обнуління лічильника циклів СТ.

Значення першого (старшого) розряду частки відводиться для записування знака результату на підставі виразу r0 = А[n] B[n].

  1. Залишок ділення у регістрі В на місці старших розрядів діленого, а частка - в регістрі С. Дільник, залишок і частка мають формат n – розрядного числа із знаком. Залишок має мати той же знак, що і ділене, нульові залишки і частки завжди додатні. Якщо знак останнього залишку від’ємний, то він коректується додаванням до нього модуля дільника, після цього залишку присвоюється знак діленого.