Цитата(Палыч @ Jun 24 2008, 18:09)

У Atmel на сайте есть документ "AVR200 Multiply and Divide Routines". Скачайте и прочтите При перемножении двух 16-тиразрядных чисел - результат: 32-разрядное число
Большое спасибо! Нашел в Appnotes примеры быстрого умножения. Все работает, после умножения результат сохраняется в r18, r19, r20, r21 (r18 - младший байт). Теперь мне необходимо поделить на 1024. Эта операция соответствует 10-ти сдвигам вправо (команда lsr). Но lsr применяется только к 8-битным регистрам.
Я делаю следующее:
Код
mov r21, r20
mov r20, r19
mov r19, r18
Т.е. сдвигаю результат на 8 бит вправо. Далее мне необходимо сдвинуть весь результат еще на 2 бита вправо, но как это сделать я пока не знаю. При сдвиге командой lsr каждого из регистров (r18, r19, r20) теряются два старших бита каждого из регистров. Подскажите, как выполнить сдвиг сразу трех регистров?