La velocidad para realizar los procesos es mayor en assembler, ya que los compiladores no minimizan al maximo el tamaño de codigo, cosas que si eres tu el que programa y sabes te saldra un codigo mucho mas compacto y por tanto mas veloz en ejecucion, para encender un led da igual pero habra procesos en los que el tiempo es critico.
Los procesadores tipo Risc como los Pics se caracterizan por optimizar codigo por dos
caminos (Tamaño o Tiempo de ejecucion).Caso curioso que para lograr la mayor velocidad hay que evitar compactar codigo, si no crees revisa los ejemplos de Microchip
para tamaño y velocidad,te daras cuenta que para velocidad no escatiman en el gasto de memoria.Asi que no va lo de mas compacto = mas velocidad por el contrario.
Assembler te permite entender y comprender mejor a los microcontroladores y tener un dominio mayor sobre ellos, en C se pierde un poco la esencia del micro: el tener que configurar registros, activas bits de un registro...por ejemplo el configurar el adc, en assembler tienes que saber en cada momento que significa cada bits de los registros implicados y como configurarlo, en c tienes que configurar pero de una forma menos completa(ya te lo hace el)
El entendimiento de un micro no te lo da su asembler sino el conocimiento de bloques y modulos,caracteristicas electricas de sus puertos,etc.
No se si tiene algun sentido en estos tiempos sumergirse (lo hice en el pasado) en los detalles de que el bit5 del registro N hace tal o cual cosa si existe una funcion en
C que lo configura en forma correcta (
si esto no es un dominio mayor, no se que lo es) de acuerdo a los parametros que le entregas para despues trabajar en forma eficiente con ese modulo que C configuro y que te funciona a la primera.
quiero decir es que se pierde de vista el concepto del hardware y en gran parte de su funcionamiento y configuracion.
No es cierto por que el Hardware que estas programando lo diseñaste y construiste tu mismo por tanto estas siempre ligado a su esencia.
la prueba es que cualquiera puede programar en C pero no en assembler
Durante años programe para varios micros (Z80,8031,68000,6800,Pics,ARM) en asembler se lo que es lidiar con asemblers de diferente tipo pasando horas revisando rutinas que parecian optimas y que no funcionaban por que colocates datos en un registro o memoria ya ocupada del cual no te diste cuenta.Ahora con el cambio a C (que no es una moda sino una necesidad) no retorno al asembler.