Lenguaje Ensamblador
Lenguaje Ensamblador
Lenguaje Ensamblador
Materia: Arquitectura de
Computadoras
Maestro: Arturo Benitez Cañedo
7mo cuatrimestre
Lenguaje Ensamblador
Un lenguaje ensamblador es uno lenguaje de programación de bajo nivel diseñado para un tipo específico de
procesador. Podemos producirlo por código fuente desde un lenguaje de programación de alto nivel (como C / C ++).
Pero también podemos escribir programas en este idioma nosotros mismos. A su vez, podemos convertir código
ensamblador en código máquina con la ayuda de un ensamblador.
Esto llego a ser muy complicado debido a que se debían aprender series enormes de códigos binarios para realizar
operaciones. Por ejemplo: Para realizar la suma se tenia una instrucción binaria muy similar a "00101010010100101". Es
por eso que se complicaba demasiado manejar este tipo de programación. Actualmente manejamos lenguajes de Alto
nivel que son relativamente sencillos a comparación con el lenguaje maquina. Pero no se llego al alto nivel desde
el código binario, existe un lenguaje que nació para facilitar el binary code. Este se llama "LENGUAJE ENSAMBLADOR".
Sin embargo, la tarea no es tan sencilla, ya que existen muchos tipos de hardware, con procesadores y
microprocesadores diseñados en torno a arquitecturas muy distintas entre sí.
Esto le otorga a la tarea un grado de dificultad bastante alto. Pero los lenguajes ensambladores comparten cierto tipo de
características, las cuales vamos a citar a partir de este punto.
Como mencionamos más arriba en este artículo, una de las principales características del lenguaje ensamblador es que
no permite portarse a otras arquitecturas.
Esto significa que un código que haya sido escrito para un determinado microprocesador o procesador no servirá para
otro modelo o fabricante, salvo que lleves a cabo un rediseño muy importante.
En este sentido, las arquitecturas de procesador más conocidas y usadas son las Intel x86 e Intel x64, las arquitecturas de
AMD y la arquitectura ARM. Esta última arquitectura es utilizada en smartphones, tablet y computadoras portátiles más
modernas.
El hecho de que cada lenguaje de ensamblado sea específico para una arquitectura determinada, tanto de una
computadora física o computadora virtual, impide que se puedan crear desarrollos verdaderamente multiplataforma.
Esto sí lo puedes desarrollar en lenguajes de programación de alto nivel como JAVA o C.
Otra característica sobresaliente de las apps desarrolladas directamente en un lenguaje ensamblador, es que son mucho
más eficientes en términos de recursos del sistema, y mucho más rápidos también.
Un programa desarrollado en lenguaje ensamblador puede ser bastante más eficiente que un programa desarrollado en
un lenguaje de alto nivel.
Sin embargo, gracias a los compiladores de los lenguajes de programación de alto nivel actuales, esta característica es
cada vez menos requerida.
Esto es debido a que mediante estos lenguajes en la actualidad se pueden crear también programas muy eficientes en
términos de velocidad y estabilidad.
También mediante el lenguaje ensamblador los desarrolladores pueden tener un control mucho más efectivo de los
procesos a llevar a cabo por el procesador que se está programando.
Esto es gracias a que este lenguaje, como mencionamos, ofrece la particularidad de poder comunicarse directamente
con el hardware. Esta es una función que no se encuentra disponible en lenguajes de alto nivel, y que permite diseñar
código muy específico.
Cabe destacar que el código fuente resultante de este desarrollo en lenguaje ensamblador tiene la extensión “asm”. A
partir de este archivo se crea el código máquina, el cual suele tener una extensión de archivo “Hex”.
Tipos de ensambladores
En la actualidad existen múltiples tipos de lenguaje ensamblador, así como categorías de ensambladores que si bien
realizan la misma función final, varían de acuerdo al tipo de escenario en el que se lo utiliza.
Ensamblador Cruzado: El primer tipo de ensamblador permite el soporte de medios físicos tales como periféricos de
entrada y salida. Es utilizado principalmente en el desarrollo de programación para sistemas específicos.
Ensamblador Residente: Este tipo de ensambladores permanecen en la memoria de la computadora, y solamente se
cargan para permitir la ejecución del programa objeto producido. Este tipo de ensamblador es el más usado para la
ingeniería de sistemas de control más pequeños.
Macroensambladores: Este tipo específico de ensamblador permite el uso de macroinstrucciones. Son aplicaciones,
muchas veces de gran tamaño, que tienen la particularidad de no permanecer en memoria una vez que se ha terminado
de generar el código objeto.
Macroensambladores: Este tipo de ensambladores le proporciona al interprete instrucciones precisas de cómo debe
llevar a cabo la CPU una determinada tarea.
Ensambladores de una fase: Los ensambladores de una fase tienen la particularidad de leer una línea de programa
fuente, traducirla directamente y producir una instrucción en lenguaje máquina por vez. Este tipo de ensambladores son
sencillos de utilizar, y además brindan como beneficio ocupar poco espacio en memoria.
Ensambladores de dos fases: Es el tipo de ensamblador más usado en la actualidad. Su nombre se debe a que todo el
proceso de traducción y ejecución se lleva a cabo en dos etapas. En la primera de ellas el ensamblador analiza el código
fuente y lo construyen en una tabla de símbolos. En la segunda etapa, se vuelve a analizar el código fuente del programa
ya para traducirlo.
Los cuatro campos de la sentencia son opcionales. En el caso que no se completara cualquiera de ellos, se tendría una
sentencia vacía.
Instrucciones: Estas sentencias representan órdenes al procesador y tras el proceso de compilación, son capaces de
generar código ejecutable.
Directivas: Estas sentencias dirigen el proceso de compilación o construcción del programa ejecutable, pero no son
capaces de generar código ejecutable. Usualmente son utilizadas para aumentar la legibilidad del código fuente.
(Model) Segmento de datos: Contiene la dirección donde inicia la declaración de variables. Se escribe la variable.
(Stack) Segmento de código: Contiene la dirección de inicio donde se encuentran las instrucciones del programa. Se
escribe todo el código del programa a desarrollar.
(Data) Segmento de pila: Contiene la dirección donde se encuentra la pila.
(Code) Segmento Extra: Contiene la dirección donde podemos almacenar datos extras.
Desde hace muchos años, existe una importante dispersión entre los diferentes desarrolladores de lenguajes
ensambladores a la hora de nombrar y categorizar las diferentes partes de su lenguaje.
Sin embargo, lo cierto es que puedes tener la seguridad que ellos se corresponden con una nomenclatura más estándar.
Podría decirse que los elementos básicos del lenguaje ensamblador son:
Etiquetas: Básicamente, una etiqueta es una palabra utilizada para designar alguna línea o sección del programa. Esta se
puede usar hacer saltos entre diferentes partes del código hacia esa etiqueta. Cabe destacar que estas etiquetas
siempre deben comenzar con una letra o con un guion bajo “_”. El tamaño máximo de una etiqueta puede alcanzar
hasta los 32 caracteres de longitud.
Instrucciones: Las instrucciones no son otra cosa que las operaciones que debe realizar el microcontrolador. Estas
instrucciones que pueden llevar a cabo cada microcontrolador ya se encuentran definidas en su hoja de datos.
Operandos: Los operandos son los elementos básicos empleados en la instrucción que se está ejecutando en ese
momento. Generalmente, los operandos son todos los registros, las variables o las constantes.
Directivas: Las directivas cumplen una función parecida a las instrucciones. Sin embargo, existe una diferencia. Las
directivas son propias del lenguaje ensamblador, pero son independientes del chip microcontrolador que se utilice en el
proyecto. Las directivas representan ciertas características del lenguaje ensamblador, y se utilizan para especificar el
procesador empleado, así como su configuración. También son utilizadas con el propósito de asignar locaciones de
memoria, entre muchas otras tareas.
Comentarios: Los comentarios no son otra cosa que cualquier frase que puedes escribir en el propio código para hacerlo
más claro para quien lo lea, o para ti mismo. Cabe destacar que estos comentarios los puedes ubicar en cualquier parte
de tu código, siempre y cuando comiencen con un punto y coma “;”.
En la actualidad tienes disponibles unas cuantas ofertas como para comenzar a hacer tus propios programas en lenguaje
ensamblador.
Alguna de las alternativas más usadas y populares entre los desarrolladores son las siguientes:
bibliografia
http://lenguaje-ensamblador.blogspot.com/2012/09/historia-del-lenguaje-ensamblador.html
https://www.tecnologia-informatica.com/el-lenguaje-ensamblador/#Qu%C3%A9_es_el_lenguaje_ensamblador