Programme de l’exemple en assembleur :
$ avr-gcc -Wall -I. -DF_CPU=16000000 -Os -mmcu=atmega328p -S -o timer.s timer.c
$ cat timer.s
__SP_H__ = 0x3e
__SP_L__ = 0x3d
__SREG__ = 0x3f
__tmp_reg__ = 0
__zero_reg__ = 1
.text
.global init_ports
.type init_ports, @function
init_ports:
.L__stack_usage = 0
in r25,0x4
lds r24,led_bit
or r24,r25
out 0x4,r24
in r24,0x5
out 0x5,r24
ret
.size init_ports, .-init_ports
.global init_timer
.type init_timer, @function
init_timer:
.L__stack_usage = 0
sts 128,__zero_reg__
ldi r30,lo8(-127)
ldi r31,0
ldi r24,lo8(8)
st Z,r24
ld r24,Z
ori r24,lo8(4)
st Z,r24
ldi r24,lo8(-44)
ldi r25,lo8(48)
sts 136+1,r25
sts 136,r24
sts 132+1,__zero_reg__
sts 132,__zero_reg__
ldi r24,lo8(2)
sts 111,r24
ret
.size init_timer, .-init_timer
.global __vector_11
.type __vector_11, @function
__vector_11:
push r1
push r0
in r0,__SREG__
push r0
clr __zero_reg__
push r24
push r25
.L__stack_usage = 5
in r25,0x5
lds r24,led_bit
eor r24,r25
out 0x5,r24
pop r25
pop r24
pop r0
out __SREG__,r0
pop r0
pop r1
reti
.size __vector_11, .-__vector_11
.section .text.startup,"ax",@progbits
.global main
.type main, @function
main:
.L__stack_usage = 0
call init_ports
call init_timer
sei
ldi r24,0
ldi r25,0
ret
.size main, .-main
.global led_bit
.data
.type led_bit, @object
.size led_bit, 2
led_bit:
.word 1
.ident "GCC: (GNU) 5.4.0"
.global __do_copy_data