Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Lenguaje Ensamblador

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 5

Alumno: Azael Lugos García

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.

Un ensamblador es un programa que ejecuta la computadora y convierte instrucciones en un patrón de bits. El


procesador puede usarlo para realizar operaciones básicas. Algunas personas llaman a estas instrucciones lenguaje
ensamblador y otras usan el término lenguaje ensamblador.

Historia del Lenguaje Ensamblador


Para poder programar en Bajo nivel(Ensamblador) debemos conocer desde lo básico hasta lo mas complicado.
La primera computadora programable fue la ENIAC en 1946 pero se programaba mediante circuitos complejos que no
eran nada funcionales. Después se empezó a utilizar el lenguaje maquina que son claves binaras que representan
un CÓDIGO DE OPERACIÓN(OPCODE). Estas se almacenan en grupos de instrucciones llamados PROGRAMAS.

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".

Características del lenguaje ensamblador


Así como los seres humanos necesitamos de un lenguaje para poder comunicarnos, el hardware también requiere de
una manera que nos permita “hablar” con sus procesadores y hacerlos llevar a cabo lo que pretendemos.
El hardware es incapaz de entender lo que le proponemos, ya que sólo usa una combinación de unos y ceros, llamado
lenguaje de máquina. Así que es necesario tener un lenguaje que oficie de intermediario.
Esta es la función básica de un 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.

Como es un programa en lenguaje ensamblador


Básicamente, un programa realizado en lenguaje ensamblador estará formado por una secuencia de sentencias. Cada
una de estas sentencias ocupa una sola línea y se puede observar de la siguiente manera:
[etiqueta] [operación] [operando] [ comentarios]

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.

Elementos básicos del lenguaje ensamblador

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 “;”.

Programas de lenguaje ensamblador

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:

 Assembler RosAsm: RosAsm o “ReactOS ASseMbler” básicamente es un lenguaje ensamblador x86 de 32 bits


para Win32 ofrecido bajo los términos de la licencia GNU.
 Flat Assembler: Flat Assembler, también conocido como “FASM”, es un ensamblador libre, multi-paso para
arquitecturas IA-32,2 y x86-64.
 Microsoft Macro Assembler: Microsoft Macro Assembler, también conocido como “MASM” es un ensamblador
para la familia x86 de microprocesadores, desarrollado por Microsoft.
 Turbo Assembler: Turbo Assembler, también conocido como “TASM” es básicamente un paquete ensamblador
desarrollado por Borland específicamente para la plataforma del IBM PC y microprocesadores x86.
 GNU Toolchain: GNU Toolchain es un paquete conteniendo las herramientas de desarrollo para la plataforma
GNU. También se incluye un ensamblador.
 Assembler GNU: GNU Assembler, también conocido como “GAS”, es el ensamblador del proyecto GNU, usado
para compilar Linux y otros sistemas operativos GNU.
 a86 Assemblers: Este ensamblador comercial fue desarrollado para su uso con la familia de procesadores Intel
x86.
 a86 y a386: A86 es un compacto ensamblador comercial desarrollado para la familia de procesadores Intel X86
por Eric Isaacson. El ensamblador es capaz de producir archivos .COM o .OBJ compatibles con Windows/DOS
desde un archivo de texto de código fuente. El a86/d86 están dirigidos a la plataforma x86 de 16 bits, al
contrario que el a386 y d386, los cuales fueron desarrollados plataformas de 32 bits.

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

También podría gustarte