sábado, 29 de enero de 2011

Lenguaje de Bajo Nivel


          Se llaman de bajo nivel porque están muy cercanos al hardware del ordenador. Es necesario conocer a fondo la arquitectura de la maquina para la que se va a programar.

           El primer lenguaje de este tipo que se utilizó fue el lenguaje máquina, que consiste en un conjunto de instrucciones en binario, es decir, con ceros y unos, con los cuales se indica al ordenador qué hacer. Este lenguaje es muy complicado y la posibilidad de cometer errores es muy alta, por lo que ya no se utiliza.

          Para solventar estas dificultades apareció el lenguaje ensamblador, que consiste en asignar una abreviatura a cada instrucción en binario, de forma que sea más fácil recordarla y más difícil equivocarse. Sin embargo, con este lenguaje sigue siendo necesario conocer muy bien el hardware del ordenador.

Lenguaje de Máquina


          Es el lenguaje mas básico, propio de cada computadora, ya que está relacionado con el diseño del hardware de la misma (dependiente de la máquina). Por lo general consisten en cadenas de números al final reducidos a ceros y unos (sistema numérico binario). 

Operaciones: Cargar, Almacenar, Sumar, Restar.

Ejemplo: 

Código de Dirección Significado operación  00010101 10000001 (a) Cargar contenido de la dirección. 129 en Acumulador  00010111 10000010 (b) Sumar contenido de la dirección 130 al Acumulador  00010110 10000011 (c) Almacenar contenido del Acumulador  en la dirección. 131 (c) 10000011 = 27+21+20 = 131.

Lenguaje Ensamblador


Lenguaje de bajo nivel o ensamblador :
  • La computadora no entiende directamente lenguaje ensamblador por lo que un programa escrito en este lenguaje tiene que ser traducido a lenguaje de máquina por un programa llamado un ensamblador para que pueda ser ejecutado por la computadora.
  • Los lenguajes ensambladores todavía requieren que el programador tenga un buen conocimiento de la arquitectura de la computadora.
  • Como los lenguajes ensambladores son dependientes de la máquina, todo programa escrito en un lenguaje ensamblador particular tendrá que ser reescrito si se va a ejecutar en otro tipo de computadora.  
  • Consiste en abreviaturas similares al inglés, llamadas instrucciones mnemotécnicas, que permiten representar las operaciones elementales de la computadora (dependiente de la máquina).
  • Ejemplo:
  • Código operación Dirección Inst en lenguaje ensamblador
  • 00010101 10000001 LOAD A
  • 00010111 10000010 ADD B
  • 00010110 10000011 STORE C
1.    Los lenguajes de bajo nivel son mas fáciles de utilizar que los lenguajes máquina, pero, al igual que ellos, dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador. Las instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotécnicos. Por ejemplo, nemotécnicos típicos de operaciones aritméticas son: en inglés, ADD, SUB, DIV, etc.; en español, SUM,RES,DIV,etc. 

          Una instrucción típica de suma sería: ADD M, N, P. Esta instrucción podría significar “sumar el número contenido en la posición de memoria M al número almacenado en la posición de memoria N y situar el resultado en la posición de memoria P”. Evidentemente es mucho más sencillo recordar la instrucción anterior con un nemotécnico que su equivalente en código máquina”.

0110 1001 1010 1011

          Un programa escrito en lenguaje ensamblador no puede ser ejecutado directamente por la computadora en esto se diferencia esencialmente del lenguaje máquina, sino que requiere una fase de traducción al lenguaje máquina.

          El programa original escrito en lenguaje ensamblador se denomina programa fuente y el programa traducido en lenguaje máquina se conoce como programa objeto, ya directamente entendible por la computadora.

          El traductor de programas fuente a objeto es un programa llamado ensamblador, existente en casi todos los computadores.

Programa fuente en ensamblador (assembly)

Programa Ensamblador (assembler)

Programa objeto en código máquina.

Características


          Se trabaja a nivel de instrucciones, es decir, su programación es al más fino detalle. Está orientado a la máquina.

Primera generación

          El lenguaje de programación de primera generación (por sus siglas en inglés, 1GL), es el lenguaje de código máquina. Es el único lenguaje que un microprocesador entiende de forma nativa. El lenguaje máquina no puede ser escrito o leído usando un editor de texto, y por lo tanto es raro que una persona lo use directamente.

Segunda generación

          El lenguaje de programación de segunda generación (por sus siglas en inglés, 2GL), es el lenguaje ensamblador. Se considera de segunda generación porque, aunque no es lenguaje nativo del microprocesador, un programador de lenguaje ensamblador debe conocer la arquitectura del microprocesador (como por ejemplo las particularidades de sus registros o su conjunto de instrucciones).

Ventajas del lenguaje ensamblador


          Los lenguajes ensambladores presentan la ventaja frente a los lenguajes máquina de su mayor facilidad de codificación y, en general, su velocidad de cálculo.

         Uso: ventajas e inconvenientes. En general se utiliza este tipo de lenguaje para programar controladores (drivers).

La programación en un lenguaje de bajo nivel como el lenguaje de la máquina o el lenguaje simbólico tiene ciertas ventajas:

Mayor adaptación al equipo.

Posibilidad de obtener la máxima velocidad con mínimo uso de memoria.

Pero también tiene importantes inconvenientes:

Imposibilidad de escribir código independiente de la máquina.

Mayor dificultad en la programación y en la comprensión de los programas.

El programador debe conocer más de un centenar de instrucciones.

Es necesario conocer en detalle la arquitectura de la máquina.

Desventajas del lenguaje ensamblador


Los inconvenientes más notables de los lenguajes ensambladores son:

·         Dependencia total de la máquina lo que impide la transportabilidad de los programas. El lenguaje ensamblador del PC es distinto del lenguaje ensamblador del Apple Macintosh.

·         La formación de los programadores es más compleja que la correspondiente a los programadores de alto nivel, ya que no sólo las técnicas de programación, sino también el conocimiento del interior de la máquina.

           Hoy día los lenguajes ensambladores tienen sus aplicaciones mas reducidas en la programación de aplicaciones y se centran en aplicaciones de tiempo real, control de procesos y de dispositivos electrónicos, etc.