на результат - 233 такта 0ffffffh->16777215d, учитывая CALL и RET
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено =mse= 19 ноября 2004 г. 15:05
В ответ на: Деклараций не надо - результат покажите. Попробовал для AVR вычитанием. Получилось медленнее (1180), не говоря о размере кода. отправлено асибо 19 ноября 2004 г. 14:32


ldi r19,ramend
out spl,r19
rcall bin2bcd16

nop
nop


bin2bcd16:
ldi bcd_8,'0'-1
ldi bcd_7,'0'-1
;movw bcd_2,bcd_4 ;for Mega's ;O)
mov bcd_6,bcd_8
mov bcd_5,bcd_7
mov bcd_4,bcd_8
mov bcd_3,bcd_7
mov bcd_2,bcd_8

bcd16_8:
inc bcd_8
subi source_dat_L,low(10000000)
sbci source_dat_H,high(10000000)
sbci source_dat_HH,byte3(10000000)
brcc bcd16_8

subi source_dat_L,low(-10000000)
sbci source_dat_H,high(-10000000)
sbci source_dat_HH,byte3(-10000000)

bcd16_7:
inc bcd_7
subi source_dat_L,low(1000000)
sbci source_dat_H,high(1000000)
sbci source_dat_HH,byte3(1000000)
brcc bcd16_7

subi source_dat_L,low(-1000000)
sbci source_dat_H,high(-1000000)
sbci source_dat_HH,byte3(-1000000)

bcd16_6:
inc bcd_6
subi source_dat_L,low(100000)
sbci source_dat_H,high(100000)
sbci source_dat_HH,byte3(100000)
brcc bcd16_6

subi source_dat_L,low(-100000)
sbci source_dat_H,high(-100000)
sbci source_dat_HH,byte3(-100000)

bcd16_5:
inc bcd_5
subi source_dat_L,low(10000)
sbci source_dat_H,high(10000)
sbci source_dat_HH,byte3(10000)
brcc bcd16_5

subi source_dat_L,low(-10000)
sbci source_dat_H,high(-10000)
sbci source_dat_HH,byte3(-10000)

bcd16_4:
inc bcd_4
subi source_dat_L,low(1000)
sbci source_dat_H,high(1000)
brcc bcd16_4

subi source_dat_L,low(-1000)
sbci source_dat_H,high(-1000)

bcd16_3:
inc bcd_3
subi source_dat_L,low(100)
brcc bcd16_3

subi source_dat_L,low(-100)

bcd16_2:
inc bcd_2
subi source_dat_L,low(10)
brcc bcd16_2

subi source_dat_L,(-10-'0')
ret


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru