Vous êtes sur la page 1sur 21

INGENIERIA EN SISTEMAS COMPUTACIONALES UNIDAD 1 - 2

ASIGNATURA: LENGUAJE ENSAMBLADOR

PROFESOR: ROGELIO MIRANDA

ALUMNO: JAVIER REYES MARTINEZ

CARRERA: INGENIERIA EN SISTEMAS COMPUTACIONALES


Chilpancingo Gro. Diciembre de 2011

MICROPROCESADORES
El microprocesador, o simplemente el micro, es el cerebro del ordenador. Es un chip, un tipo de componente electrnico en cuyo interior existen miles (o millones) de elementos llamados transistores, cuya combinacin permite realizar el trabajo que tenga encomendado el chip. Los micros, como los llamaremos en adelante, suelen tener forma de cuadrado o rectngulo negro, y van o bien sobre un elemento llamado zcalo (socket en ingls) o soldados en la placa o, en el caso del Pentium II, metidos dentro de una especie de cartucho que se conecta a la placa base (aunque el chip en s est soldado en el interior de dicho cartucho). A veces al micro se le denomina "la CPU" (Central Process Unit, Unidad Central de Proceso), aunque este trmino tiene cierta ambigedad, pues tambin puede referirse a toda la caja que contiene la placa base, el micro, las tarjetas y el resto de la circuitera principal del ordenador. PARTES DE UN MICROPROCESADOR En un micro podemos diferenciar diversas partes:

el encapsulado: es lo que rodea a la oblea de silicio en s, para darle consistencia, impedir su deterioro (por ejemplo por oxidacin con el aire) y permitir el enlace con los conectores externos que lo acoplarn a su zcalo o a la placa base. la memoria cach: una memoria ultrarrpida que emplea el micro para tener a mano ciertos datos que previsiblemente sern utilizados en las siguientes operaciones sin tener que acudir a la memoria RAM, reduciendo el tiempo de espera. el coprocesador matemtico: o, ms correctamente, la FPU (Floating Point Unit, Unidad de coma Flotante). Parte del micro especializada en esa clase de clculos matemticos; antiguamente estaba en el exterior del micro, en otro chip. el resto del micro: el cual tiene varias partes (unidad de enteros, registros, etc.) que no merece la pena detallar aqu.

TIPOS DE MICROPROCESADORES Si un microprocesador es capaz de ejecutar muchas instrucciones en cdigo mquina no es garanta de ser mejor que otro que ejecuta menos instrucciones. En la actualidad sucede todo lo contrario. Si atendemos al nmero de ciclos de reloj que se necesitan para ejecutar las instrucciones en cdigo mquina podemos encontrar dos tipos de microprocesadores:

CISC.-Computacin con una coleccin de instrucciones compleja. Las instrucciones son ejecutadas haciendo uso de varios ciclos de reloj. Las instrucciones son interpretadas por un microprograma a travs de la unidad de control. Es decir, cada instruccin "cdigo mquina" est asociada a una serie de microinstrucciones dentro del microprocesador. RISC.- Computacin con una coleccin de instrucciones reducida. Son ms rpidos y eficientes aunque los programas ejecutables son ms largos. Una tarea simple puede requerir la ejecucin de varias instrucciones. Cada instruccin es ejecutada en un ciclo de reloj, excepto las de cargar y guardar. Tambin poseen otras caractersticas que los definen como el formato simple de instruccin. Es decir, todas ocupan un nmero de bits.

TIPOS DE LENGUAJES ENSAMBLADORES Aunque todos los ensambladores realizan bsicamente las mismas tareas, podemos clasificarlos de acuerdo a caractersticas. As podemos clasificarlos en: Ensambladores Cruzados (Cross-Assembler). Se denominan as los ensambladores que se utilizan en una computadora que posee un procesador diferente al que tendrn las computadoras donde va a ejecutarse el programa objeto producido. El empleo de este tipo de traductores permite aprovechar el soporte de medios fsicos (discos, impresoras, pantallas, etc.), y de programacin que ofrecen las mquinas potentes para desarrollar programas que luego los van a ejecutar sistemas muy especializados en determinados tipos de tareas. Ensambladores Residentes. Son aquellos que permanecen en la memoria principal de la computadora y cargan, para su ejecucin, al programa objeto producido. Este tipo de ensamblador tiene la ventaja de que se puede comprobar inmediatamente el programa sin necesidad de transportarlo de un lugar a otro, como se haca en cross-assembler, y sin necesidad de programas simuladores. Sin embargo, puede presentar problemas de espacio de memoria, ya que el traductor ocupa espacio que no puede ser utilizado por el programador. Asimismo, tambin ocupar memoria el programa fuente y el programa objeto. Esto obliga a tener un espacio de memoria relativamente amplio. Es el indicado para desarrollos de pequeos sistemas de control y sencillos automatismo empleando microprocesadores

La ventaja de estos ensambladores es que permiten ejecutar inmediatamente el programa; la desventaja es que deben mantenerse en la memoria principal tanto el ensamblador como el programa fuente y el programa objeto. Macroensambladores. Son ensambladores que permiten el uso de macroinstrucciones (macros). Debido a su potencia, normalmente son programas robustos que no permanecen en memoria una vez generado el programa objeto. Puede variar la complejidad de los mismos, dependiendo de las posibilidades de definicin y manipulacin de las macroinstrucciones, pero normalmente son programas bastantes complejos, por lo que suelen ser ensambladores residentes. Microensambladores. Generalmente, los procesadores utilizados en las computadoras tienen un repertorio fijo de instrucciones, es decir, que el intrprete de las mismas interpretaba de igual forma un determinado cdigo de operacin. El programa que indica al intrprete de instrucciones de la UCP cmo debe actuar se denomina microprograma. El programa que ayuda a realizar este microprograma se llama microensamblador. Existen procesadores que permiten la modificacin de sus microprogramas, para lo cual se utilizan microensambladores. Ensambladores de una fase. Estos ensambladores leen una lnea del programa fuente y la traducen directamente para producir una instruccin en lenguaje mquina o la ejecuta si se trata de una pseudoinstruccin. Tambin va construyendo la tabla de smbolos a medida que van apareciendo las definiciones de variables, etiquetas, etc. Debido a su forma de traduccin, estos ensambladores obligan a definir los smbolos antes de ser empleados para que, cuando aparezca una referencia a un determinado smbolo en una instruccin, se conozca la direccin de dicho smbolo y se pueda traducir de forma correcta. Estos ensambladores son sencillos, baratos y ocupan poco espacio, pero tiene el inconveniente indicado Ensambladores de dos fases. Los ensambladores de dos fases se denominan as debido a que realizan la traduccin en dos etapas. En la primera fase, leen el programa fuente y construyen una tabla de smbolos; de esta manera, en la segunda fase, vuelven a leer el programa fuente y pueden ir traduciendo totalmente, puesto que conocen la totalidad de los smbolos utilizados y las posiciones que se les ha asignado. Estos ensambladores son los ms utilizados en la actualidad.

UNIDADES DE ENTRADA-SALIDA Tal y como hemos presentado una computadora, un perifrico sera cualquier unidad del sistema, excepto la unidad central de proceso y la memoria principal. Los perifricos son una serie de dispositivos que permiten a la computadora comunicarse con el exterior, bien sea para tomar datos o para mostrar informacin, o bien para almacenar, de forma permanente, grandes cantidades de informacin. Segn el sentido del flujo de informacin, tendremos los siguientes tipos de perifricos:

Perifricos de entrada: Establecen un flujo de informacin desde el exterior de la computadora hacia sta. Perifricos de salida: Establecen un flujos de informacin desde el interior de la computadora hacia el exterior. Perifricos de entrada/salida: Pueden establecer el flujo de informacin en ambos sentidos: desde el exterior al interior de la computadora o al revs.

Cuando hablamos de entradas y salidas en informtica nos referimos a las seales de informacin que son recibidas y enviadas por unidades funcionales de un sistema de procesamiento de datos informticos. Estas seales E/S (I/O en ingls) son utilizadas por diferentes interfaces con el objeto de comunicarse entre s. Un dispositivo de entrada/salida puede ser utilizado tanto por personas como por otros sistemas informticos. En general ejemplos de dispositivos de entrada lo son el mouse y el teclado, mientras que se suele mencionar al monitor y a las impresoras como dispositivos de salida; sin embargo todos ellos envan y reciben seales hacia y desde la PC. Los mdems y las placas de red son claramente dispositivos de entrada/salida. BUSES El bus es un sistema digital que transfiere datos entre los componentes de un ordenador o entre ordenadores. Estn formado por cables o pistas en un circuito impreso, dispositivos como resistencias y condensadores adems de circuitos integrados. En los primeros computadores electrnicos, todos los buses eran de tipo paralelo, de manera que la comunicacin entre las partes de computador se haca por medio de cintas o muchas pistas en el circuito impreso, en los cuales cada conductor tiene una funcin fija y la conexin es sencilla requiriendo nicamente puertos de entrada y de salida para cada dispositivo.

REGISTROS Los registros del procesador se emplean para controlar instrucciones en ejecucin, manejar direccionamiento de memoria y proporcionar capacidad aritmtica. Los registros son espacios fsicos dentro del microprocesador con capacidad de 4 bits hasta 64 bits dependiendo del microprocesador que se emplee. Los registros son direccionables por medio de una vieta, que es una direccin de memoria. Los bits, por conveniencia, se numeran de derecha a izquierda (15,14,13. 3,2,1,0), los registros estn divididos en seis grupos los cuales tienen un fin especifico. Los registros se dividen en:

Registros de segmento Registros de apuntadores de instrucciones Registros apuntadores Registros de propsitos generales Registro ndice Registro de bandera.

MODOS DE DIRECCIONAMIENTO - Modo de direccionamiento: mecanismo que permite conocer la ubicacin de un dato o instruccin. -Objeto: dato o instruccin que se desea direccionar. - Un computador dispone de varios modos de direccionamiento. - Objetivos de los modos de direccionamiento: Reducir el espacio ocupado en memoria por las instrucciones. Permitir la reubicacin del cdigo. Facilitar el manejo de las estructuras de datos.

DIRECCIONAMIENTO DIRECTO Direccionamiento mediante registro - El operando se encuentra contenido en un registro. - Subcampos del campo de operando - Esquema de funcionamiento - Ejemplos M68000: MOVE.B #5,D0 MOVE.W #$23A0,A3 Mdir CR

Se mencion anteriormente que el campo de direccin de una instruccin puede especificar una palabra de memoria o un registro M procesador. Cuando se da este ltimo caso se dice que el operando est especificado con direccionamiento directo por registro, en tal caso, el operando reside en uno de los registros del procesador que es seleccionado por un campo de registro de k bits en la instruccin. Un campo de k bits puede especificar uno de 2k registros. Este modo es tpico de los ordenadores con organizacin de registros de uso general. Las ventajas de este modo son: - El acceso a los registros es muy rpido, por tanto el direccionamiento por registro debe usarse en las variables que se usen con ms frecuencia para evitar accesos a memoria que son ms lentos, un ejemplo muy tpico del uso de este direccionamiento son los ndices de los bucles. - El nmero de bits necesarios para especificar un registro es mucho ms pequeo que el necesario para especificar una direccin de memoria, esto es debido a que el nmero de registros del procesador es muy pequeo comparado con el nmero de direcciones de memoria. Sin embargo, hay que tener en cuenta que en los ordenadores modernos el nmero de registros ha aumentado considerablemente.

Direccionamiento directo absoluto - La instruccin contiene la direccin de memoria exacta donde se encuentra el operando. - El operando se encuentra en memoria. - Subcampos del campo de operando El rango de CD debe ser capaz de direccionar toda la memoria. Si no es capaz: direccionamiento de pgina base. - Esquema de funcionamiento - Ejemplo M68000: MOVE.B D0,$A61350 Este es el modo de direccionamiento ms sencillo. El campo de direccin no necesita transformacin alguna para dar la direccin efectiva, es decir la funcin que transforma el campo de operando en la direccin efectiva es la identidad. Esto significa que el campo de operando es ya la direccin efectiva. Este direccionamiento slo se usa en ordenadores pequeos en que el programa siempre se sita en la misma zona de memoria ya que dificulta la relocalizacin de los programas, es decir que el cdigo de los programas no dependa de su situacin en memoria. Ordinariamente este modo slo se usa para acceder a direcciones del sistema que normalmente se refieren a operaciones de entrada y salida ya que estas direcciones no dependen del programa.

DIRECCIONAMIENTO INDIRECTO - El operando se encuentra en memoria. - La instruccin contiene una direccin que se emplea para leer en memoria una direccin intermedia que ser la verdadera direccin del objeto buscado. - Subcampos del campo de operando - Esquema de funcionamiento

En este modo el campo de operando de la instruccin indica la localizacin de la direccin efectiva del operando. El modo de direccionamiento indirecto puede adquirir diferentes formas segn cul sea el lugar donde se encuentre la direccin del operando. En general, todos los modos de direccionamiento tienen su versin indirecta que aade un eslabn ms a la cadena del direccionamiento. Por ejemplo existe el direccionamiento indirecto por registro, en el que el registro especificado contiene la direccin del operando, no el operando mismo. Este direccionamiento es til cuando se trabaja con punteros ya que los punteros son variables que contienen las direcciones de los operandos, no los operandos mismos. DIRECCIONAMIENTO INDEXADO - Similar al direccionamiento relativo a registro base. Registro ndice: se modifica a menudo en la ejecucin del programa. - Subcampos del campo de operando - El registro ndice puede permitir incrementos o decrementos antes o despus de obtenerse la direccin del objeto: Posdecremento - El incremento o decremento puede depender del tamao del objeto referenciado. - Ejemplos M68000 (slo predecremento y posincremento): MOVE.B D0,(A0)+ incrementa A0 en 1 MOVE.W D0,-(A2) decrementa A2 en 2 MOVE.L (A5)+,D3 incrementa A5 en 4 - Utilizado para recorrer tablas o vectores. En este modo de direccionamiento, la direccin del operando tambin se calcula sumando un registro de la CPU al campo de operando, este registro es un registro especfico para este uso llamado registro ndice. En los ordenadores con organizacin de registros generales, el registro ndice puede ser cualquiera de los registros de la CPU. En los ordenadores en que el contador de programa es considerado como un registro de uso general (PDP 11 y VAX) el modo relativo es un caso particular del direccionamiento indexado. A la cantidad que hay que

sumar al registro ndice para conseguir la direccin del operando tambin se le llama desplazamiento u offset. Este modo de direccionamiento es especialmente til para el direccionamiento de vectores y matrices en bucles ya que, si se quieren direccionar elementos consecutivos del vector o matriz, basta mantener en el desplazamiento la direccin del primer elemento e ir incrementando el registro ndice. Tambin sirve para acceder de forma relativa a elementos de vectores cercanos a uno dado, para ello, se carga la direccin del elemento de referencia en el registro ndice y despus se accede mediante direccionamiento indexado, con el desplazamiento adecuado, al anterior, al siguiente, etc., esto mismo tambin es aplicable a pilas, en que, en ocasiones, hay que acceder a datos cercanos, por encima o por debajo, al dato sealado por algn apuntador.

ESTRUCTURA DE UN LENGUAJE EN ENSAMBLADOR 1. Sintaxis de un lenguaje ensamblador 2. Campos de una instruccin en ensamblador 3. Pseudoinstrucciones 1. SINTAXIS DE UN LENGUAJE ENSAMBLADOR - Estructura de una lnea: INSTRUCCIN EN ENSAMBLADOR ETIQUETA NEMOTCNICO COMENTARIOS

OPERANDOS

DIRECCIN

INSTRUCCIN EN LENGUAJE MQUINA CDIGO DE OPERACIN DIRECCIN DE LOS OPERANDOS

- Caractersticas de los ensambladores modernos: Formato libre. Delimitadores de campo. - Tipos de lneas en un programa ensamblador Instrucciones. Ejecutables por el computador. Pseudoinstrucciones Indicaciones o directivos para el traductor. No ejecutables por el computador.

2. CAMPOS DE UNA INSTRUCCIN EN ENSAMBLADOR

Etiqueta - Identifica la lnea en la cual se encuentra. - Se asocia a la direccin en la cual se encuentra la instruccin o el dato, o a la constante definida. - Recomendaciones Utilizar slo letras o nmeros (comenzar por una letra). arcter de la lnea.

Nemotcnico - Identifica: Un cdigo de operacin del lenguaje

Campo de operandos - Identifica los operandos que intervienen en la instruccin o pseudoinstruccin. - Tipos de operandos: Numricas: decimales(D), binarias (%,B), octales (O,@,Q,C), hexadecimales (H,$). Alfabticas: entre comillas. resiones

Comentarios - Indicaciones para una mejor comprensin del programa ensamblador. - Pueden comenzar con el smbolo ;.

3. PSEUDOINSTRUCCIONES - Manipulacin del contador de direccin de ensamblado se localizan los datos o instrucciones a continuacin. Ej: ORG operando - Definicin de smbolos Da un valor a un smbolo. EQU expresin - Reserva de espacio en memoria (definicin de variables) ra los datos indicados en la lista de expresiones, y les pone los valores iniciales indicados (tamao de cada dato: S=B,W L). Ej: ETIQ DC.S expr1,expr2,,exprN indica en la expresin (tamao de cada dato: S=B,W L). DS.S expresin - Control de traduccin END - Almacenamiento en posicin par prxima posicin de memoria con direccin par. EVEN - Enlace entre programas EXT, REF, XREF, EXTERNAL. ENT, DEF, XDEF, PUBLIC. - Acciones de ensamblado condicional ncluyen en el ensamblado o no grupos de instrucciones del programa fuente. IF ELSE ENDIF - Ejecucin de listados e informes TITLE, NAME. PAGE, SPAGE. LIST, NOLIST. SYMBOL, TABLE.

INSTRUCCIONES DE TIPO SALTO Y CICLO Instrucciones de salto Son utilizadas para transferir el flujo del proceso al operando indicado. Instruccin JMP Propsito: Salto incondicional Sintaxis: JMP destino Esta instruccin se utiliza para desviar el flujo de un programa sin tomar en cuenta las condiciones actuales de las banderas ni de los datos. Instruccin JA (JNBE) Propsito: Brinco condicional Sintaxis: JA Etiqueta Despus de una comparacin este comando salta si est arriba o salta si no est abajo o si no es igual. Esto significa que el salto se realiza solo si la bandera CF esta desactivada o si la bandera ZF esta desactivada (que alguna de las dos sea igual a cero). Instruccin JAE (JNB) Propsito: salto condicional Sintaxis: JAE etiqueta Salta si est arriba o si es igual o salta si no est abajo. El salto se efectua si CF esta desactivada. Instruccin JB (JNAE) Propsito: salto condicional

Sintaxis: JB etiqueta Salta si est abajo o salta si no est arriba o si no es igual. Se efecta el salto si CF esta activada. Instruccin JBE (JNA) Propsito: salto condicional Sintaxis: JBE etiqueta Salta si est abajo o si es igual o salta si no est arriba. El salto se efecta si CF est activado o si ZF est activado (que cualquiera sea igual a 1). Instruccin JE (JZ) Propsito: salto condicional Sintaxis: JE etiqueta Salta si es igual o salta si es cero. El salto se realiza si ZF est activada. Instruccin JNE (JNZ) Propsito: salto condicional Sintaxis: JNE etiqueta Salta si no es igual o salta si no es cero. El salto se efectua si ZF est desactivada.

Instruccin JG (JNLE) Propsito: salto condicional, se toma en cuenta el signo. Sintaxis: JG etiqueta Salta si es ms grande o salta si no es menor o igual. El salto ocurre si ZF = 0 u OF = SF. Instruccin JGE (JNL) Propsito: salto condicional, se toma en cuenta el signo. Sintaxis: JGE etiqueta Salta si es ms grande o igual o salta si no es menor que. El salto se realiza si SF = OF Instruccin JL (JNGE) Propsito: salto condicional, se toma en cuenta el signo. Sintaxis: JL etiqueta Salta si es menor que o salta si no es mayor o igual. El salto se efecta si SF es diferente a OF. Instruccin JLE (JNG) Propsito: salto condicional, se toma en cuenta el signo. Sintaxis: JLE etiqueta Salta si es menor o igual o salta si no es ms grande.

El salto se realiza si ZF = 1 o si SF es diferente a OF Instruccin JC Propsito: salto condicional, se toman en cuenta las banderas. Sintaxis: JC etiqueta Salta si hay acarreo. El salto se realiza si CF = 1 Instruccin JNC Propsito: salto condicional, se toma en cuenta el estado de las banderas. Sintaxis: JNC etiqueta Salta si no hay acarreo. El salto se efecta si CF = 0. Instruccin JNO Propsito: salto condicional, se toma en cuenta el estado de las banderas. Sintaxis: JNO etiqueta Salta si no hay desbordamiento. El salto se efectua si OF = 0. Instruccin JNP (JPO) Propsito: salto condicional, toma en cuenta el estado de las banderas. Sintaxis: JNP etiqueta Salta si no hay paridad o salta si la paridad es non.

El salto ocurre si PF = 0. Instruccin JNS Propsito: salto condicional, toma en cuenta el estado de las banderas. Sintaxis: JNP etiqueta Salta si el signo esta desactivado. El salto se efecta si SF = 0. Instruccin JO Propsito: salto condicional, toma en cuenta el estado de las banderas. Sintaxis: JO etiqueta Salta si hay desbordamiento (overflow). El salto se realiza si OF = 1. Instruccin JP (JPE) Propsito: salto condicional, toma en cuenta el estado de las banderas. Sintaxis: JP etiqueta Salta si hay paridad o salta si la paridad es par. El salto se efecta si PF = 1. Instruccin JS Propsito: salto condicional, toma en cuenta el estado de las banderas. Sintaxis: JS etiqueta Salta si el signo est prendido.

El salto se efecta si SF = 1. Instrucciones para ciclos: LOOP Transfieren el flujo del proceso, condicional o incondicionalmente, a un destino repitiendose esta accin hasta que el contador sea cero. LOOP LOOPE LOOPNE Instruccin LOOP Propsito: Generar un ciclo en el programa. Sintaxis: LOOP etiqueta La instruccin loop decrementa CX en 1, y transfiere el flujo del programa a la etiqueta dada como operando si CX es diferente a 1. Instruccin LOOPE Propsito: Generar un ciclo en el programa considerando el estado de ZF Sintaxis: LOOPE etiqueta Esta instruccin decrementa CX en 1. Si CX es diferente a cero y ZF es igual a 1, entonces el flujo del programa se transfiere a la etiqueta indicada como operando. Instruccin LOOPNE Propsito: Generar un ciclo en el programa, considerando el estado de ZF Sintaxis: LOOPNE etiqueta Esta instruccin decrementa en uno a CX y transfiere el flujo del programa solo si ZF es diferente a 0.

ENTORNO DE PROGRAMACION A partir de los fuentes obtenidos de un editor, los fuentes se envan al Ensamblador el cual, traduce los nemotcnicos del lenguaje ensamblador al cdigo objeto de la maquina. Y crea un fichero especial de listado de variables y procedimientos. Por ltimo el Linker toma todos los ficheros objeto y con la informacin sobre las direcciones de memoria para las variables y procedimientos que contiene el fichero Listado, crea el fichero ejecutable final. Normalmente en el proceso de ensamblado bastan con 2 pasos para determinar todas las direcciones, por ejemplo: Jmp etiq etiq: En este caso, cuando el ensamblador no puede determinar la direccin de etiq, ya que sta est definida ms adelante, con lo que debe dejar un espacio y dar una segunda pasada para determinar exactamente el direccin de memoria a la que debe saltar. Por lo tanto, en el 1er paso se utiliza una variable denominada contador de posicin ($). A medida que se analiza el programa, se va incrementando dicha variable en funcin de los bytes que necesita cada sentencia. Para cada smbolo (variable, constante, etiqueta), se determina su $, su tipo, su nombre de segmento. Con esta informacin, ensamblador construye la TABLA DE SIMBOLOS en esta primera pasada. Luego slo hay que buscar en esa tabla para determinar la direccin de cada etiqueta, constante o variable. El 2 paso comienza cuando se detecta END. Ayudado por las directivas y por los nemotcnicos de las instrucciones se comienza a general el cdigo mquina.

PROCEDIMIENTO DE ENSAMBLE, ENLACE Y EJECUCION Proceso de ensamblaje: Un ensamblador es el programa que convierte un listado de cdigo fuente en cdigo objeto, es decir, lenguaje mquina (el que finalmente interpretar el procesador) en el que slo le faltan las referencias a rutinas externas. El cdigo fuente es un fichero que contiene la secuencia de instrucciones en lenguaje ensamblador que forma el programa, as como ciertas directivas o comandos para el propio ensamblador, que ha sido creado utilizando un editor de texto. El cdigo objeto consta del cdigo en lenguaje mquina y de la informacin necesaria para enlazarlo con otros mdulos objeto. Enlace y Ejecucin : Al construir un programa algunos de sus mdulos pueden colocarse en el mismo mdulo fuente y ensamblarse juntos, otros pueden estar en mdulos diferentes y ser ensamblados separadamente. Si se ensamblan por separado, el mdulo principal, que contiene la primera instruccin que se va a ejecutar, debe acabar con una sentencia END que indique el punto de entrada al programa, y cada uno de los otros mdulos deben terminar con una sentencia END sin ningn operando. En cualquier caso, los mdulos objeto resultantes, algunos de los cuales pueden estar agrupados en libreras, deben ser enlazados para formar el mdulo de carga, antes de que se pueda ejecutar el programa. Adems de dar como salida el mdulo de carga, el linker o enlazador imprime un mapa de memoria que indica donde sern cargados los mdulos objeto en la memoria. Despus de crearse el mdulo de carga, ste es cargado por el cargador en la memoria del ordenador y comienza la ejecucin. Independientemente del sistema, la combinacin linker/cargador debe crear todos los segmentos y asignaciones de direccin necesarios para permitirle al programa funcionar correctamente. En concreto, esta combinacin debe: Encontrar los mdulos que van a ser enlazados Construir el mdulo de carga asignando las posiciones de todos los segmentos de todos los mdulos objeto que se estn enlazando. Rellenar todos los desplazamientos de segmento que no pudieron ser determinados por el ensamblador. Rellenar todas las direcciones de los segmentos. Cargar el programa para su ejecucin.

ESTRUCTURA DE UN PROGRAMA EN LENGUAJE ENSAMBLADOR Un programa en lenguaje ensamblador estar formado por una secuencia de sentencias. Cada sentencia ocupa una sola lnea y tiene la siguiente estructura: [Etiqueta] [Operacin] [Operandos] [Comentarios] Los cuatro campos de una sentencia son opcionales, si no aparece ninguno de ellos (una lnea en blanco) tendramos una sentencia vaca.

Las sentencias se dividen en dos tipos: * Instrucciones:


Estas sentencias representan rdenes al procesador y tras el proceso de compilacin generan cdigo ejecutable.

* Directivas:
Estas sentencias dirigen el proceso de compilacin o construccin del programa ejecutable. No generan cdigo ejecutable. Normalmente se utilizan para aumentar la legibilidad del cdigo fuente. El fichero creado con todas las sentencias que constituyen un programa se denomina fichero fuente. Este tipo de fichero tiene formato ASCII. Se recomienda que el fichero de cdigo fuente tenga por extensin .ens. El fichero fuente se compila utilizando el programa ensamblador. El programa ensamblador generar un nuevo fichero, denominado fichero ejecutable, de igual nombre y de extensin .eje. Este fichero tiene formato ASCII y contiene el cdigo mquina de las instrucciones que componen el programa, as como cierta informacin adicional para realizar la carga del programa en el simulador del computador elemental.

TIPOS DE LENGUAJES ENSAMBLADOR PARA EL PROCESADOR X86 El lenguaje ensamblador x86 es la familia de los lenguajes ensambladores retrocompatibles para los procesadores x86 , entre los que se incluyen los Pentium de Intel y los Athlon de AMD. Como el resto de lenguajes ensambladores, usa una serie de mnemotcnicos para representar las operaciones fundamentales que el procesador puede realizar. Los compiladores a menudo producen cdigo ensamblador como un paso intermedio cuando traducen un programa de alto nivel a cdigo mquina. Considerado como un lenguaje de programacin, el cdigo ensamblador es de bajo nivel y especfico para cada mquina. Se utiliza principalmente en aplicaciones crticas como sistemas de arranque, Sistemas Operativos, ncleos y en controladoras de dispositivos, as como en sistemas en tiempo real o pequeos sistemas embebidos. Los procesadores Intel 8086 y 8088 fueron los primeros de 16 bits en tener un conjunto de instrucciones, conocido actualmente como x86. Fueron un paso evolutivo en comparacin con la generacin anterior de CPU's de 8 bits, como el 8080 y heredaron muchas caractersticas e instrucciones, las cuales fueron extendidas para la poca de los 16 bits. Ambas CPU's contenan un bus de direcciones de 20 bits y un registro interno de 16 bits.El 8086 tena un bus de datos de 16 bits y uno de 8 bits estaba previsto como una opcin de bajo coste para incorporarla en el mercado. El lenguaje ensamblador del x86 tambin hace referencia a las diferentes versiones de procesadores que Intel sigui produciendo, como 80188, 80186, 80286, 80386, 80486, Pentium y los que no eran de Intel como AMD y Cyrix. El trmino x86 hace referencia a todos los procesadores que ejecutan el mismo lenguaje ensamblador original.

El moderno conjunto de instrucciones es en realidad una serie de sets de instrucciones que empezaron con el microprocesador Intel 8008. La casi total retrocompatiblidad est presente desde los chips Intel 8086 hasta los modernos procesadores Intel Pentium 4, Inte Core Duo, Intel Core i7, AMD Athlon 64, AMD Opteron, etc, aunque existen algunas excepciones. Esta compatibilidad se logra gracias al uso de 2 conjuntos de instrucciones de arquitecturas, lo cul es comnmente criticado. La compatibilidad de los programas en lenguaje ensamblador con procesadores ms antiguos slo es posible cuando el programa no incluye instrucciones solo disponibles en los procesadores nuevos.

Vous aimerez peut-être aussi