lunes, 6 de febrero de 2012

Lenjuage Asembly Ventajas y Desventajas


Las computadoras son máquinas diseñadas para ejecutar las instrucciones que se le indican, de manera de resolver problemas  o  hacer algún otro tipo de cosas. Dichas instrucciones básicas no suelen ser más
complicadas  que  realizar una suma o resta, una comparación, leer un dato o escribir un resultado en la
memoria. Además, lo normal es que cada instrucción esté almacenada mediante un código en la memoria,
de forma que la computadora “ve” esos números y los entiende como instrucciones. También, estoscódigos son específicos de cada tipo de CPU. A este conjunto de instrucciones codificadas se le llama  lenguaje de máquina y es el único lenguaje que una computadora entiende.

Ahora bien, como programador, no resulta reconfortante pensar y escribir programas como una secuencia  de números, de la manera en que la computadora los quiere ver, sino que es natural verlos como una secuencia de instrucciones. Para ello, se define un lenguaje, en principio, que es un mapeo directo de esos  códigos a instrucciones comprensibles por un humano. A este lenguaje se lo denomina assembly o lenguaje de ensamble y al programa encargado de tomar programas escritos en assembly y generar los  códigos que la computadora entenderá se lo denomina assembler o ensamblador. Como veremos, no todas las instrucciones de assembly se corresponden directamente con instrucciones de lenguaje de máquina, sino que varias son instrucciones para el ensamblador mismo

Ventajas y desventajas del Lenguaje Ensamblador
El proceso de evolución trajo consigo algunas desventajas, que ahora veremos cómo las ventajas de usar el Lenguaje Ensamblador, respecto a un lenguaje de alto nivel:

1.Velocidad
2.Eficiencia de tamaño
3.Flexibilidad

Un programa escrito en el lenguaje ensamblador requiere considerablemente menos memoria y tiempo de ejecución que un programa escrito en los conocidos lenguajes de alto nivel, como C, C++, java, etc. 
El lenguaje ensamblador da a un programador la capacidad de realizar tareas muy técnicas que serian difíciles, si no es que imposibles de realizar en un lenguaje de alto nivel.

El conocimiento del lenguaje ensamblador permite una comprensión de la arquitectura de la maquina que ningún lenguaje de alto nivel puede ofrecer. 

Aunque la mayoría de los especialistas en Software desarrolla aplicaciones en lenguajes de alto nivel, que son más fáciles de escribir y de dar mantenimiento, una practica común es recodificar en lenguaje ensamblador aquellas rutinas que han causado cuellos de botella en el procesamiento.

Los programas residentes y rutinas de servicio de interrupción casi siempre son desarrollados en el lenguaje ensamblador

Por otro lado, al ser un lenguaje más primitivo, el Ensamblador tiene ciertas desventajas respecto a los lenguajes de alto nivel:
1.Tiempo de programación
2.Programas fuente grandes
3.Peligro de afectar recursos inesperadamente
4.Falta de portabilidad

Como para y donde que implementar un tipo de ensamblador.
El lenguaje ensamblador se puede implementar directamente desde la descripción de los estados en un block de notas, para realizar operaciones de bajo nivel que se son necesitarías en un programa para facilitar todo esto.

Para que se utilice el lenguaje ensamblador pero lo que investigue es que él se utiliza para realizar operaciones de memoria y facilitan los cosos porque un lenguaje de alto nivel tiene que decodifica las operaciones.

Para qué se usa
Porque hay aplicaciones o programas que deben tratar directamente con los registros de la máquina, la memoria, dispositivos de E/S, etc. Un programa ensamblador “bien hecho” produce un ejecutable más rápido y corto. 

El proceso de traducción se realiza en dos pasos:
* Primero: se recorre el programa fuente; por cada instrucción implementa el contador según el código de la instrucción. Comprueba si tiene o no etiqueta, y si la tiene coloca su símbolo y su dirección en la tabla de símbolos. Después compara el símbolo del código de operación con una tabla de símbolos posibles; si es válido sustituye el código real y si no emite un mensaje real; a continuación comprueba la síntasis.
* Segundo: recorre las instrucciones del módulo fuente reemplazando los símbolos por sus direcciones reales tomadas de la tabla.

Bibliografia
http://www.datuopinion.com/lenguaje-ensamblador
es.wikipedia.org/wiki/Lenguaje_ensamblado
weblidi.info.unlp.edu.ar/catedras/organiza/descargas/apunte4.pdf