1.1 Importancia de la programación en lenguaje ensamblador

Resultado de imagen para ensamblador
Hola bienvenidos a mi Blog, regresamos despues de unas merecidas vacaciones (aunque si me es permitido hablar pues aun queria una semana mas), en fin como dice mi padre el tiempo siempre se llega.

El día de hoy estaremos hablando del lenguaje Ensamblador. En el mundo de la computación existe una infinidad de lenguajes de programación y la verdad es que los podemos clasificar en 3 tipos basicamente:
  • Lenguajes de Bajo Nivel
  • Lenguajes de Medio Nivel
  • Lenguajes de Alto Nivel
Si hoy es cierto que la programación actualmente es relativamente sencillo es devido al hecho de la existencia de los lenguajes de Alto Nivel (como java, python, c++, las plataformas .NET de Microsoft), esto debido a que las instrucciones que encontramos en estos son simples, cortas en su mayoria y cercanas una forma mas natural de usar.

Sin embargo los lenguajes de alto nivel no son los unicos, veras existen muchos mas lenguajes, uno de los mas importantes son los lenguajes de bajo nivel. Los lenguajes de bajo nivel son aquellos que poseen un método muy rudimentario para dar ordenes al computador es decir es aquel en el que sus instrucciones ejercen un control directo sobre el hardware y están condicionados por la estructura física de las computadoras que lo soportan, en pocas palabras las instrucciones escritas son totalmente dependientes de la maquina y generalmente hoy siguen siendo usados para generar drivers especialmente personalizados. Los lenguajes de bajo nivel pueden ser subdivididos en:

Lenguaje Maquina: Es el lenguaje de programación que entiende directamente la computadora. Este lenguaje de programación utiliza el sistema binario, es decir utiliza los dígitos binarios 0 y 1 para formar las ordenes entendibles por el hardware de la maquina. Este lenguaje es mucho más rápido que los lenguajes de alto nivel.  La desventaja es que son bastantes difíciles de manejar y usar, además de tener códigos fuente enormes donde encontrar un fallo es casi imposible.
Lenguaje Ensamblador: es un derivado del lenguaje maquina y esta formado por abreviaturas de letras y números llamadas mnemotécnicos. Con la aparición de este lenguaje se crearon los programas traductores para poder pasar los programas escritos en lenguaje ensamblador a lenguaje máquina. Como ventaja con respecto al código máquina es que los códigos fuentes eran más cortos y los programas creados ocupaban menos memoria. Las desventajas de este lenguaje siguen siendo prácticamente las mismas que las del lenguaje ensamblador, añadiendo la dificultad de tener que aprender un nuevo lenguaje difícil de probar y mantener.

Si alguna vez has trabajado en C, C++ o Python te habras dado cuenta de que al momento de depurar nuestros programas o simplemente ejecutarlos dentro del entorno de desarrollo, el interprete o compilador generalmente genera un archivo .obj en C o .pyc en Python. Estos son archivos objeto y contienen nuestro código fuente convertido por el mismo compilador o interprete a código ensamblador para posteriormente ser traducido a lenguaje maquina.

De esta manera, el programa que convierte el código ensamblador a lenguaje maquina es, vaya la redundancia, el ensamblador, existen varios lenguajes como Cobol, C y Fortran que cuentan con un ensamblador incorporado en su compilador, a su vez varios tipos de ensambladores:
  • ENSAMBLADORES CRUZADOS: permiten el soporte de medios fisicos como pantallas, impresoras, teclado, etc. y la programacion que ofrecen maquinas potentes que luego seran ejecutados en sistemas especializados.
  • ENSAMBLADORES RESIDENTES: permanecen en la memoria de la computadora, y cargan para su ejecucion al programa objeto producido. es el indicado para el desarrollo de pequeños sistemas de control.
  • MACROENSAMBLADORES: permiten el uso de macroinstrucciones, son programas grandes que no permanecen en memoria una ves que se a genereado el codigo objeto, normalmete son programas complejos y residentes.
  • MICROENSAMBLADORES: Indica al interprete las instrucciones de como debe actuar la CPU. 
  • ENSAMBLADORES DE UNA FASE: leen una linea de programa fuente y la traducen directamente para producir una instruccion en lenguaje maquina, estos ensambladores son sencillos, baratos y coupan poco espacio.
  • ENSAMBLADORES DE DOS FASES: se llaman asi por que realizan la traduccion en dos etapas, en la primera fase revisan el codigo fuente y lo construyen en una tabla de simbolos, en la segunda fase vuelven a leer el programa fuente y pueden tradirlo por completo. estos ensabladores son los mas utilizados en la actualidad.
Características de los lenguajes ensambladores:
  • El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido directamente por un ser humano ya que su estructura se acerca más bien al lenguaje máquina, es decir, lenguaje de bajo nivel.
  • El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un Microprocesador, suele necesitar ser modificado, muchas veces en su totalidad para poder ser usado en otra máquina distinta, aun con el mismo Microprocesador, solo pueden ser reutilizados secciones especiales del código programado.
  • Los programas hechos en lenguaje ensamblador, al ser programado directamente sobre Hardware, son generalmente más rápidos y consumen menos recursos del sistema (memoria RAM y ROM). Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto nivel. 
  • Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un Microprocesador por lo que se pueden crear segmentos de código difíciles de programar en un lenguaje de alto nivel.
  • También se puede controlar el tiempo en que tarda una Rutina en ejecutarse, e impedir que se interrumpa durante su ejecución.
  • El lenguaje ensamblador es un código estructurado y gravitatorio desarrollado sobre un archivo de programación (.ASM), en el cual pueden existir varios programas, macros o rutinas que pueden ser llamados entre si.
Ahora dentro de lo escrito hemos mencionado una palabra muy importante "mnemotécnia", una regla mnemotécnica es una oración corta y fácil de recordar que ayuda de manera artificiosa a relacionar palabras, con el objetivo de memorizar conceptos con más facilidad.

La mnemotecnia o nemotecnia ―conocida también por los latinismos «ars memoriae» o «ars memorativa»― es un conjunto de técnicas de memorización y rememoración basada en la asociación mental de la información a memorizar con datos que ya sean parte de la memoria o de la práctica cotidiana.

Técnica mnemotécnia para saber los meses del año con 30 y 31 dias

De esta manera un código mnemotécnico (o código nemotécnico) es un sistema sencillo utilizado para recordar una secuencia de datos, nombres, números, y en general para recordar listas de items que no pueden recordarse fácilmente, podemos mencionar declaración de variables o incluso espacios de memoria.

Lenguajes Ensambladores:
Sin importar varias caracteristicas a favor de los lenguajes de este tipo no son muy utilizados actualmente por la comunidad de programadores, esto debido al tiempo que toma en desarrollar algun sistema en estos lenguajes. Por poner un ejemplo, el desarrollo de un sistema operativo escrito en C, que por lo regular tomaria 1 año por decir algo, en ensamblador tomaría 20 años. Actualmente en palabras de Fernando Zorrilla Autor del blog Quora menciona "La programación en lenguaje assembler es útil en algunas áreas, especialmente en lo que es protección y desprotección de aplicaciones y en la construcción particular de drivers customizados."
  • ARB assembly language
  • Autocoder
  • COMPASS
  • Cross assembler
  • MACRO-11
  • MACRO-10
  • Macro assembler
  • IBM Basic assembly language
  • MC7 (computing)
  • X86 assembly language

Fuentes:
https://es.wikipedia.org/wiki/Regla_mnemot%C3%A9cnica
https://es.quora.com/La-programaci%C3%B3n-en-lenguaje-ensamblador-es-realmente-%C3%BAtil-hoy-en-d%C3%ADa
https://hackxcrack.net/foro/asm/que-tipo-de-lenguaje-ensamblador-conviene-mas-aprender/
https://en.wikipedia.org/wiki/Category:Assembly_languages
https://es.wikipedia.org/wiki/Código_mnemotécnico
https://www.unioviedo.es/ate/alberto/TEMA3-Ensamblador.pdf
https://www.ecured.cu/Lenguaje_ensamblador
https://es.wikipedia.org/wiki/Lenguaje_ensamblador
https://studentplace98.blogspot.com/2018/12/fundamentos-de-programacion.html
https://studentplace98.blogspot.com/2018/12/fundamentos-de-programacion-paradigmas.html
https://studentplace98.blogspot.com/2018/12/fundamentos-de-programacion-tipos-de.html
https://es.wikipedia.org/wiki/Lenguaje_ensamblador

Comentarios