Циклические программы составляются тогда, когда необходимо повторить один или несколько операций многократно, например, при вычислении произведения двух двоичных чисел:
1101
1011 å1
0000 å2
1011 å3
1011_ å4
При арифметическом умножении порядок точно такой же, как и при умножении десятичных чисел, далее все промежуточные суммы (4) складываются между собой.
При организаци умножения нужно уметь следующее:
1) Анализировать разряды множителя. Если разряд множителя равен 0, то соответствующее множимое к промежуточной сумме не прибавляется. Если же разряд множителя равен 1, то к промежуточной сумме добавляется множимое;
2) Значение промежуточной суммы должно постоянно сдвигаться;
3) Промежуточную сумму можно сдвигать влево и тогда анализ каждого разряда множителя нужно начинать слева направо, либо промежуточную сумму можно сдвигать вправо и тогда анализ множителя нужно производить справа налево.
В микропроцессорной технике обцчно производят сдвиг промежуточной суммы влево. Сдвиг влево осуществляется сложением содержимого регистра (пары регистров) самого с собой. При огранизации умножения разрядность произведения в два раза больше разрядности множителей. Так как обычно множители восьмиразрядные, то для хранения произведения используется пара регистров (HL). Таким образом будет осуществляться сложение самого с собой именно содержимого пары регистров HL.
HLß HL +HL. Итак, при организации умножения накапливаемый результат будет храниться в HL, в паре регистров DE будет храниться множимое (<N1>). Так как множители восьмиразрядные, то требуется вычислить восемь промежуточных сумм, а, следовательно, организовать восемь циклов расчета.
Алгоритм циклической программы для расчета произведения 2-х 8-разрядных двоичных чисел приведен на рис.1.6.1
Программа :
К1. MVI B, 08
К2. LXI H, 0
К3. LXI D, <N1>
К4. MVI A, <N2>
К5. M1: DAD H
К6. RLC
К7. JNC M2
К8. DAD D
К9. M2: DCP B
К10. JNZ M1
Блок 1: Производится организация счетчика циклов. Так как требуется произвести умножение 8-разрядных чисел, т.е. организовать 8 циклов, в регистр В записывается число 8.
Блок 2: В HL записывается 0 – первоначальное обнуление пары регистров HL для правильного накопления результатов промежуточного суммирования.
Блок 3: Запись в пару регистров DE значения множимого. Т.к. значение множимого 8-разрядное, а пара регистров DE – 16 разрядная, то в D записывается 0, а в Е – множимое.
Блок 4: Запись в аккумулятор множителя.
Блок 5: Сдвиг влево содержимого пары регистров HL (результат промежуточного суммирования).
Блоки 6, 7: Анализ значений разряда множителя (анализ производится слева направо).
Блок 8: Получение промежуточной суммы (5 и 8 блоки работают в паре).
Блоки 9, 10: Организация цикла програмы.
Из анализа операции умножения следует, что для данной циклической программы требуется около 200 мс. При обработке сигналов период выборки для канала ТЧ составляет 125 мкс, следовательно, сделать устройство для обработки сигналов в реальном масштабе времени на данном процессоре практически невозможно. Даный процессор годен лишь для систем управления объектами, где скорость обоаботки невысока.
Рисунок 1.6.1 – Алгоритм циклической программы для расчета произведения 2-х 8-разрядных двоичных чисел