Para contestar esta pregunta
valdría la pena preguntarnos primero qué es Assembler:
¿Qué es Assembler?
Como todos sabemos el lenguaje que entienden los microcontroladores es el lenguaje de máquina el cual
está formado por unos y ceros. El lenguaje empleado en este caso es el sistema binario, este sistema
binario a su vez es expresado en grupos de 8 bits llamados bytes que a su vez
son agrupados en palabras de código hexadecimales donde un byte está compuesto
por 2 números Hexadecimales.
¿Que contiene el lenguaje de máquina?
Los microcontroladores estan destinados a ejecutar una serie de tareas preconfiguradas por el diseñador, estas tareas pueden contener 2 tipos de valores o información:
- Ordenes hacia la máquina.
- Información asociada a las ordenes.
El lenguaje ensamblador
El lenguaje ensamblador es el encargado de expresar las
instrucciones que ejecutará el microcontrolador de una forma más cercana al lenguaje utilizado por el ser humano y a su vez muy cercana al microcontrolador,
ya que cada una de las instrucciones tiene una correspondencia al código de
máquina.
Las instrucciones de máquina se codifican en nemónicos los cuales son grupos de caracteres
alfanuméricos que simbolizan las ordenes o tareas a realizar por el microcontrolador ej: MOVLW 0X00
(MUEVE AL REGISTRO W EL VALOR 00).
El modo de funcionamiento se muestra en seguida:
figura2. codificación de un programa en assembler y decodificación en lenguaje máquina
En la figura 2 se explica el concepto de codificación de un programa en assembler, se muestra como el usuario es el artífice de realizar la codificación de los programas en un lenguaje Assembler donde el programa pasa por un software de compilación como el MPASM o el code warrior que se encarga de poner las instrucciones en formato Hexadecimal, entregando un programa de extensión . HEX que será escrito en la memoria interna del microcontrolador.
Caracteristicas de Assembler:
- Posee un número limitado de instrucciones, lo que hace que en ocasiones no se puedan realizar directamente operaciones complejas como la division, los logaritmos u otras instrucciones directamente.
- La cantidad de Instrucciones depende de las características internas del microcontrolador a utilizar.
- La ejecución de los programas sobre un microcontrolador depende directamente de la arquitectura del microcontrolador.
- El programador en este lenguaje tiene total libertad de modificar la gran mayoria de registros y parametros del microcontrolador.
Lenguaje C para los microcontroladores
El lenguaje C en los microcontroladores no depende de la
cantidad o repertorio de instrucciones que posee el microcontrolador, es
posible realizar
Lenguaje C.
El lenguaje C es un lenguaje de un nivel de abstracción mas
elevado, es decir se parece aún mas al lenguaje humano que el lenguaje
ensamblador, las instrucciones pueden ser ejecutadas casi que de igual manera
sobre cualquier arquitectura microcontrolada donde no se requiere como tal
conocer la arquitectura interna de los dispositivos microcontrolados. En muchos
aspectos este lenguaje resulta mucho mas sencillo para trabajar, los tiempos de
implementación pueden llegar a ser mucho menores.
En este tipo de lenguaje como tal se definen tipos de datos,
y el proceso de programación es nétamente estructurado es decir deben seguirse
los paradigmas de programación establecidos para su funcionamiento.
Ventajas de Assembler.
- A nivel académico conocer el lenguaje ensamblador permite conocer como tal la arquitectura interna de los dispositivos microcontrolados, lo que supone una ventaja particular al momento de poder entender a un nivel de detalle mayor como están compuestos estos dispositivos, teniendo en cuenta que la ejecución de cada instrucción en particular puede observarse en tiempo real y adicionalmente todos los registros internos pueden ser observados (se puede ver casi todo).
- Otra de las ventajas del lenguaje ensamblador a mi modo personal de ver las cosas (mi opinión) consiste en poder crear un nivel de abstracción cada vez mas alto mediante el manejo de subrutinas y etiquetas personalizadas, si bien por ejemplo no existe una instrucción dentro del microcontrolador que permita realizar la multiplicación de 2 números directamente (A*B) y poner el resultado en una variable llamada C pueden crearse subrutinas que permitan realizar estas labores.
- Los tiempos de ejecución pueden ser mejores que en C, si bien los programas en assembler son menos abstractos que en el lenguaje C, los programas pueden ser mejorados a todo nivel pudiendo crear programas mucho mas eficientes que los escritos en C.
Desventajas de Assembler
- El lenguaje ensamblador denota para quien lo aprende una curva de aprendizaje mas lenta que quien lo hiciera en C.
- Los programas deben ser enfocados tanto a la arquitectura interna como al tipo de microcontrolador.
- Realizar mejoras al código puede resultar mas complejo.

0 comentarios:
Publicar un comentario