А я сразу догадалась почему :) - если в обработчике прерываний вызовешь хотя бы одну функцию, то компилятор сохраняет все, т.к. не хочет поверять, какие регистры это функция портит. А если не вызывать оттуда функций, то сохраняет только те, что используешь, + регистр статуса.