Та новая студия, которая поддерживает winavr из себя? Нет проблем, просто указываешь в проекте файл с расширением .S (я с маленькой s даже не пробовал - по gcc-шным понятиям .S сначала надо пропустить через стандартный С-шный препроцессор, а .s - не надо). Запускалка, инициализирующая стек (если надо, зависит от кристалла) и в каждый вектор подставляющая jmp либо на заданный обоработчик, либо на __bad_interrupt (который будет либо jmp на пользовательский __vector_default, либо на нулевой адрес) - подошьётся автоматически. Если это очень вредно - наверное придётся заменять в студии какие-то ключи или лепить свой makefile.
Если устраивает - то никаких телодвижений не надо.
file foo.S
#define __SFR_OFFSET 0
.nolist
#include
.list
.section .eeprom
ee_foo: .byte 0xC3, 0xA5
.section .bss
foo: .skip 2
.text
.global main
main:
ldi r16, 0xFF
out DDRB, r16
sts foo, r16
1:
in r16, PORTB
eor r16, r17
out PORTB, r16
rjmp 1b
.global SIG_OVERFLOW0
SIG_OVERFLOW0:
; имена прерываний из стандартного h-файла
reti
.global __vector_default
__vector_default:
; сюда пихать обработку бяки, если не надо не писать, оно само подошьёт
; такой вектор, состоящий из jmp на нулевой адрес
reti
.end