Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций Микропроцессоры.doc
Скачиваний:
16
Добавлен:
06.12.2018
Размер:
756.22 Кб
Скачать

1.5. Примеры программирования микропроцессора

Пример1: Программирование последовательных участков алгоритма.

Условие задачи: Имеется три числа, хранящиеся в ОЗУ в соседних ячейках. Адрес первого числа 7F5D. Все числа кодированы прямым кодом (положительные). Необходимо первые два числа сложить, а третье вычесть из полученной суммы. Результат вывести через устройство вывода №1.

Пример 2: Программирование ветвящихся участков алгоритма.

Условие задачи: Имеется 2 массива, каждый из двух чисел. Адрес первого числа первого массива – 7F5D, адрес первого числа второго массива – 6F4E. Необходимо сложить элементы первого массива и в зависимости от результата переноса ТС произвести следующие операции:

  • Если ТС=0, то элементы второго массива сложить между собой и результат вывести на устройство вывода №1, а на устройство вывода №2 вывести значение FFHEX;

  • Если ТС=1, то из первого элемента второго массива вычесть второй, результат, как и в первом случае, вывести на устройство вывода №1, а на устройство вывода №5 вывести значение 00HEX;

Программа.

К1. LXI H, 7F5D

К2. MOV A,M

К3. INX H

К4. ADD M

К5. JC M1

К6. LXI H, 6F4E

К7. MOV A,M

К8. INX H

К9. ADD M

К10. MOV C,A

К11. MVI A,FF

К12. OUT 2

К13. MOV A,C

К14. M2: OUT 1

STOP

К15. M1: LXI H, 6F4E

К16. MOV A,M

К17. INX H

К18. SUB A,M

К19. MOV C,A

К20. MVI A,00

К21. OUT 3

К22. MOV A, C JMP M2

Алгоритм программы.

1.6. Циклические программы

Циклические программы составляются тогда, когда необходимо повторить один или несколько операций многократно, например, при вычислении произведения двух двоичных чисел:

1011

1101

1011 1

0000 2

1011 3

1011_ 4

10001111

При арифметическом умножении порядок точно такой же, как и при умножении десятичных чисел, далее все промежуточные суммы (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-разрядных двоичных чисел