Yo veo que cuando se programa en C se utiliza muchisimo menos lineas de codigo que en ASM. Entonces por qué Leon Pic dice que con ASM se hace menos lineas de codigo?
Estas en lo correcto, para el usuario son muchas menos lineas de codigo. Y eso es lo que lo hace atractivo
Pero cuando ves el ASM generado de una funcion de C te das cuenta que por algo simple que te llevaria unos 20 lineas en ASM, terminas con 50 lineas o muchisimas mas en C. Y hay peores casos.
En el foro se presento una vez la necesidad de hacer una formula para un servomotor, el autor dijo que lo pensaba hacer en ASM, el cual se le ayudo y la ecuacion en cuestion fue esta:
Posicion_Servo = 31 + ((int16)(ValorADC * 124) / 256);
terminamos con un codigo en ASM de 10 lineas para un ADC de 10bits o 8bits. Y utilizando unicamente 2 posiciones de memoria ( 1 para el resultado y otro temporal que puede usarse en cualquier otro lado del programa ).
Mientras que para hacer una comparativa con C esa formula que ves ahi tardaba 654 ciclos en realizarse, luego hice varias formulas en C para ver cual era la mejor, las simule para contar la cantidad de ciclos que necesitaba, algunos se acercaron BASTANTE a lo que habiamos realizado, pero otros no incluso eran mas ciclos que la ecuacion "original".
http://www.todopic.com.ar/foros/index.php?topic=44247.20La diferencia radica en que las funciones de C estan realizadas para todo tipo de valores, mientras que en ASM haces el codigo especifico para eso, pero tenes que volver a comenzar si deseas cambiarlo