Проблема заключается в следующем:
в winavr создал регистровую глобальную переменую
register uint8_t qqq asm ("r5");
внутри прерывания сначала шлю значение по усарту
USART0TxByte(qqq);
потом пытаюсь вычесть из нее единицу
asm volatile ( "dec r5 \n\t":

и шлю еще раз
USART0TxByte(qqq);
А на компе вижу, что значение не меняется.
Скажите пожалуйста, что не так.
P.S. Оптимизация равняется 3.