Una de las cosas que echaba de menos al programar un Arduino era la posibilidad de ver un desemsamblado del código generado. Hay veces que puede ayudarte a entender por qué falla algo o saciar tu curiosidad de cómo funciona. Aunque el IDE de Arduino no trae una opción cómoda para hacerlo es muy sencillo.
Hay que realizar el proceso en dos pasos:
Obtener el volcado binario del sketch de Arduino
Primero vamos a obtener un volcado binario del sketch. Para ello recurrimos a la opción «Exportar Binarios compilados» del menú «Programa».

Una vez exportados podemos acceder a ellos con la opción «Mostrar Carpeta de Programa» del menú «Programa».
Como resultado de la exportación obtenemos dos archivos .hex.

Se corresponden al binario con el bootloader de Arduino o sin el bootloader. Podemos abrirlo con un editor hexadecimal y ver que contiene.

El fichero con el bootloader es el que se copia a la placa Arduino cuando «cargamos» el sketch
Convertir el volcado binario a ensamblador
Para realizar esta parte necesitaremos el programa avr-objdump el cual se puede encontrar en el directorio donde este instalado el IDE de Arduino en la ruta hardware\tools\avr\bin\avr-objdump. Una vez localizado podemos usar el siguiente comando para obtener el desensamblado del binario:
<ruta-avr-objdump>avr-objdump -j .sec1 -d -m avr5 fichero.hex > fichero.asm
Tras ejecutar ese comando la salida se vuelca en el fichero de nombre ejemplo.asm que podemos abrir con cualquier editor de textos.

Como curiosidad las primeras lineas del fichero corresponde a la tabla de vectores de interrupción del microcontrolador, por eso son todo saltos al código que gestiona cada una de las interrupciones.
Este texto mejorado y ampliado forma parte de mi libro sobre como mejorar tus programas en Arduino. Puedes echarle un vistazo aquí.
Puedes ver todo este proceso en vídeo en mi canal de youtube: