Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учеб. пособие по ОЭВМ.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
4.34 Mб
Скачать
    1. Моделирование функционирования алу при выполнении операции деления методом с восстановлением остатка над числами, представленными в прямом коде.

Метод деления с восстановлением остатка состоит в следующем:

  1. Из сдвинутого частичного остатка вычитается делитель. Если результат больше либо равен нулю, очередной разряд частного получает значение 1. Если результат меньше нуля, то разряд частного равен нулю и происходит восстановление промежуточного остатка путем прибавления к текущему остатку делителя.

  2. Промежуточный остаток сдвигается влево на один разряд и в него заносится очередной разряд делимого. Цикл деления повторяется.

Рассмотрим пример деления целых чисел, представленных в прямом коде, методом с восстановлением остатка.

Пример 1.

Z = ; X=15, Y=-3

Зн.

Информ. разряды

X=

0

0

0

0

0

0

1

1

1

1

Y=

1

0

0

1

1

Формируем знак результата путем сложения по модулю 2 знаков делимого и делителя: ZN=01=1. Обнуляем знаковый разряд делителя, получаем Y=00011.

Дополнительный код делителя: [Y]доп.код=11101

Описание операции

Зн.

Информац. разряды

Делимое

+00

0000

1111

Сдвиг делителя влево на 4 разряда, вычитание делителя

1

1101

Остаток от деления < 0 => деление возможно

+1

1101

1111

Восстановление остатка: прибавление делителя

0

0011

Восстановленный остаток

0

0000

1111

Сдвиг влево остатка на 1 разряд

+0

0001

1110

Вычитание делителя

1

1101

1-ый остаток от деления < 0

+1

1110

1110

Восстановление остатка: прибавление делителя

0

0011

Восстановленный остаток

0

0001

1110

Сдвиг влево остатка на 1 разряд

+0

0011

1100

Вычитание делителя

1

1101

2-ой остаток от деления > 0

0

0000

1100

Сдвиг влево остатка на 1 разряд

+0

0001

1000

Вычитание делителя

1

1101

3-ий остаток от деления < 0

+1

1110

1000

Восстановление остатка: прибавление делителя

0

0011

Восстановленный остаток

0

0001

1000

Сдвиг влево остатка на 1 разряд

+0

0011

0000

Вычитание делителя

1

1101

4-ый остаток от деления = 0

0

0000

0000

Z=

1

0

1

0

1

Зн

1 ост

2 ост

3 ост

4 ост

Выполнение операции деления с восстановлением остатка можно организовать по-другому, сдвигая делитель вправо на один разряд. Промежуточный остаток при этом остается на месте.

Структурная схема АЛУ представлена на рис. 14.

Делимое записывается в регистры RB и R2: в RB - старшая часть, в R2 - младшая. Делитель записывается в регистр R1. Частное формируется в регистре R3.

Появляется связь между регистрами R2 и RС для сдвига промежуточного остатка и организован доступ к нулевому разряду регистра R3 для записи очередного разряда частного. Старшая и младшая части промежуточного остатка хранятся в регистрах RB и R2 соответственно. Если промежуточный остаток отрицательный, то делитель переписывается в регистр RA в прямом коде и в очередной разряд частного в регистр R3 записывается 0, если промежуточный остаток неотрицательный, то делитель переписывается в регистр RA в обратном коде и в очередной разряд частного в регистр R3 записывается 1. Регистры SM и R2 используются для организации сдвигов. При сдвиге промежуточного остатка в освободившийся разряд регистра RC заносится очередной разряд делимого. В каждом цикле результат с регистра RC переписывается на регистр RB. Триггер ТS хранит знак результата, который формируется сложением по модулю 2 знаковых разрядов делимого и делителя. Так как деление производится над положительными числами в прямом коде, в случае отрицательных операндов, сначала формируется знак результата и заносится в триггер TS, операнды переводятся в прямой код и только тогда выполняется деление по уже известному алгоритму. Число циклов равно n-1, т.е. семи (без учета пробного вычитания).

Блок-схема выполнения операции деления методом с восстановление остатка представлена на рис. 13.

Формирование знака результата, обнуление знаков делимого и делителя

Сдвиг делимого на 1 разряд влево

Пробное вычитание делителя

Деление

невозможно

“0”

Деление

возможно

<0”

Запись в RA делителя в прямом коде

Восста­новление остатка

Суммирование RA и RB (промежуточного остатка)

Сдвиг остатка на 1 разряд влево, занесение очередного разряда делимого

Запись в RA делителя в обратном коде

Суммирование RA и RB (промежуточного остатка) с прибавлением 1

Восстановление остатка

“0”

<0”

Запись 1 в очередной разряд частного

Запись 0 в очередной разряд частного

>0”

Уменьшение содержимого счетчика на 1

=0”

Запись в RA делителя в прямом коде

Суммирование RA и RB (промежуточного остатка)

Рис. 13. Блок-схема выполнения операции деления с восстановлением остатка