El ensamblador es un lenguaje de programacin que, por la traduccin directa de los
mnemnicos a instrucciones maquina, permite realizar aplicaciones rpidas, solucionando situaciones en las que los tiempos de ejecucin constituye el factor principal para que el proceso discurra con la suficiente fluidez. Esta situacin, que indudablemente s influye sobre la eleccin del lenguaje de programacin a utilizar en el desarrollo de una determinada rutina, y dada la aparicin de nuevos compiladores de lenguajes de alto nivel que optimizan el cdigo generado a niveles muy prximos a los que un buen programador es capaz de realizar en ensamblador, no es la nica razn para su utilizacin.
Es sobradamente conocido que los actuales sistemas operativos son programados en su mayor parte en lenguajes de alto nivel, especialmente C, pero siempre hay una parte en la que el ensamblador se hace casi insustituible bajo DOS y es la programacin de los driverspara los controladores de dispositivos, relacionados con las tareas de ms bajo nivel de una mquina, fundamentalmente las operaciones de entrada/salida en las que es preciso actuar directamente sobre los dems chips que acompaan al microprocesador. Por ello y porque las instrucciones del lenguaje ensamblador estn ntimamente ligadas a la mquina, vamos a realizar primero un somero repaso a la arquitectura interna de un microordenador.
1.1. - ARQUITECTURA VON NEWMAN.
Centrndonos en los ordenadores sobre los que vamos a trabajar desarrollar a grandes rasgos la arquitectura Von Newman que, si bien no es la primera en aparecer, s que lo hizo prcticamente desde el comienzo de los ordenadores y se sigue desarrollando actualmente. Claro es que est siendo desplazada por otra que permiten una mayor velocidad de proceso, la RISC.
En los primeros tiempos de los ordenadores, con sistemas de numeracin decimal, una electrnica sumamente complicada muy susceptible a fallos y un sistema de programacin cableado o mediante fichas, Von Newman propuso dos conceptos bsicos que revolucionaran la incipiente informtica:
a) La utilizacin del sistema de numeracin binario. Simplificaba enormemente los problemas que la implementacin electrnica de las operaciones y funciones lgicas planteaban, a la vez proporcionaba una mayor inmunidad a los fallos (electrnica digital).
b) Almacenamiento de la secuencia de instrucciones de que consta el programa en una memoria interna, fcilmente accesible, junto con los datos que referencia. De este forma la velocidad de proceso experimenta un considerable incremento; recordemos que anteriormente una instruccin o un dato estaban codificados en una ficha en el mejor de los casos.
Tomando como modelo las mquinas que aparecieron incorporando las anteriores caractersticas, el ordenador se puede considerar compuesto por las siguientes partes:
- La Unidad Central de Proceso, U.C.P., ms conocida por sus siglas en ingls (CPU). - La Memoria Interna, MI. - Unidad de Entrada y Salida, E/S. - Memoria masiva Externa, ME.
Realicemos a continuacin una descripcin de lo que se entiende por cada una de estas partes y cmo estn relacionadas entre si:
- La Unidad Central de Proceso (CPU) viene a ser el cerebro del ordenador y tiene por misin efectuar las operaciones aritmtico-lgicas y controlar las transferencias de informacin a realizar.
- La Memoria Interna (MI) contiene el conjunto de instrucciones que ejecuta la CPU en el transcurso de un programa. Es tambin donde se almacenan temporalmente las variables del mismo, todos los datos que se precisan y todos los resultados que devuelve.
- Unidades de entrada y salida (E/S) o Input/Output (I/O): son las encargadas de la comunicacin de la mquina con el exterior, proporcionando al operador una forma de introducir al ordenador tanto los programas como los datos y obtener los resultados.
Como es de suponer, estas tres partes principales de que consta el ordenador deben estar ntimamente conectadas; aparece en este momento el concepto de bus: el bus es un conjunto de lneas que enlazan los distintos componentes del ordenador, por ellas se realiza la transferencia de datos entre todos sus elementos.
Se distinguen tres tipos de bus:
- De control: forman parte de l las lneas que seleccionan desde dnde y hacia dnde va dirigida la informacin, tambin las que marcan la secuencia de los pasos a seguir para dicha transferencia. - De datos: por l, de forma bidireccional, fluyen los datos entre las distintas partes del ordenador. - De direcciones: como vimos, la memoria est dividida en pequeas unidades de almacenamiento que contienen las instrucciones del programa y los datos. El bus de direcciones consta de un conjunto de lneas que permite seleccionar de qu posicin de la memoria se quiere leer su contenido. Tambin direcciona los puertos de E/S.
La forma de operar del ordenador en su conjunto es direccionar una posicin de la memoria en busca de una instruccin mediante el bus de direcciones, llevar la instruccin a la unidad central de proceso -CPU- por medio del bus de datos, marcando la secuencia de la transferencia el bus de control. En la CPU la instruccin se decodifica, interpretando qu operandos necesita: si son de memoria, es necesario llevarles a la CPU; una vez que la operacin es realizada, si es preciso se devuelve el resultado a la memoria.
1.2. - EL MICROPROCESADOR.
Un salto importante en la evolucin de los ordenadores lo introdujo el microprocesador: se trata de una unidad central de proceso contenida totalmente en un circuito integrado. Comenzaba as la gran carrera en busca de lo ms rpido, ms pequeo; rpidamente el mundo del ordenador empez a ser accesible a pequeas empresas e incluso a nivel domstico: es el boom de los microordenadores personales. Aunque cuando entremos en la descripcin de los microprocesadores objeto de nuestro estudio lo ampliaremos, har un pequeo comentario de las partes del microprocesador:
- Unidad aritmtico-lgica: Es donde se efectan las operaciones aritmticas (suma, resta, y a veces producto y divisin) y lgicas (and, or, not, etc.). - Decodificador de instrucciones: All se interpretan las instrucciones que van llegando y que componen el programa. - Bloque de registros: Los registros son celdas de memoria en donde queda almacenado un dato temporalmente. Existe un registro especial llamado de indicadores, estado o flags, que refleja el estado operativo del microprocesador. - Bloque de control de buses internos y externos: supervisa todo el proceso de transferencias de informacin dentro del microprocesador y fuera de l.