- •Система дл* иьиРа, обработки и регистрации информации на кассетной мл
- •Двухмашинный отладочный комплекс для разработки устройств на базе бис серии
- •Эффективные программы умножения для микропроцессора кр580ик80а
- •-. Подпрограмма умножение s-ряч-рядмого числа без знака на l(I-разридное.
- •3. Подпрограмма умножения двух 12-разрядных чисел без знака.
А.
Б. Глазов, С. А. Костарев,
Е.
В.
Суханова
ROT:
MACRO
вз
в I
иро-
I
слу-|тораЭффективные программы умножения для микропроцессора кр580ик80а
Основная идея приведенных алгоритмов заключается в одновременности сдвига результата произведения и одного из множителей. Подобный сдвиг в каждой подпрограмме оформлен в виае макрокоманды 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 :алюв).