You are on page 1of 18

Universidad de las Ciencias Informticas Maquinas Computadoras I Curso 2006/2007

Manual del profesor

TEMA I. Circuitos Lgicos ACTIVIDAD #10. Conferencia #5. Introduccin al lenguaje ensamblador.

Sumario:
1. Introduccin al lenguaje ensamblador. 2. Arquitectura de una microcomputadora. 3. La arquitectura intel de 32 bits. 4. Mecanismos de direccionamiento.

Bibliografa:
1. Los microprocesadores Intel. Arquitectura, programacin e interfaces. Tomo I y II

Objetivos:
1. Argumentar la importancia que tiene el conocimiento del lenguaje ensamblador. 2. Describir la estructura interna de las microcomputadoras. 3. Describir la Arquitectura Interna del Microprocesador 80386. 4. Explicar el funcionamiento del Mp en modo real. 5. Enunciar y explicar los modos de direccionamiento de datos.

1. Introduccin al lenguaje ensamblador.


Hoy en da la mayora de los especialistas en software desarrollan aplicaciones en lenguajes de alto nivel como el BASIC, COBOL, PASCAL, C++, FORTRAN, ADA, etc.; que son mucho ms fciles de escribir y de dar mantenimiento. Sin embargo, la programacin en lenguaje ensamblador todava es bastante utilizada por muchos programadores en determinadas tareas en las cuales su utilizacin es muy beneficiosa. En la conferencia de hoy veremos la importancia que tiene el lenguaje ensamblador para los programadores y adems comenzaremos a ver nuestra PC por dentro, as como el mecanismo de direccionamiento de la memoria y de datos.

Lenguaje de Bajo Nivel.


Para introducirnos en la programacin de bajo nivel primeramente debemos comprender que es un lenguaje de mquina? Se denomina lenguaje maquina a la serie de datos que la parte fsica de la computadora o hardware, es capaz de interpretar. Una computadora digital o, mejor dicho, su parte fsica, slo distingue datos de tipo binario, es decir, constituidos por dos nicos valores a los que se denomina valor 0 y valor 1 y que, fsicamente, se materializan con tensiones comprendidas entre 0 y 4.0 voltios y entre 4 y 5 voltios, respectivamente. Para ___________________________________________________________________________________________ Departamento de Sistemas Digitales

Mquinas Computadoras I

representar datos que contengan una informacin se utilizan una serie de unos y ceros cuyo conjunto indica dicha informacin. La informacin que hace que el hardware de la computadora realice una determinada actividad de llama instruccin. Por consiguiente una instruccin es un conjunto de unos y ceros. Las instrucciones as formadas equivalen a acciones elementales de la mquina, por lo que al conjunto de dichas instrucciones que son interpretadas directamente por la mquina se denomina lenguaje mquina. El lenguaje mquina fue el primero que empleo el hombre para la programacin de las primeras computadoras. Una instruccin en lenguaje mquina puede representarse de la siguiente forma: 011011001010010011110110 Esta secuencia es fcilmente ejecutada por la computadora, pero es de difcil interpretacin, siendo aun ms difcil la interpretacin de un programa (conjunto de instrucciones) escrito de esta forma. Esta dificultad hace que los errores sean frecuentes y la correccin de los mismos costosa, cuando no imposible, al igual que la verificacin y modificacin de los programas. La anterior secuencia de dgitos binarios (bits) puede indicar a la computadora que: <<Traslade el contenido de la posicin de memoria X a la posicin de memoria Y.>>

Si lo vemos escrito de esta forma, lo entenderemos fcilmente, ya que est en nuestro lenguaje natural, pero la mquina elemental ser incapaz de entender nada. Vemos, pues, que la forma de indicar a la mquina lo que debe hacer es totalmente diferente de la indicar a un ser humano lo mismo, por lo que deben emplearse sistemas de traduccin de una forma a otra. Ya se ha dicho que en un principio el programador empleaba directamente el lenguaje mquina. En este caso el traductor era el programador; pero vimos tambin los problemas que esto causaba. Con la prctica en el manejo de la mquina se cay en la cuenta de que se podra utilizar la propia mquina para ayudar en la traduccin de estos programas. Es decir, que si a una mquina elemental se le dotaba de un programa, tambin elemental, que tradujera un nmero determinado de caracteres alfabticos en una secuencia de unos y ceros, se podra escribir un programa constituido por una secuencia de grupos de caracteres alfabticos, en la que cada uno de los grupos indicara una accin a realizar por el ordenador y, una vez escrito el programa, sera la propia mquina la que pasara los grupos de caracteres a bits. Las ventajas de esto son evidentes, ya que para el hombre resulta ms fcil manipular grupos de caracteres y la traduccin se hara de manera automtica. Por ejemplo, se podra escribir: TRASLADAR 11010110, 00011101

Esto indicara que el contenido de la posicin 11010110 haba que pasarlo a la posicin 00011101 si se sabe que al grupo alfabtico TRASLADAR le corresponde la secuencia de bits 11110101. La mquina traducira la anterior instruccin como: 11110101 11010110 00011101

Al grupo alfabtico se le denomina mnemotcnico, y existir un mnemotcnico por cada instruccin. Se le da este nombre porque sirve para recordar con mayor facilidad el conjunto de instrucciones de una determinada mquina. De esta forma aparecieron los lenguajes ensambladores (Assembler, en ingls). Poco a poco, con el avance de la programacin (Software), estas primeras y sencillas ayudas se fueron haciendo ms ___________________________________________________________________________________________ Departamento de Sistemas Digitales

Mquinas Computadoras I complejas, permitiendo que, adems de los mnemotcnicos correspondientes a la operacin a realizar, se pudieran emplear otros para indicar, por ejemplo, los operandos. La anterior instruccin se podra escribir de la siguiente forma: TRASLADAR POS-A POS-B Que nos resulta de ms fcil comprensin. Tambin se introdujo la posibilidad de indicar a la computadora la direccin de un salto en la secuencia de ejecucin de un programa mediante la utilizacin de etiquetas.

A los programas que permiten pasar del programa escrito de esta manera (programa fuente, en ensamblador) al lenguaje mquina tambin se les denomina normalmente ensambladores. Estos traductores, como ya se ha dicho, se fueron complicando cada vez ms para que la labor del programador fuera ms fcil, incluyendo los denominados directivos del ensamblador, que son rdenes o informaciones que el programador da al traductor, no instrucciones de lenguaje mquina. Aun con todas estas sofisticaciones y ayudas, el programador de lenguaje ensamblador debe conocer perfectamente el sistema fsico (Hardware) de la mquina con que trabaja, pues aunque emplee mnemotcnicos, etiquetas, etc., stas sirven para indicar una posicin de memoria determinada, un registro o cualquier otra parte de la mquina. Por eso se dice que el lenguaje ensamblador es un lenguaje de bajo nivel, es decir, ligado con el <<hard>> concreto de una determinada mquina. Aqu radica la diferencia importante con los lenguajes ms complejos, llamados de alto nivel, como el Basic, Pascal, Cobol, etc., ya que en stos el programador no tiene porque reconocer el <<hard>> de la mquina. Trabaja con variables, constantes e instrucciones simblicas, y es el traductor quien las transforma en las direcciones apropiadas.

Ventajas de los lenguajes ensambladores.


El corazn de la computadora es el microprocesador, ste maneja las necesidades aritmticas, de lgica y de control de la computadora. El microprocesador tiene su origen en la dcada de los sesenta, cuando se diseo el circuito integrado (IC por sus siglas en ingles) al combinar varios componentes electrnicos en un solo componente sobre un "chip" de silicio. Los fabricantes colocaron este diminuto chip en un dispositivo parecido a un ciempis y lo conectaron a un sistema en funcionamiento. A principios de los aos setenta Intel introdujo el chip 8008 el cual, instalado en una computadora terminal, acompao a la primera generacin de microprocesadores. En 1974 el 8008 evolucion en el 8080, un popular microprocesador de la segunda generacin para propsitos generales. En 1978 Intel produjo la tercera generacin de procesadores 8086, para proporcionar alguna compatibilidad con el 8080 y que representan un avance significativo de diseo. Despus, Intel desarrollo una variacin del 8086 para ofrecer un diseo sencillo y compatibilidad con los dispositivos de entrada/salida de ese momento. Este nuevo procesador, el 8088, fue seleccionado por IBM para su computadora personal en 1981. Una versin mejorada del 8088 es el 80188, y versiones mejoradas del 8086, son los 80186, 80286, 80386, 80486 y el Pentium, cada uno de ellos permite operaciones adicionales y ms procesamiento.

___________________________________________________________________________________________ Departamento de Sistemas Digitales

Mquinas Computadoras I

La variedad de microcomputadoras tambin ocasion un renovado inters en el lenguaje ensamblado, cuyo uso conlleva a diferentes ventajas:

Un programa escrito en el lenguaje ensamblador requiere considerablemente menos memoria y tiempo de ejecucin que un programa escrito en los conocidos lenguajes de alto nivel, como Pascal y C.

El lenguaje ensamblador da a un programador la capacidad de realizar tareas muy tcnicas que serian difciles, si no es que imposibles de realizar en un lenguaje de alto nivel. El conocimiento del lenguaje ensamblador permite una comprensin de la arquitectura de la maquina que ningn lenguaje de alto nivel puede ofrecer. Aunque la mayora de los especialistas en Software desarrollan aplicaciones en lenguajes de alto nivel, que son ms fciles de escribir y de dar mantenimiento, una practica comn es recodificar en lenguaje ensamblador aquellas rutinas que han causado cuellos de botella en el procesamiento.

El cdigo en ensamblador se puede mezclar con cdigos de lenguajes de alto nivel. Si se tiene el ejecutable de una aplicacin y no se tiene el cdigo fuente y se quiere modificar o simplemente ver como est codificado, una tcnica muy utilizada es el desensamblar ese ejecutable.

Los programas residentes y rutinas de servicio de interrupcin casi siempre son desarrollados en el lenguaje ensamblador.

Los lenguajes de alto nivel fueron diseados para eliminar las particularidades de una computadora especifica, mientras que un lenguaje ensamblador esta diseado para una computadora especifica, o, de manera ms correcta, para una familia especifica de microprocesadores.

2. Arquitectura de una microcomputadora. Unidades funcionales bsicas


Como vimos anteriormente uno de los elementos importantes del lenguaje ensamblador es que con su conocimiento nos permite comprender la arquitectura de la maquina; y viceversa, conociendo profundamente nuestro hardware, seremos mejores programadores en ensamblador; por lo que los conocimientos en cuanto a la programacin y al hardware deben ir al apar. Un elemento importante del hardware de la PC es la unidad del sistema, que contiene una motherboard, fuente de energa y ranuras de expansin para tarjetas opcionales. Algunos elementos de la motherboard son un microprocesador, memoria de solo lectura (ROM) y memoria de acceso aleatorio (RAM). El cerebro de la PC y compatibles es un microprocesador basado en la familia 8086 de Intel, que realiza todo el procesamiento de datos e instrucciones. Los procesadores varan en velocidad y capacidad de memoria, registros y bus de datos. Un bus de datos transfiere datos entre el procesador, la memoria y los dispositivos externos. Aunque existen muchos tipos de computadoras digitales segn se tenga en cuenta su tamao, velocidad de proceso, complejidad de diseo fsico, etc., los principios fundamentales bsicos de funcionamiento son esencialmente los mismos en todos ellos. Se puede decir que una computadora est formada por tres partes fundamentales, aunque una de ellas es subdividida en dos partes no menos importantes. En la figura 2.1 se muestran dichas partes, llamadas ___________________________________________________________________________________________ Departamento de Sistemas Digitales

Mquinas Computadoras I genricamente unidades funcionales debido a que, desde el punto de vista del funcionamiento, son independientes.

Figura 2.1. Unidades funcionales de una computadora.


El nombre de cada parte nos indica la funcin que realiza. As, la Unidad Central de Proceso (CPU) es la que coordina el funcionamiento conjunto de las dems unidades y realiza los clculos necesarios; por lo que la podemos subdividir en una Unidad de Control (UC) y en una unidad de clculo o Unidad AritmticoLgica (UAL). La unidad de Memoria Principal (MP) se encarga de almacenar las instrucciones que realizar la Unidad de Control al ejecutar un programa y los datos que sern procesados. La Unidad de Entradas y Salidas ser la encargada de la comunicacin con el exterior a travs de los perifricos. Estos perifricos pueden ser: de entrada, como los teclados, el mouse; de salida, pantalla, impresora, y de entrada y salida, como los discos magnticos.

Unidad central de proceso. La CPU constituye el cerebro de una computadora digital, pues realiza todas las operaciones aritmticas y lgicas sobre los datos y adems controla todos los procesos que se desarrollan en la computadora. Por ejemplo, para que se ejecute una instruccin, sta debe estar en el interior de la CPU, concretamente en la UC y si hay que realizar clculos, interviene la UAL. Veamos como funciona cada una de ellas. Unidad de Control.

Para realizar su tarea la UC necesita conocer, por un lado, la instruccin y, por otro, una serie de informaciones adicionales que deber tener en cuenta para coordinar, de forma correcta, la ejecucin de la instruccin. El resultado de la interpretacin de dichas informaciones son una serie de rdenes a los diferentes elementos de la computadora. La UC no emite todas las rdenes a la vez, sino siguiendo una determinada secuencia. Para ello utiliza un elemento que le va indicando el instante en que debe ejecutar una determinada fase de la instruccin. A este elemento se le denomina Reloj, y se dice que sincroniza las acciones de la UC; cuanto ms rpido marque el tiempo, ms rpida ser la ejecucin de la instruccin. Sin embargo, hay un lmite, ya que, si marca excesivamente rpido, es posible que no puedan cumplir adecuadamente las rdenes de los diferentes elementos, por lo que se producirn errores. En la figura 2.2 se esquematiza el conjunto de seales que utiliza la UC y las que genera. Como informaciones adicionales a las instrucciones podemos ver los impulsos de reloj y los indicadores de estado. ___________________________________________________________________________________________ Departamento de Sistemas Digitales

Mquinas Computadoras I Los indicadores de estado son una serie de bits que se modifican segn resultados de las operaciones anteriores guardando una memoria histrica de los acontecimientos precedentes para que, en funcin de dichos acontecimientos, pueda la UC tomar decisiones.

Figura 2.2. Seales que intervienen en la UC.

La unidad de control esta formada, bsicamente por un elemento que interpreta las instrucciones y varios elementos de memoria denominados registros. Uno de estos registros almacena la instruccin mientras el intrprete est traduciendo su significado, por lo que se denomina Registro de Instruccin (RI). El resto de las instrucciones permanecen en la memoria, esperando que les toque su turno de ejecucin. La UC por otra parte deber conocer cul es la direccin de la prxima instruccin, para poder ir a buscarla una vez que finaliza la ejecucin de la instruccin en curso; direccin que guarda el registro llamado Contador de Programa (CP). Los indicadores de estado estn agrupados en un registro denominado Registro de Estado (RE). La Figura 2.3 muestra los elementos que acabamos de nombrar.

Figura 2.3. Elementos bsicos de la Unidad de Control.

Unidad Aritmtica - Lgica. La unidad Aritmtico - Lgica (UAL) es la encargada de realizar los clculos. Los datos sobre los que se realizan la operaciones se denominan operandos. Al elemento encargado de ejecutar las operaciones se le denomina operador, y esta formado por una serie de circuitos electrnicos que son capaces de sumar dos nmeros binarios o hacer las operaciones lgicas elementales: disyuncin, conjuncin y negacin; incluso ___________________________________________________________________________________________ Departamento de Sistemas Digitales

Mquinas Computadoras I algunos operadores son tambin capaces de multiplicar, dividir y realizar otras operaciones mas complejas.

Para que el operador realice la operacin, los operandos se llevan a la UAL y se guardan en unos registros denominados registros de trabajo. El resultado de la operacin se guarda tambin en un registro antes de ser llevado a la memoria o a la Unidad de Entradas y Salidas. Frecuentemente se utiliza un mismo registro para guardar uno de los operandos y, tambin, el resultado, denominado registro Acumulador. El operador, adems de calcular el valor de la operacin, modifica el registro de estado segn el resultado de la operacin. As, si el resultado es un valor negativo, se modifica un bit de dicho registro, llamado bit negativo o bit N, ponindose a 1; por el contrario, el bit N permanecer en estado 0 mientras el contenido del acumulador no sea negativo. De igual forma indicara la UAL a la UC si el resultado ha sido cero, o si ha producido algn acarreo, etc.

En la figura 2.4 se muestran los elementos de la UAL y las seales que intervienen.

(b) Figura 2.4. Elementos y seales de la AUL.

Unidad de memoria principal. La memoria principal esta formada por un conjunto de unidades llamadas palabras. Dentro de cada una de estas palabras se guarda la informacin que constituye una instruccin o parte de ella (puede darse el caso de que una sola instruccin necesite varia palabras), o un dato o parte de un dato (tambin un dato puede ocupar varias palabras). A la cantidad de palabras que forman la MP se le denomina capacidad de memoria. De este modo, cuanto mayor sea el nmero de palabras mayor ser el nmero de instrucciones y datos que podr almacenar la computadora. Una palabra esta formada a su vez de unidades mas elementales llamadas bits, del mismo modo que en el lenguaje natural una palabra esta formada por letras. Cada bit solo puede guardar dos valores, el valor 0 o el valor 1; por eso se dice que son elementos binarios. El nmero de bits que forman una palabra se llama longitud de palabra. Por regla general, las computadoras potentes tienen memorias con longitud de palabra grande, mientras que las computadoras pequeas tienen memorias con longitud de palabra menor. En la figura 2.5 se muestra como se puede estar organizada una Memoria Principal. ___________________________________________________________________________________________ Departamento de Sistemas Digitales

Mquinas Computadoras I

Figura 2.5. Organizacin de una unidad de memoria.

Las palabras forman una matriz de 10 filas y 10 columnas. La primera palabra corresponder con la direccin 00, la segunda con la 01, y la ultima, con la 99. La capacidad de la memoria ser de 10 * 10 = 100 palabras. Tambin se muestra la longitud de la palabra 38, que es de 8 bits, al igual que las dems, y la informacin que contiene, que es el valor binario 10011010. Las palabras se distinguen entre si por la posicin que ocupan en la MP, y se puede guardar una informacin y luego recuperarla indicando el numero de dicha posicin. A los nmeros que sealan las posiciones de memoria se les da el nombre de direcciones de memoria. La accin de guardar una informacin en una palabra de la memoria se llama acceso de escritura, y la accin de recuperarla, acceso de lectura. Los accesos son coordinados por la UC. En la tabla 2.1 (a) se muestra un acceso de escritura. Obsrvese que la UC debe indicar, adems de la posicin donde se debe guardar el dato, el valor del dato y las indicaciones de control que le digan a la memoria que se desea guardar el dato y el momento en que debe iniciarse la operacin de escritura. Esta ultima orden la dar la UC cuando este segura de que los datos anteriores han llegado correctamente a la MP. Despus de esta ultima orden, la UC espera un tiempo para asegurar que se ha escrito la informacin en la MP. En la tabla 2.1 (b) se muestra como se realiza un acceso de lectura. En este caso, la UC no indica el dato, puesto es precisamente lo que espera recibir. Los dems pasos son idnticos a los del acceso de escritura. Desde que se inicia la secuencia hasta que finaliza transcurre un tiempo, denominado tiempo de acceso, cuya duracin depende de la tecnologa con que esta fabricada la MP.

Tabla 2.1. Secuencia de acceso a la memoria.

(a) Acceso de escritura.

(b) Acceso de lectura.

Unidad de entradas y salidas. ___________________________________________________________________________________________ Departamento de Sistemas Digitales

Mquinas Computadoras I Ya se ha visto en las secciones precedentes como funcionan la CPU y la MP, pero puede decirse que es

necesaria la comunicacin entre el interior de la computadora y su entorno o periferia. Esta comunicacin se consigue a travs de dispositivos de muy diversos tipos, como son: teclados, impresoras, pantallas, discos magnticos, etc. Es estos dispositivos se les conoce con el nombre genrico de perifricos. En la figura 2.6 se muestran algunos perifricos conectados a la Unidad de E/S, la cual hace de intermediaria entre los perifricos y la CPU. Las flechas indican el sentido en que fluye la informacin.

Figura 2.6. La unidad de E/S hace de intermediaria entre la UCP y los perifricos.

La coordinacin de la comunicacin entre los perifricos y la CPU la realiza la Unidad de E/S. Obsrvese que esta no es un perifrico sino un dispositivo que gestiona a los perifricos siguiendo las ordenes de la CPU; es decir, la Unidad de E/S recibe de la Unidad de Control informacin sobre el tipo de transferencia de datos que debe realizar (si es de entrada o de salida) y perifrico que debe de utilizar; si es de salida recibir tambin el dato que debe enviar y el momento de la operacin. Entonces, la Unidad de E/S seleccionara el perifrico y ejecutara la operacin teniendo en cuanta las caractersticas propias de cada perifrico. Una vez ejecutada la orden avisara a la UC de la terminacin de la transferencia. Cada perifrico o parte de un perifrico tendr asignado un numero o direccin que servir para identificarlo. Cuando la UC quiera seleccionarlo enviara dicho nmero a la Unidad de E/S.

Interconexin de las unidades funcionales. Anteriormente habamos visto las funciones que realiza cada unidad de la computadora, y que se deben de comunicar entre ellas para pasarse informacin. Estas informaciones se transmiten en forma de seales elctricas y, por tanto, circulan a travs de conductores elctricos. Ya sabemos que en un sistema digital las informaciones se encuentran codificadas en binario formando grupos de bits. Cada bit de uno de estos grupos se suele enviar de una unidad a otra por un conductor ___________________________________________________________________________________________ Departamento de Sistemas Digitales

Mquinas Computadoras I diferente al del resto de los bits. De esta forma, si el grupo esta constituido por 8 bits, sern necesarios 8 conductores; si lo forman 16 bits, se emplearan 16 conductores; etc. Se hace as para ahorrar tiempo, ya que circulan todos los bits de un mismo grupo a la vez, cada uno por su conductor. A esta forma de enviar los datos se denomina transmisin en paralelo. Cuando la CPU quiere leer o escribir en una determinada posicin de memoria, enviara la direccin, en

10

paralelo, a la memoria por un conjunto de conductores elctricos al que se denomina bus de direcciones, ya que se utiliza exclusivamente para enviar direcciones. As mismo, los datos ledos o los que se quieren escribir se trasladan mediante un conjunto de conductores elctricos denominado bus de datos. Las ordenes de la CPU a la MP y las respuestas de la MP a la CPU son enviadas por un tercer conjunto de conductores llamado bus de control. En la figura 2.7 se muestran las conexiones de la CPU con la MP. Se han dibujado en la figura 2.7 (a) todos los conductores elctricos suponiendo que se emplean 8 hilos para el bus de datos, 16 para el de direcciones y 3 para el de control. En la practica no se dibujan todos los hilos para simplificar las figuras y se hace como en las figuras 2.7 (b) y 2.7 (c).

(b) Indicando sobre una lnea el nmero de conductores.

(a) Representando todos los hilos. (c) Indicando el sentido de las informaciones. Figura 2.7. Interconexiones entre la UCP y la MP.

___________________________________________________________________________________________ Departamento de Sistemas Digitales

Mquinas Computadoras I

11

3. La arquitectura INTEL de 32 bits.


En este punto haremos una descripcin de uno de los microprocesadores de Intel que represent un punto de partida muy importante para los microprocesadores actual, el 80386 o como comnmente se le conoce el 386. Caractersticas Fundamentales de microP 80386. Este microprocesador fue presentado en Octubre de 1985 en Madrid, sus caractersticas fundamentales eran: Bus de datos de 32 bits, lo que lo convierte en el primer microprocesador de 32 bits. Bus de direcciones de 32 bits, que permite un espacio de direccionamiento de 4 Gb. Refina aun mas la arquitectura "Pipeline", al tener seis unidades de trabajo, estas son: unidad del bus, unidad de precarga, unidad de decodificacin, unidad de ejecucin, unidad de segmentacin y unidad de paginado. Posee cuatro modos de trabajo: real (simula a un 8086), protegido 286 (simula a un 286), protegido 386 y virtual 8086. El conjunto de registros pasa a tener 32 bits y surgen algunos nuevos, fundamentalmente relacionados con el modo protegido. Su densidad es de 275 000 transistores. Posee un repertorio de 111 instrucciones, de ellas 20 son nuevas. Velocidad de 5 MIPS (Millones de Instrucciones Por Segundo). Trabajaba a 16, 20, 25 y 33 Mhz. Tuvo los modelos SX (bus externo de 16 bits), DX (bus externo de 32 bits, verdadero 386) y SL (incorpora el modo sleep, el microprocesador es capaz de desactivar los componentes que no se utilizan, lo que origina ahorro de electricidad, elemento vital para las computadoras porttiles). Permita el trabajo con una memoria virtual de 64 Tb, valor no alcanzado por ninguna aplicacin hoy en da. Permite multitarea. Establece mecanismo de proteccin de memoria, sistema de cuatro anillos. Tamao variable de los segmentos, 64 KB o 4 GB. Coprocesador matemtico opcional, 387. Cola interna de instrucciones de 16 bits.

Arquitectura interna del 8386 DX. Internamente el 80386 DX est compuesto por 6 unidades de trabajo, a continuacin se explica cada una de ellas: 1. Unidad de Control de Bus: Permite la interfaz del trabajo y control de los buses con el mundo exterior, posee 32 lneas de datos y 32 lneas de direcciones, as como varias seales de control. 2. Unidad de Prebsqueda: Implementa el mecanismo conocido como cola de instrucciones, el cual permite buscar hasta 16 bytes de cdigo de instrucciones. Siempre que exista un espacio en la cola de la unidad de ejecucin, le proporciona a la unidad de control de bus la direccin de la prxima instruccin a ejecutar. ___________________________________________________________________________________________ Departamento de Sistemas Digitales

Mquinas Computadoras I

12

3. Unidad de Decodificacin: Lee el cdigo de as instrucciones a ejecutar y lo convierte en el microcdigo empleado por la unidad de ejecucin, puede almacenar hasta tres instrucciones decodificadas. 4. Unidad de Ejecucin: Incluye la unidad lgica y aritmtica, los registros y las unidades fsicas para realizar la multiplicacin, la divisin, los desplazamientos y el control de la memoria. 5. Unidad de Segmentacin: Es la encargada de la conversin de direcciones segmentadas en lineales. 6. Unidad de Paginado: Es la encargada de convertir direcciones lineales en fsicas.

Conjunto de registros. El 386 y la arquitectura de 32 bits en general cuentan con un conjunto de registros agrupados en varias categoras.

1.- Registros generales EAX EBX ECX EDX GDI ESI EBP ESP

2.- Registros de segmento CS DS SS ES GS FS

3.- Registros de estado EFlags EIP

5.- Registros de tabla de descriptores

GDTR 4.- Registros de control CR0 IDTR LDTR TR

6.-

Depuracin

CR1

prueba. DR0 DR1 ... DR6 DR7 CR2 CR3 6.- Registros de Prueba. TR6 TR7

32 bits EAX EBX ECX EDX

16 bits AX BX CX DX

8 bits Ah Bh Ch Dh Al Bl Cl Dl

ESP EBP EDI ESI

SP BP DI SI

___________________________________________________________________________________________ Departamento de Sistemas Digitales

Mquinas Computadoras I Registros de propsito generales.

13

EAX: Acumulador, es el ms utilizado, soporta cualquier operacin, pero es imprescindible en las operaciones con puertos, divisiones y multiplicaciones, en los primeros microprocesadores no poda ser utilizado para direccionar memoria.

EBX: Registro base, ya que en los modelos anteriores su uso fundamental era como puntero.

ECX: Contador, su funcin fundamental es soportar las operaciones con ciclos, al igual que EAX, en los modelos anteriores no poda ser usado como puntero.

EDX: De datos, es un segundo acumulador, apoya a EAX en las operaciones con puertos, multiplicaciones y divisiones, tampoco poda ser usado como puntero.

ESP: Puntero al stack, como su nombre lo indica, es el encargado de apuntar a la primera posicin libre en el stack, como curiosidad se debe decir, que en el 8086 este registro apuntaba al ultimo ocupado, a partir de aqu se puede saber si la maquina posee un 8086 o un microprocesador superior

EBP: Puntero auxiliar al stack, este registro esta preparado para el trabajo con el stack, usado fundamentalmente en el proceso de sacar del stack parmetros de procedimientos; aunque puede ser usado como puntero si se siguen determinadas convenciones.

EDI: ndice destino, usado principalmente como puntero, imprescindible en las instrucciones de cadena. Por defecto Trabaja con el DS.

ESI: ndice fuente, usado principalmente como puntero, imprescindible en las instrucciones de cadena. Por defecto Trabaja con el ES.

Registros de segmento. Siguen siendo de 16 bits, al igual que en sus antecesores; su funcin es servir de puntero al comienzo de los segmentos.

CS: Puntero al inicio del segmento de cdigo; (Segmento de Instrucciones) SS: Puntero al inicio del segmento de stack. (Segmento de Pila Stack) DS: Puntero al inicio del segmento de datos. (Datos de los programas). ES: Puntero al inicio de otro Segmento de Datos, extra;

FS: Con la misma Funcin del ES GS: Con la misma Funcin del ES.

Registros de estado y control. EIP - Puntero de Instrucciones, apunta a la prxima instruccin a ejecutar.

___________________________________________________________________________________________ Departamento de Sistemas Digitales

Mquinas Computadoras I EFlags Banderas instruccin:

14 que informan el estado en que queda el micro despus de ejecutar una

Bit 0 2

NN CF PF

Descripcin Acarreo: 1 si la operacin tuvo acarreo. Paridad: 1 si la operacin ejecutada da como resultado un numero par de 1.

4 6 7 8 9

AF ZF SF TF IF

Acarreo auxiliar: Acarreo en los bits 3 y 4. Cero: 1 si la instruccin ejecutada dio 0 como resultado. Signo: 1 si el resultado < cero. Trampa: si es 1 ejecutar y parar. Interrupcin: si es 1 Estn habilitadas las interrupciones.

10 11 12 y 13 14 16 17

DF OF IOPL NT RF VM

Direccin: si es 1 incrementa los punteros en operaciones con cadenas. Desbordamiento: 1 si ocurri overflow. Nivel de privilegio: Tarea anidada: indica si existen tareas anidadas. Bandera resumen: Es utilizada en la depuracin. Modo virtual: 1 indica que se esta en modi virtual 8086.

Funcin del Reset. Cuando el Microprocesador Recibe la seal de Reset, cae en un estado bien definido que se caracteriza por: CS=0ffff, IP=0000.

Estudio Independiente (1) Registros de Control de Mquina. Registros del sistema de direcciones Registros de depuracin y prueba.

Estudio Independiente (2) Elaborar una resea histrica acerca del desarrollo de los microP Intel en cual aparezcan las caractersticas ms importantes de cada uno.

4. Mecanismos de direccionamiento de la memoria.


Cuando escribimos un programa y tratamos de acceder a la memoria, la mayora de las veces ni nos imaginamos todo el complejo proceso que se realiza tras esta tarea, adems tampoco tenemos idea del lugar en que pudieran estar alojados esos datos o esa instruccin a la que vamos a acceder. Existen dos mecanismos de direccionamiento de la memoria, el modo real y el modo protegido. Modo real.

___________________________________________________________________________________________ Departamento de Sistemas Digitales

Mquinas Computadoras I

15

El primer mecanismo de direccionamiento de la memoria que existi fue el mecanismo de direccionamiento en modo real. Los microprocesadores 8086/8088 y 80186 solo funcionaban en modo real, fue a partir del 80286 en el que introdujo el modo protegido. El funcionamiento en modo real permite que el microprocesador slo direccione 1M byte de memoria, aunque sea un microprocesador 80486. El funcionamiento en modo real permite que el software de aplicacin escrito para el 8088 u 8086 que slo contiene 1M byte de memoria, funcione en los microprocesadores 80286-80486. En todos los casos, cada uno de los microprocesadores empieza a funcionar en modo real en forma implcita (deafault), siempre que se aplica corriente o si se restablece el microprocesador.

Segmentos y desplazamientos. Una direccin de segmento y una direccin de desplazamiento, generan una direccin en la memoria en modo real. Todas las direcciones en memoria en modo real consisten de un segmento y un desplazamiento. El segmento ubicado en cualquier registro de segmento, define la direccin inicial de cualquier segmento de 64K bytes. La direccin de desplazamiento selecciona una localidad dentro del segmento de memoria de 64Kb. En el modo real, a cada registro de segmento se le agrega un 0H en su extremo derecho, para formar una direccin de memoria de 20 bits que le permite colocar el inicio del segmento en casi cualquier localidad dentro del 1er MB de memoria. Por ejemplo si un segmento de registro contiene una 1200H, direcciona a un segmento de memoria de 64KB que empieza en la localidad 12000H. Debido al 0H que se agrega en forma interna, los segmentos pueden empezar en cualquier mltiplo de 16B en el sistema de memoria. A menudo, a este lmite de 16B se le llama un prrafo de memoria. Debido a que un segmento de memoria en modo real tiene 64KB de longitud, una vez que se conoce la direccin inicial, para encontrar la direccin final se agrega una FFFFH a la inicial. Por ejemplo, si un registro de segmento contiene 3000H, la primera direccin en el segmento es 30000H y la ltima es 30000H + FFFFH o 3FFFFH. La direccin de desplazamiento se suma a la direccin de segmento para ubicar una direccin en el segmento. Por ejemplo, si la direccin de segmento es 1000H y la direccin de desplazamiento es 2000H entonces el microprocesador direcciona a la localidad de memoria 12000H. La direccin del segmento y del desplazamiento, a veces, se escribe 1000:2000 para una direccin de segmento de 1000H y un desplazamiento de 2000H.

___________________________________________________________________________________________ Departamento de Sistemas Digitales

Mquinas Computadoras I Memoria en modo real

16

FFFFF

1FFFF 1F000
Segment de 64KB

Desplazamiento = F000 Reg. de segmento

10000

1000

0000
Modo de direccionamiento en modo real con el empleo de una direccin de segmento y una de desplazamiento. Estudio Independiente (3): Modo protegido.

MODOS DE DIRECCIONAMIENTO DE DATOS. Los modos de direccionado son las formas en que se especifican los operandos en una instruccin. Estudiaremos como se utiliza para el direccionado la instruccin MOV (mover datos). La instruccin MOV transfiere bytes o palabras de datos entre los registros o entre los registros y la memoria en los 8086-80286, y bytes, palabras o dobles palabras en los procesadores 80386 y 80486.

Debido a que la instruccin MOV es sencilla y flexible, proporciona la base para la explicacin de los modos de direccionamiento de datos. En esta instruccin el operando fuente esta a la derecha y el destino a la izquierda, junto al cdigo de operacin MOV. El destino se separa del operando fuente mediante una coma.

MOV destino, fuente

En el P 386 existen 8 modos de direccionamiento de datos. 1. Direccionamiento por registros. 2. Direccionamiento inmediato. 3. Direccionamiento directo de datos. 4. Direccionamiento indirecto por registro. 5. Direccionamiento base+ndice. 6. Direccionamiento relativo por registros 7. Direccionamiento relativo por registros 8. Direccionamiento de ndice escalado ___________________________________________________________________________________________ Departamento de Sistemas Digitales

Mquinas Computadoras I 1. Direccionamiento de Registro. Los operandos de la instruccin estn almacenados en registros. Los operandos pueden ser: 8 bits (byte), 16 bits (palabra), 32 bits (doble palabra) La longitud se indica por la identificacin del registro. AX BX

17

Ej. MOV AX,BX

Existen algunas restricciones en el uso de los registros. Estas son: 1. No se permite combinar registros de diferentes longitudes en una misma instruccin. 2. El registro de segmento de cdigo (CS) no se puede utilizar como destino.

2. Direccionamiento inmediato. Transfiere un byte,palabra o doble palabra de datos inmediato hacia el registro o localidad de memoria en el destino. Ej. MOV AX,50H AX 50H

MOV EBX,12345678h

3. Direccionamiento Directo. Transfiere un byte, palabra o doble palabra entre una localidad de memoria a un registro. AX2AH

Ej. MOV AX, [50H] direccin de memoria 50H tiene como contenido a 2AH MOV AX, [var] var es una variable declarada previamente

Ntese la diferencia con el inmediato, en este caso no se tiene el dato, sino como llegar a l (que se encuentra en memoria).

4. Direccionamiento indirecto por registro. Transfiere un byte, palabra o doble palabra entre un registro y una localidad de memoria direccionada por un registro ndice o base. Si BX=3BFFH dir de mem 3BFFH= 1FH AX1FH

Ej. MOV AL,[BX]

Esta lnea mueve el contenido que se encuentra en la localizacin de memoria a la que hace referencia BX.

5. Direccionamiento base + ndice Transfiere un byte, palabra o doble palabra entre un registro y una localidad de memoria direccionada por un registro base mas un registro ndice. Ej. MOV [BX+DI],CL Esta instruccin copia el contenido del registro CL y lo pasa a la localidad de memoria direccionada por BX + DI (desplazamiento)

MOV byte[Arreglo+DI] ,20h Esta es la forma utilizada para movernos dentro de un arreglo. Se le debe especificar que en la direccin formada por Arreglo+DI se va a almacenar un 20h como byte. ___________________________________________________________________________________________ Departamento de Sistemas Digitales

Mquinas Computadoras I

18

MOV AL,[Arreglo+DI]

Mueve para AL el contenido de Arreglo+DI

Estudio Individual (5): Los otros modos de direccionado.

Conclusiones
En esta clase hemos visto la importancia que tiene el lenguaje ensamblador desde el punto de vista de la programacin y la posibilidad que nos brinda de relacionarnos con el hardware de nuestra PC, e incluso llegar a dominar el funcionamiento de muchos de sus componentes. Conocimos adems las caractersticas fundamentales del microP 386, el cual marca el desarrollo de los micros actuales.

Confeccionado por: Dpto. De Sistemas Digitales


Fecha de ltima modificacin: lunes, 09 de octubre de 2006, 16:48:37

___________________________________________________________________________________________ Departamento de Sistemas Digitales

You might also like