Вот я не пойму - программисты, а табличку советуют. Есть более достойный вариант:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено sadat 19 ноября 2006 г. 11:27
В ответ на: Деление восьмиразрядных чисел ASM AVR + отправлено Aleksey75 19 ноября 2006 г. 09:44

Вообщем, суть сводится к следующему. На АВР нет деления, но есть ведь умножение. Что нам мешает вместо y=x/3 написать y=(k*x)/256? Вот и вычисляем константу k, при делении на 3 она равна 256/3=85, при 5 - 51. Просто и доступно.
Даже программку уже написал:


DIV:
tst R17; 1
breq ENDDIV; выход - деление на ноль; 2

cpi R17, 1; 1
breq ENDDIV; деление на 1; 2

cpi R17,2;1
brne delenie_na_3;2
lsr R16;1
rjmp ENDDIV;2

delenie_na_3:
cpi R17,3; 1
brne delenie_na_4; 2
ldi R17, 85; 1
mul R16, R17; 2
mov R16, R1; 1
rjmp ENDDIV;2

delenie_na_4:
cpi R17,4; 1
brne delenie_na_5; 2
lsr R16; разделили на 2; 1
lsr R16; разделили на 4; 1
rjmp ENDDIV;2

delenie_na_5:
cpi R17,5; 1
brne dalneishiy_delitel; 2
ldi R17, 51; 1
mul R16, R17; 2
mov R16, R1; 1
rjmp ENDDIV;2

dalneishiy_delitel:
; делитель больше

ENDDIV:

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

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание