.def temp  = r16        ; директива .def назначает регистру r16 имя temp
.def temp1 = r17        ; директива .def назначает регистру r17 имя temp1
.def temp2 = r18        ; директива .def назначает регистру r18 имя temp2
.def temp3 = r19        ; директива .def назначает регистру r19 имя temp3
;====================================================
; Начало программы
.cseg                 ; директива .cseg определяет начало сегмента, где будет расположен
                      ; основной код программы. В AVR Studio 5 это директива не
                      ; обязательна
.org 0                ; начало первой строки программы
rjmp Start            ; относительный переход к метке Start (в PIC соответствует 
                      ; команде goto)
; ====================================================
Start:
ser temp              ; устанавливает все биты регистра temp  в 1
out DDRB, temp        ; переводит все биты 
out DDRD, temp        ; порта B  и D на вывод
clr temp              ; обнуляет регистр temp (устанавливает все биты регистра temp  в 0)
out PortB, temp       ; отключает подтягивающие резисторы 
out PortD, temp       ; портов B и D 

Cicle: 
ldi temp, 0b10011001  ; включает светодиоды
out PortD, temp       ; порта D
rcall Pause           ; вызов подпрограммы задержки
clr temp              ; выключает светодиоды
out PortD, temp       ; порта D
rcall Pause           ; вызов подпрограммы задержки
rjmp Cicle            ; Возвращаемся к метке Cicle, зацикливаемся
; ====================================================
; Подпрограмма задержки
; ====================================================
Pause:    
ldi temp1, 0         ; записать в регистр temp1 знчение 0
ldi temp2, 0         ; записать в регистр temp2 знчение 0
ldi temp3, 2         ; записать в регистр temp3 знчение 2

Pause1:    
dec temp1            ; вычесть из значения  регистра temp1 единицу
brne Pause1          ; если значение temp1 не равно 0 перейти к метке Pause1

dec temp2            ; вычесть из значения  регистра temp2 единицу
brne Pause1          ; если значение temp2 не равно 0 перейти к метке Pause1

dec temp3            ; вычесть из значения  регистра temp3 единицу
brne Pause1          ; если значение temp1 не равно 0 перейти к метке Pause1
ret                  ; выйти из подпрограммы