Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
30
Добавлен:
21.02.2014
Размер:
456.8 Кб
Скачать

А. Б. Глазов, С. А. Костарев, Е. В. Суханова

Эффективные программы умножения для микропроцессора кр580ик80а

ROT: MACRO

вз в I иро-

I слу-|тора

При построении цифровых фильт­ров, реализации быстрого преобразо­вания Фурье и других процессов об­работки данных на микропроцессор­ных системах значительная часть вре­мени обработки расходуется на-вы­полнение умножения чисел. Ниже приводится несколько подпрограмм умножения чисел без знака различ­ной разрядности для микропроцессо­ра КР580ИК80А, имеющих малое время выполнения. «Время выполне­ния N тактов» означает, что про­грамма выполняется не более чем за N тактов.

Основная идея приведенных алго­ритмов заключается в одновременнос­ти сдвига результата произведения и одного из множителей. Подобный сдвиг в каждой подпрограмме оформ­лен в виае макрокоманды ROT и опи­сан после соответствующей подпро­граммы.

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

1. Подпрограмма умножения двух 8-разрядных чисел без знака.

Исходное положение: первый со­ множитель находится в регистре Н, второй в—Е. Конечный результат: HL — произведение, D — О, А, В, С, Е не изменяются. MVI D,00 ROT ROT MOV L.D ROT ROT DAD H ROT RXC ROT ROT DAD D RET

; описание макро­команды

LOCAL Q

JNCQ


DADD

DAD H


END M-

Замечание резания: в


; метка Q своя для каждой мак­рокоманды ; тело макрокоман­ды: если анали­зируемый бит первого сомножи­теля равен I, ; то к результату, накапливающему произведение, прибавляется второй сомножи­тель. Кроме то­го, осуществля­ется сдвиг ре­зультата и пер­вого сомножите­ля на 1 разряд признак конца макрокоманды для ручного ассембл;!-подпрограмму вместо каждого «ROT» вставляется только тело макрокоманды.

Время выполнения 257 тактов в 2 раза меньше времени выполнения одной из подпрограмм умножения, рассмотренной в [2] (520 тактов), и на 5 % меньше времени выполнения < быстрого* умножения с помощью таблиц произведении тетрад, описан­ного в [1, 2] (270 и 273 такта) и требующего громоздкой таблицы про­изведений, занимающей 256 байт в ПЗУ.

Наиболее удобной для системы кт-у.анд микропроцессора КР580ПК80Л является:

-. Подпрограмма умножение s-ряч-рядмого числа без знака на l(I-разридное.

Исходное состояние: А — 8-разряд­ны и множитель, ВС— 16-разрядны9 мно.-;;;:тель. Конечный результат: А, HL — произведение, Е — 00, В, С, О без изменений.

LXI Н.ОООО DAD В MOV Е. L ADC Е ADD A RET КОТ КОТ: МАСРО ROT LOCAL Q ROT JNC Q КОТ DAD В ROT ADC E ROT Q DAD H ROT ADC A RXC END M Время выполнения — 314 тактов. Лак ч а я подпрограмма незначительно от.™ :чается от описанной [3] (316 тяк- тог, i и я 1,5 раза быстрее — в [2] (475 :алюв).

Соседние файлы в папке курсовой проект