- •Система дл* иьиРа, обработки и регистрации информации на кассетной мл
- •Двухмашинный отладочный комплекс для разработки устройств на базе бис серии
- •Эффективные программы умножения для микропроцессора кр580ик80а
- •-. Подпрограмма умножение s-ряч-рядмого числа без знака на l(I-разридное.
- •3. Подпрограмма умножения двух 12-разрядных чисел без знака.
3. Подпрограмма умножения двух 12-разрядных чисел без знака.
Исходное состояние- С — старшие 8 разрядов первого сомножителя (в старшей тетраде О — младшие 4 раз» ряда первого сомножителя, в младшем тетраде D — старшие 4 разряда второго сомножителя); Е — младшие 8 разрядов второго сомножителя. Конечны.! результат: Л. 111. — произведение. В—0, сч"рлая тетрада D—О, содержимое С младшей тетрады D и Е ;-е изменяется.
MVI B,00 ROT MOV A,D ROT AX I FO ROT MOV HA ROT MOV A.D ROT SL'B H . RXC \\OV D.A DAD D MOV L, В ADC В MOV А.С RET ПАП Н ROT: MACRO ДОС A LOCAL Q ROT JNC Q ROT DAD D ROT ADC В ROT Q DAD H ROT ADC \ ROT END Л1
Время выполнения — 509 тактоп. Для сравнения заметим, что подпрограмма умножения двух 10-разрядных чисел, описанная в [1], имеет время выполнения, превышающее 1300 тактов, т. е. достигается выигрыш более чем в 2 раза.
4. Подпрограмма умножения двух 16-разрядных чисел оез знака.
ROT2 LX! Н,00
ROT2 MOV A.D
JNC Q MOV D.L
INR D ADD A
G- MOV Е,Л ROT1
POP PSVV ROT1
RNC ROT1
DAD В КОТ1
RNC ROT1
INX D ROT1
RET ROT1
ROT1: MACRO JNC Q
LOCAL P DAD В
JNC P ADC D
DAD В Q: MOV D,A
ADC D MOV A E
P: DAD H MV1 E,0
ADC A RAR
END M PUSH PSW
ROT2: MACRO ADD A
LOCAL X DAD H
JNC N ADC A
DAD В ROT2
ADC E ROT2
N1 DAD H !<OT2
ADC A ROT2
END M KOT2
Исходное состояние: ВС — первый сомножитель, DE — второй сомножитель. Конечный результат: DE, HL — произведскне, ВС не игмен_яется.
Время выполнения — 6°5 тактоз. Это на 12 % лучше, чем у подпрограммы, описанной в [3] (781 такт), и почт;: в 3 раза быстрее подпрограммы умножения 16-разрядных чисел [4] (2060 тактов). Текст этой подпрограммы в кодах, размешенный начиная с адреса 0800, имеет вид
0800 21 00 0810 09 SA 0820 29 8F 0830 D2 35 0840 IF F5 0850 8В 29 CS60 8F D2 С870 74 08 0880 СУ
00 7А 55 87 D2
29 SF D2 19 08
D2 27 08 09 8А
08 09 8 А 29 8F
87 29 8F D2 4А
ЯР D2 58 08 09
66 08 09 8В 29
09 8В 29 8F D2
Как видно из изложенного, одновременный сдвиг сомножителя и результата в системе команд микропроцессора КР580ИК80А позволяет писать эффективные подпрограммы умножения, которые при сопоставимой длине подпрограммы существенно (примерно в 2—3 раза) быстрее широкоизвестных [1, 2, 4] и значительно экономят память (более 200 бант). Телефон для справок: 3-63 31 (г. Сыктывкар).
ЛИТЕРАТУРА
1. А л е к с е н к о А. Г., Г а л л а ы н А. А., Иван ников А. Д. _Про-ектирование радиоэлектронной аппаратуры на микропроцессорах.— М : Радио и связь. 1984.— 272 с.
2. Григорьев В. Л. Программное обеспечение микропроцессорных систем. М.: Энергоатомпздат, 1983 — 208 с.
3. Бернар Купе. Сверхэффективные программы умножения для
12 08
09 8
А
29 8F
IE 00
08 09
09
8В 29
29
8 F D2
09
DO 13
51
09 8А 29 SF D2 20 08 29 8F D2 2Е 08 09 8А D2 ЗС 08 09 8А 57 7В 08 09 8В 29 8F D2 8В 29 8F D2 5F 08 8F D2 6D 08 09 8В 7А 08 14 5F Fl DO
44