Ensamblador

“PENSABA ESCRIBIRTE UNA CARTA, PERO DECIDí HACERTE UN RESUMEN, BIENVENIDO….ES GENIAL TENERTE ENTRE NOSOTROS”

UNIDAD I

ENSAMBLADOR

Lenguaje Ensamblador es la primera abstracción del Lenguaje de Máquina , consistente en asociar palabras clave que faciliten su uso por parte del programador

El Lenguaje Ensamblador es directamente traducible al Lenguaje de Máquina, y viceversa;simplemente, es una abstracción que facilita su uso para los seres humanos. Por otro lado, la computadora no entiende directamente al Lenguaje Ensamblador; es necesario traducirle a Lenguaje de Máquina.

Una característica que hay que resaltar, es que al depender estos lenguajes del hardware, hay un distinto Lenguaje de Máquina (y, por consiguiente, un distinto Lenguaje Ensamblador) para cada CPU. Porejemplo, podemos mencionar tres lenguajes completamente diferentes.

1.Lenguaje Ensamblador de la familia Intel 80×86
2.Lenguaje Ensamblador de la familia Motorola 68000
3.Lenguaje Ensamblador del procesador POWER, usado en las IBM RS/6000.

**Ventajas y desventajas del Lenguaje Ensamblador**

Una vez que hemos visto la evolución de los lenguajes, cabe preguntarse: ¿En estos tiempos”modernos”, para qué quiero el Lenguaje Ensamblador?

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

1. Velocidad

2. Eficiencia de tamaño

3. Flexibilidad

Por otro lado, al ser un lenguaje más primitivo, el Ensamblador tiene ciertas desventajas respecto a los lenguajes dealto nivel:

1. Tiempo de programación

2. Programas fuente grandes

3. Peligro de afectar recursos inesperadamente

4. Falta de portabilidad

**Velocidad **

El proceso de traducción que realizan los intérpretes, implica un proceso de cómputo adicional al que el programador quiere realizar. Por ello, nos encontraremos con que un intérprete es siempre más lento que realizar la mismaacción en Lenguaje Ensamblador, simplemente porque tiene el costo adicional de estar traduciendo el programa, cada vez que lo ejecutamos.

De ahí nacieron los compiladores, que son mucho más rápidos que los intérpretes, pues hacen la traducción una vez y dejan el código objeto, que ya es Lenguaje de Máquina, y se puede ejecutar muy rápidamente. Aunque el proceso de traducción es más complejo ycostoso que el de ensamblar un programa, normalmente podemos despreciarlo, contra las ventajas de codificar el programa más rápidamente.

Sin embargo, la mayor parte de las veces, el código generado por un compilador es menos eficiente que el código equivalente que un programador escribiría. La razón es que el compilador no tiene tanta inteligencia, y requiere ser capaz de crear código genérico,que sirva tanto para un programa como para otro; en cambio, un programador humano puede aprovechar las características específicas del problema, reduciendo la generalidad pero al mismo tiempo, no desperdicia ninguna instrucción, no hace ningún proceso que no sea necesario.

Para darnos una idea, en una PC, y suponiendo que todos son buenos programadores, un programa para ordenar una lista tardarácerca de 20 veces más en Visual Basic (un intérprete), y 2 veces más en C (un compilador), que el equivalente en Ensamblador.

Por ello, cuando es crítica la velocidad del programa, Ensamblador se vuelve un candidato lógico como lenguaje.

Ahora bien, esto no es un absoluto; un programa bien hecho en C puede ser muchas veces más rápido que un programa mal hecho en Ensamblador; sigue siendosumamente importante la elección apropiada de algoritmos y estructuras de datos. Por ello, se recomienda buscar optimizar primero estos aspectos, en el lenguaje que se desee, y solamente usar Ensamblador cuando se requiere más optimización y no se puede lograr por estos medios.

**Tamaño **

Por las mismas razones que vimos en el aspecto de velocidad, los compiladores e intérpretes generan más…