Вы немножко не поняли.
Эти определения, которые вы написали, на самом деле не нужны. Они уже написаны за вас самой фирмой Atmel. К тому же без ошибок. Вам просто необходимо подключить соответствующий файл в свой проект!
Ну например вы в проекте используете мегу8. Тогда первой строчкой проекта вы должны написать:
.include "m8def.inc"
И всё! Все регистры и биты данного микроконнтроллера, а также его распределение памяти, вектора и прочее - всё указано в данном файле и, соответственно, объявлено в вашем. Вам необходимо только объявить свои переменные и работать!
Про уход процессора в резет.
Причин может быть несколько сотен.

Но, учитывая ваш уровень, смею предположить что вы не проинициализировали стек. Или сделали это неверно. Обычное написание начала программы выглядит так(убрал комментарии, дабы уменьшить текст):
Код
.include "m8def.inc" ; объявили МК
...
; объявляем переменные и константы
...
.cseg ; начинаем сегмент кода
.org 0; с начала
rjmp init ; Переходим на инициализацию
.org INT0addr ; Описываем вектор прерывания от INT0 (если есть)
rjmp j_int0; Переходим к обработке прерывания INT0
; Описываем все другие вектора прерывания, задействованные в программе
....
init: ; метка начали инициализации программы
ldi tmpl,low(RAMEND);инициализация стека
out SPL,tmpl
ldi tmpl,high(RAMEND)
out SPH,tmpl
; Прочая инициализация оборудования
....
main: ; главный цикл
....
; работа
...
rjmp main
INT0addr:; метка обработки прерывания от INT0
...
; обработка прерывания
...
reti ; возврат из прерывания
Ну а вообще неплохо бы теорию какую-нибудь почитать. Хотябы книжку какую по данной тематике. А то вы выполняете кучу глупой работы. То есть быстрый старт у вас получается не очень быстрым.