Спасибо за быстрый ответ. Хотелось бы ещё уточнений. Я перечитал документы и примеры приведённые на Atmel и в составе IAR и некоторые моменты всётаки не понял. Не бейте больно.
1) На сколько я понял соглашение о передаваемых параметрах (в смысле их привязки к регистрам) действует только на extern функции? Внутри одного файла сам компилятор может поступать как ему заблагорассудится?
2) В приведенных примерах написания функций на асме не видно чтобы сохранялись какие либо регистры. Компилятор что анализирует прогу асм на предмет использования регистров? Вроде бы так не должно быть, так как ассемблирование осуществляется после компиляции, а регистры должны быть определены до линковки?

Или, что более правдоподобно, определены регистры, которыми я могу пользоваться? Очень похоже, что это регистры R0-R3,R16-R23,R30,R31 вне зависимости от числа вызываемых параметров. Не пинайте пожалуйста, подтвердите или опровергните.
Да, здесь идёт речь не о прерывании, а о функции на ассемблере.