ЭУМК по дисциплине "Проектирование проблемно-ориентированных вычислительных средств" › Практика › Практическое занятие "Группа команд работы с аккумулятором"

# Электронный учебно-методический
комплекс по дисциплине
"Проектирование проблемно-ориентированных вычислительных средств"

для специальности

1-40 02 02 «Электронные вычислительные средства»

Оглавление | Программа | Теория | Практика | Контроль знаний | Об авторах

16. Реализация операции извлечения квадратного корня.
1) Общий алгоритм процедуры извлечения квадратного корня

Операция извлечения квадратного корня может быть выполнена с помощью простой итерационной процедуры:
1. Выбирается первое приближение квадратного корня, равное средине диапазона возможного результата: 0,5 для дробных чисел и 16384 для целых чисел. Это значение равно в обоих случаях коду 0х4000.
2. Текущее приближение возводится в квадрат и сравнивается с исходным числом.
3. Если квадрат получился меньше – нужно увеличить текущее приближение корня (взять средину правого интервала).
4. Если квадрат получился больше – нужно уменьшить текущее приближение корня (взять средину левого интервала).
5. Повторить пункты 2-4 еще 14 раз.
В результате проделанных вычислений будет найдено значение корня.

2) Реализация алгоритма извлечения квадратного корня

Для реализации данного алгоритма нам потребуются два арифметических устройства: основное ALU для возведения в квадрат и сравнения и ARAU (арифметическое устройство вспомогательных регистров) для формирования последовательных приближений корня.
Поскольку будет использоваться операция умножения, то необходимо правильно настроить умножитель и загрузить в аккумулятор исходное число (в младшие разряды для целых чисел и в старшие разряды для дробных).
Для формирования значения текущего приближения корня можно использовать команды соответствующей модификации вспомогательных регистров MAR.
Таким образом алгоритм нахождения квадратного корня сводится к следующему:
1. Заносим первое приближение квадратного корня 0х4000 во вспомогательный регистр (например в AR1).
2. Заносим очередной формируемый бит (код 0х4000) во вспомогательный регистр AR0.
3. Возводим содержимое регистра AR1 в квадрат и сравниваем с исходным числом (в аккумуляторе).
4. Если квадрат получился меньше – нужно увеличить текущее приближение корня (пропускаем следующий шаг).
5. Если квадрат получился больше – нужно уменьшить текущее приближение корня (убрать из числа очередной формируемый бит):

    	mar	*ar1-0		; AR1 минус очередной бит		(1)

6. Получить в AR0 следующий бит (сдвиг вправо на 1 разряд):

    	mar	*ar0+0B		; в AR0 следующий бит			(1)

7. Получить в AR1 следующее приближение (добавить к числу следующий формируемый бит):

    	mar	*ar1+0		; AR1 плюс следующий бит		(1)

8. Повторить пункты 3-7 еще 14 раз.
9. Сохранить сформированное в AR1 значение квадратного корня.

Оглавление | Программа | Теория| Практика | Контроль знаний | Об авторах
© БГУИР , 2012