на 100 делить так:
Код
for (unsigned int i = 0; i < 0xFFFFFFFF; i++)
{
unsigned int N = i >> 2;
unsigned int result;
unsigned short tmp;
result = ((((N >> 16) + 1) * 0xA3D7) >> 4) & 0xFFFF0000;
N -= result * 25U;
tmp = ((((N >> 8) + 1) * 0xA3D7) >> 12) & 0xFF00;
N = N - tmp * 25U + 1;
result |= tmp;
result |= (N * 0xA3D7) >> 20;
if (result != (i / 100))
{
printf("\nError: i = %X i / 100 = %X result = %X\n",i , i / 100, result);
break;
}
if ((i & 0xFFFF) == 0) printf("\r i = %X", i);
}
это тест для VC
для IAR увы

все плохо...
IAR совсем не умеет "правильно"
двигать на 4 разряда
ну и на 20 разрядов он двигает так же...
учитывая что в AVR есть команда обмена ниблами...