AVR. Assembler. Алгоритмы.
Деление на 10. В AVR есть команда перемножения, но нет деления. Реализовать деление на 10 можно путем комбинации умножения и сдвига. Умножение: MUL Rd,Rr. Результат (16-разрядное число) сохраняется в регистрах R0 (младший байт) и R1 (старший байт). Деление на 10: Result = HI(SRC * 0xCD) >> 3. Resut - результат, SRC - исходное число. Т.е.: LDI R16,0xAB LDI R17,0xCD MUL R16,R17 MOV R16,R1 LSR R16 LSR R16 LSR R16 Результат - в R16. Деление на 5 и на 20 делается таким же образом, при этом оперируя сдвигом в конце алгоритма, т.е. для деления на 20 - добавить еще LSR R16, для деления на 5 - удалить 1 сдвиг.