В иаре 4-м есть ключевое слов __raw, т.е. объявляешь прерывание на си без сохранения контекста. Затем вставляешь макрос на асме, сохраняющий один регистр(asm(" push r16")), дальше творишь ввод-вывод, потом вставляешь макрос на асме, сохраняющий весь контекст и разрешаешь прерывания. Потом спокойно выполняется пр-ра на си. Вроде все просто.