Что-то вот задумался над одной мелочью, в принципе.
Есть переменная таймера, которая объявлена как volatile, так как модифицируется в обработчике прерывания.
Всё бы хорошо, да только хотелось бы, чтобы эта переменная была volatile для всех, кроме самого обработчика прерываний, так как лишние сохранения/загрузки в нём - это совершенно лишнее.

Есть мысля сделать так:
Код
union {
dword isr_timer;
volatile dword timer;
}
и в ISR юзать isr_timer, а в других местах - просто timer.
Что скажете?