Vous êtes sur la page 1sur 39

Sistemas Digitales II

INTRODUCCION

Los procesadores de 16 bits fueron una nueva generacin de microprocesadores desarrollados para reemplazar o completar a las microcomputadoras de 8 bits de los aos setenta, que fueron las que comenzaron la revolucin de las microcomputadoras. El x86 fue diseado para trabajar con lenguajes de alto nivel, disponiendo de un soporte hardware con el que los programas escritos en dichos lenguajes ocupan un pequeo espacio de cdigo y pueden ejecutarse a gran velocidad. Esta conc epcin, orientada al uso de compiladores, se materializa en un conjunto de facilidades y recursos, y en unas instrucciones entre las que cabe destacar las que permiten efectuar operaciones aritmticas de multiplicar y dividir, con y sin signo; las que mane jan cadenas de caracteres, etc. En su momento, el 8086 junto con el x88 fueron los microprocesadores ms empleados dentro de su categora, especialmente desde que IBM los adopt para la construccin de su computadora personal. Muchos fabricantes de microo rdenadores utilizaron esta familia microcomputadora para fabricar equipos de tipo profesional. Hoy en da, la utilizacin del 8086 es ms reducida, quedando principalmente orientado a la enseanza, como base de los microprocesadores de la ltima generacin . Antes de pasar a hacer una descripcin ms detallada de la arquitectura interna del microprocesador, vamos a destacar brevemente las principales caractersticas del x86: El x86 dispone de instrucciones especiales para el tratamiento de cadenas de caracteres. Los registros del x86 tienen una misin especfica, por lo que se podra decir que cada uno de ellos tiene su propia personalidad, aunque varios comparten tareas comunes. El x86 dispone de un conjunto de registros, denominados cola de instrucciones , en el cual se van almacenando de forma anticipada los cdigos de las instrucciones, consiguiendo que este aumente su velocidad de trabajo.

Ingeniera Electrnica

Sistemas Digitales II
LENGUAJE ENSAMBLADOR PARA PROCESADORES X86 1. MICROPROCESADORES.

El microprocesador es uno de los logros ms sobresalientes del siglo XX . Pero cada ao, el microprocesador se acerca ms al centro de nuestras vidas, forjndose un sitio en el ncleo de una mquina tras otra. Su presencia ha comenzado a cambiar la forma en que percibimos el mundo e incluso a nosotros mismos. Cada vez se hace ms difcil pasar por alto el microprocesador como otro simple producto en una larga lnea de innovaciones tecnolgicas. (Brey, 1994)
1.1. PROCESADOR.

La unidad de procesamiento central (CPU) es donde se manipulan los datos. En una microcomputadora, el CPU completo est contenido en un chip muy pequeo llamado microprocesador. Todas las CPU tienen por lo menos dos partes bsicas, la unidad de control y la unidad aritmticolgica. Todos los recursos de la computadora son administrados desde la unidad de control, cuya funcin es coordinar todas las actividades de la computadora. La unidad de control contiene las instrucciones de la CPU para llevar a cabo comandos. El conjunto de instrucciones, que est incluido dentro de los circuitos de la unidad de control, es una lista de todas las operaciones que realiza la CPU. Cada instruccin en el conjunto de instrucciones es acompaada por un microcdigo, que son instrucciones muy bsicas que le dicen a la CPU cmo ejecutar las instrucciones. Cuando la computadora corre un programa, busca los comandos del programa dentro del conjunto de instrucciones de la CPU y las ejecuta en orden. La unidad aritmtico-lgica (ALU) es cuando la unidad de control encuentra una instruccin que involucra aritmtica o lgica, le pasa el control al segundo componente de la CPU. La ALU incluye un grupo de registros, es decir, memoria construida directamente en la CPU que se usa para guardar datos que estn siendo procesados por la instruccin actual. (Hayes, 1996) La CPU de una computadora contiene la inteligencia de la mquina; es donde se realizan los clculos y las decisiones. El complejo procedimiento que transforma datos nuevos de entrada en informacin til de salida se llama procesamiento. Para llevar a Ingeniera Electrnica 4

Sistemas Digitales II cabo esta transformacin, la computadora usa dos componentes: el procesador y la memoria. El procesador es el cerebro de la computadora, la parte que interpreta y ejecuta las instrucciones. El procesador casi siempre se compone de varios circuitos integrados o chips, estos estn insertados en tarjetas de circuitos, mdulos rgidos rectangulares con circuitos que los unen a otros chips y a otras tarjetas de circuitos. El microprocesador moderno contiene unos 20 millones de transistores y cada chip terminado es el producto de procesos ms complicados que los que se utilizaron en el Proyecto Manhattan para construir la bomba atmica. Y no obstante, pese a un proceso de manufactura extraordinariamente refinado, los microchips se producen en volumen a razn de ms de 1,000 millones de unidades por ao. Para poner esta complejidad en perspectiva, imagnese que dentro de cada microprocesador diminuto existe una estructura tan compleja como una ciudad de tamao mediano, incluidas todas sus lneas de energa elctrica, lneas telefnicas, lneas de drenaje, edificios, calles y casas. Ahora imagine que en esa misma ciudad, millones de personas se desplazan a la velocidad de la luz y con la sincronizacin perfecta en una danza de coreografa muy complicada. (Brey, 1994) Y eso es tan slo un chip. De todas las estadsticas asombrosas que se utilizan para describir el mundo del microprocesador, ninguna es ms extraordinaria que sta: el nmero total de transistores que integran todos los microchips que se producirn en el mundo este ao es equivalente al nmero de gotas de lluvia que caern en California durante ese mismo periodo. (Hayes, 1996)
1.2. HISTORIA DEL LOS PROCESADORES.

Los microprocesadores modernos estn integrados por millones de transistores y otros componentes empaquetados en una cpsula cuyo tamao vara segn las necesidades de las aplicaciones a las que van dirigidas, y que van desde el tamao de un grano de lente ja hasta el de casi una galleta. Las partes lgicas que componen un microprocesador son, entre otras: unidad aritmtico -lgica, registros de almacenamiento, unidad de control, Unidad de ejecucin, memoria cach y buses de datos control y direccin. (Ledesma, 2001)

Ingeniera Electrnica

Sistemas Digitales II Existen una serie de fabricantes de microprocesadores, como IBM, Intel, Zilog, Motorola, Cyrix y AMD. A lo largo de la historia y desde su desarrollo inicial, los microprocesadores han mejorado enormemente su capacidad, desde los viejos Intel 8080, Zilog Z80 o Motorola 6809, hasta los recientes Intel Core 2 Duo, Intel Core 2 Quad, Intel Xeon, Intel Itanium II, Transmeta Efficeon o Cell. Ahora los nuevos microprocesadores pueden tratar instrucciones de hasta 256 bits, habiendo pasado por los de 128, 64, 32, 16, 8 y 4 bits. Desde la aparicin de los primeros computadores en los aos cuarenta del siglo XX. (Stallings, 1998)
1.2.1 Antecedentes.

Entre estas evoluciones podemos destacar estos hitos: ENIAC (Electronic Numeric Integrator And Calculator) Fue un computador con procesador multiciclo de programacin cableada, esto es, la memoria contena slo los datos y no los programas. ENIAC fue el primer computador, que funcionaba segn una tcnica a la que posteriormente se dio el nombre de monociclo.
y

EDVAC (Electronic Discrete Variable Automatic Computer) fue la primera mquina de Von Neumann, esto es, la primera mquina que contiene datos y programas en la misma memoria. Fue el primer procesador mult iciclo. El IBM 7030 (apodado Stretch) fue el primer computador con procesador segmentado. La segmentacin siempre ha sido fundamental en Arquitectura de Computadores desde entonces. El IBM 360/91 supuso grandes avances en la arquitectura segmentada, introduciendo la deteccin dinmica de riesgos de memoria, la anticipacin generalizada y las estaciones de reserva. El CDC 6600 fue otro importante computador de microprocesador segmentado, al que se considera el primer supercomputador. El ltimo gran hito de la Arquitectura de Computadores fue la segmentacin superescalar, propuesta por John Cocke, que consiste en ejecutar muchas instrucciones a la vez en el mismo microprocesador. Los primeros procesadores superescalares fueron los IBM Power-1.

Ingeniera Electrnica

Sistemas Digitales II
1.2.2. Avances

Hay

que

destacar

que

los El

grandes

avances se

en

la

construccin de

de

microprocesadores se deben ms a la Arquitectura de Computadores que a la miniaturizacin electrnica. microprocesador compone muchos componentes. En los primeros procesadores gran parte de estos estaban ociosos el 90% del tiempo. (Brey, 1994) Sin embargo hoy en da los componentes estn repetidos una o ms veces en el mismo microprocesador, y los cauces estn hechos de forma que siempre estn todos los componentes trabajando. Por eso los microprocesadores son tan rpidos y tan productivos. Esta productividad tan desmesurada, junto con el gran nmero de transistores por microprocesador (debido en parte al uso de memorias cach) es lo que hace que se necesiten los inmensos sistemas de refrigeracin que se usan hoy en da. Inmensos en comparacin con el microprocesador, que habitualmente consiste en una cajita de 2 centmetros de largo y de ancho por 1 milmetro de altura, cuando los refrigeradores suelen tener volmenes de al meno s 5 centmetros cbicos. (Brey, 1994)

Ingeniera Electrnica

Sistemas Digitales II
2. ARQUITECTURA DEL PROCESADOR X86 2.1. CONCEPTOS GENERALES.

El x86 es la denominacin genrica dada a ciertos microprocesadores de la familia Intel, sus compatibles y la arquitectura bsica a la que estos procesadores pertenecen, por la terminacin de sus nombres numricos: 8086, 80286, 80386, 80486, etc. Son comnmente conocidos por versiones abreviadas de sus nombres, como 286 i286, 386 i386, 486 i486, e incluso 086, por i8086 o i8088 (su respectiva versin de 8 bits). A partir del i486, sus sucesores sern conocidos por los nombres no numricos referentes a la marca, logotipo o nombre clave con los que fueron lanzados al mercado, y se les comercializ (a menudo seguido de su frecuencia, en mega hertzios, de ciclos de reloj), como los Pentium (y Pentium MMX), o los K5, para el 80586 ( i586), en sus respectivas versiones de Intel y AMD; los Pentium Pro, Pentium II, Pentium III y K6, as como los 6x86, de Cyrix, para el 80686 ( i686); los Pentium 4, Pentium D y K7 (Athlon, Athlon XP, Duron y Sempron), para los 80686 de sptima generacin. (Brey, 1994) Con la octava generacin de procesadores compatibles x86, los x86 -64, que utilizan arquitectura y bus de 64 bits, con posibilidad de mltipl es ncleos, introducida por AMD y clonada por Intel, se introducen por primera vez nuevas variantes y formas, en lo que a la denominacin y clasificacin del procesador se refiere, tales como el nombre comercial tecnologa del modelo, la compaa fabricante, su nmero de serie, la cantidad de bits a la que puede trabajar o la cantidad de ncleos por los que est compuesto, por ejemplo: Intel Core 2 Duo E2180, o lo que es lo mismo, i686 Intel Pentium de doble ncleo E2180, de 64 bits y de 1,6 a 2,0 Ghz; AMD Athlon 64 X2, es decir, un AMD 64 bits, Athlon X de doble ncleo a 2 Ghz; todos ellos englobados bajo el denominador comn x86-64, y compatibles con subarquitecturas anteriores de 32, 16 y 8 bits, de la familia de procesadores x86 de Intel, y compati bles. La comercial popularidad de esta arquitectura hizo que muchos fabricantes, adems de Intel, empezaran a fabricar en masa microprocesadores basados en esta arquitectura. Estas compaas son entre otras AMD, Cyrix, NEC Corporation y Transmeta. (Tokheim, 2006) Ingeniera Electrnica 8

Sistemas Digitales II

La arquitectura es notablemente no limpia, por mantener compatibilidad con la lnea de procesadores de 16 bits de Intel, que a su vez tambin eran compatibles con una familia de procesadores de 8 bits. Existen dos sucesores de 64 bits para esta arquitectura. (Hayes, 1996) Tcnicamente, la arquitectura es denominada IA32 (Intel Architecture 32 bits). Est basada en un modelo de arquitectura CISC (del ingls Complex Instruction Set Computing).
2.1.1. Diseo de microcomputadoras bsica.

La figura 1-1 muestra el diseo bsico de una microcomputadora hipottico. La unidad central de procesamiento (CPU), es el lugar donde los clculos y las operaciones lgicas, contiene un nmero limitado de lugares de almacenamiento llamado registros, un reloj de alta frecuencia, una unidad de control, y una unidad aritmtica lgica. (Stallings, 1998) El reloj se sincroniza las operaciones internas de la CPU con otros componentes del sistema.
y

La unidad de control (CU) coordina la secuencia de pasos necesarios para la ejecucin de instrucciones de la mquina. La unidad aritmtica lgica (ALU) realiza las operaciones aritmticas, como sumas y restas y operaciones lgicas como AND, OR y NOT.

La CPU est conectado al resto del equipo a travs de pines conectado al zcalo de la CPU en la placa base del ordenador. Mayora de los pines se conectan al bus de datos, el bus de control, y el bus de direcciones. (Hayes, 1996) La unidad de almacenamiento de memoria es que las instrucciones y los datos se llevan a cabo al mismo tiempo un programa de ordenador est funcionando. La unidad de almacenamiento recibe las solicitudes de datos de la CPU, la transferencia de datos de la memoria de acceso aleatorio (RAM) a la CPU, y las transferencias de datos de la CPU en la memoria. El tratamiento de los datos se Ingeniera Electrnica 9

Sistemas Digitales II lleva a cabo dentro de la CPU, por lo que los programas que residen en la memoria deben ser copiados en la CPU antes de que puedan ejecutar. Instrucciones de los programas individuales se pueden copiar en la CPU a la vez, o grupos de instrucciones pueden ser copiados juntos. (Ledesma, 2001) Un bus es un grupo de alambres paralelos que la transferencia de datos de una parte de la computadora a otra. Un sistema de ordenador por lo general contiene cuatro tipos de bus: datos de I/O, control y direccin. (Ledesma, 2001) Figura 1-1: Diagrama de bloques de un microordenador.

El bus de datos transfiere las instrucciones y datos entre la CPU y la memoria. La I/O de las transferencias de bus de datos entre la CPU y los dispositivos del sistema de entrada/salida. El bus de control utiliza seales binarias para sincronizar las acciones de todos los dispositivos conectados al bus del sistema. El bus de direcciones tiene las direcciones de instrucciones y datos cuando la instruccin se est ejecutando la transferencia de datos entre la CPU y la memoria. (Hayes, 1986) Reloj cada operacin que implique la CPU y el bus del sistema se sincroniza con un reloj interno de pulso a un ritmo constante. La unidad bsica de tiempo para ver las instrucciones de la mquina es un ciclo de la mquina (o ciclo de reloj). La duracin de un ciclo de reloj es el tiempo requerido para completar un pulso de reloj. En la siguiente figura, un ciclo de reloj se muestra como el tiempo entre un flanco de bajada y la siguiente:

Ingeniera Electrnica

10

Sistemas Digitales II

La duracin de un ciclo de reloj se calcula como la inversa de la velocidad del reloj, que a su vez se mide en oscilaciones por segundo. Un reloj que oscila mil millones de veces por segundo (1GHz), por ejemplo, produce un ciclo de reloj, con una duracin de una mil millonsima de segundo (1 nanosegundo). (Tokheim, 2006) Una instruccin de mquina requiere al menos un ciclo de reloj para ejecutar, y algunos requieren de ms de 50 relojes (la instruccin de multiplicacin en el procesador 8088, por ejemplo). Instrucciones que requieren acceso a la memoria a menudo tienen ciclos de reloj de vaco llamado estados de espera debido a las diferencias en la velocidad de la CPU, el bus del sistema, y los circuitos de memoria. (Tokheim, 2006)
2.1.2. Instruccin del ciclo de ejecucin.

La ejecucin de una instruccin de mquina se puede dividir en una secuencia de operaciones concretas, llamado el ciclo de ejecucin de la instruccin. Antes de ejecutar un programa se carga en memoria. El puntero de la instruccin contiene la direccin de la siguiente instruccin . La cola de instruccin tiene un grupo de instrucciones a punto de ser ejecutado. La ejecucin de una instruccin de mquina requiere tres pasos bsicos: Obtener, decodificar y ejecutar. Dos pasos ms son necesarios cuando la instruccin utiliza un operando de memoria: buscar operando y operando de salida tienda. Cada uno de los pasos que se describen a continuacin: Fetch: La unidad de control obtiene la siguiente instruccin de la cola de instrucciones e incrementa el puntero de instruccin (IP). La IP tambin se conoce como el contador de programa.
y

Decodificar: La unidad de control decodifica la funcin de la instruccin para determinar lo que la instruccin va a hacer. Los operandos de la instruccin de

Ingeniera Electrnica

11

Sistemas Digitales II entrada se pasa a la ALU, y las seales se envan a la ALU que indica la operacin a realizar.
y

Recuperar los operandos: Si la instruccin utiliza un operando de entrada situada en la memoria, la unidad de control utiliza una operacin de lectura para recuperar el operando y copiarlo en registros internos. Registros internos no son visibles para los programas de usuario. Ejecutar: La ALU ejecuta la instruccin con los registros de llamada y registros internos como operandos y enva el resultado a los registros de nombre y/o memoria. El estado de ALU actualizaciones banderas proporcionar informacin sobre el estado del procesador. El operando de salida de la tienda: Si el operando de salida est en la memoria, la unidad de control utiliza una operacin de escritura para almacenar los datos.

La secuencia de pasos se puede expresar de forma ordenada en pseudocdigo:

loop fetch next instruction advance the instruction pointer (IP) decode the instruction if memory operand needed, read value from memory execute the instruction if result is memory operand, write result to memory continue loop Un diagrama de bloques que muestra el flujo de datos dentro de una CPU tpica se muestra en la figura 1-2. El diagrama ayuda a mostrar las relaciones entre los componentes que interactan durante el ciclo de ejecucin de la instruccin. Para leer las instrucciones del programa de la memoria, la direccin se coloca en el bus de direcciones. A continuacin, el controlador de memoria coloca el cdigo de pedido en el bus de datos, por lo que el cdigo est disponible dentro de la memoria cach de cdigo. El valor del puntero de instruccin determina que la instruccin se ejecutar a continuacin. La instruccin es analizada por el decodificador de instrucciones, haciendo que las seales digitales adecuadas para

Ingeniera Electrnica

12

Sistemas Digitales II ser enviada a la unidad de control , que coordina la ALU y la unidad de coma flotante. (Hayes, 1986) Aunque el bus de control no se muestra en esta figura, que lleva las seales que utilizan el reloj del sistema para coordinar la transferencia de datos entre los componentes del CPU. (Tokheim, 2006)

Figura 1-2: Diagrama de bloques simplificado de la CPU.

2.1.3. Lectura de la memoria.

El rendimiento del programa es a menudo depende de la velocidad de acceso a la memoria. Velocidad de reloj de la CPU pueden ser varios gigahertz, mientras que el acceso a la memoria se produce en un bus de sistema funciona a una velocidad mucho ms lenta. El procesador debe esperar uno o ms ciclos de reloj hasta operandos han sido extradas de la memoria antes de la instruccin actual puede completar su ejecucin. Los ciclos de reloj perdido se llaman estados de espera. Varios pasos son necesarios cuando la lectura de las instrucciones o los datos de la memoria, controlados por el reloj interno del procesador. La figura 1-3 muestra el reloj del procesador (CLK) subiendo y bajando a intervalos de tiempo regulares. En Ingeniera Electrnica 13

Sistemas Digitales II la figura, un ciclo de reloj comienza a medida que cambia la seal de reloj de alta a baja. Los cambios se llaman borde de salida, e indican el tiempo que tarda la transicin entre estados. (Tokheim, 2006) Figura 1-3: Ciclo de lectura de memoria.

La siguiente es una descripcin simplificada de lo que sucede durante cada ciclo de reloj durante una lectura de memoria: Ciclo 1: Los bits de la direccin del operando en memoria se colocan en el bus de direcciones (ADDR). En el diagrama las lneas de direccin en cruz, muestra que algunos bits son iguales a 1 y los dems son iguales a 0.
y

Ciclo 2: La lnea de lectura (RD) se encuentra bajo (0) para notificar a la memoria que un valor se va a leer. Ciclo 3: La CPU espera un ciclo para dar tiempo a la memoria para responder. Durante este ciclo, el controlador de memoria los lugares del operando en el bus de datos (DATA). Ciclo 4: La lnea de lectura pasa a 1, lo que indica que la CPU para leer los datos en el bus de datos.

Las memoria cach, debido a la memoria convencional es mucho ms lenta que la CPU, uso de computadoras de alta velocidad de la memoria cach para mantener las instrucciones ms utilizadas recientemente y los datos. La primera vez que un programa lee un bloque de datos, se deja una copia en el cach. Si el programa tiene que leer los mismos datos una segunda vez, busca los datos en la cach. Un Ingeniera Electrnica 14

Sistemas Digitales II acierto de cach indica que los datos estn en cach, un error de cach indica que los datos no estn en cach y debe leerse desde la memoria convencional. En general, la memoria cach tiene un efecto notable en la mejora del acceso a los datos, especialmente cuando la memoria cach es grande. (Stallings, 1998)
2.1.4. Ejecucin de programas.

- Cargar y ejecutar procesos. Los pasos siguientes se describen , en secuencia, lo que sucede cuando un usuario de la computadora tiene un programa en un smbolo del sistema: El sistema operativo (OS) busca el nombre del archivo del programa en el directorio actual del disco. Si no puede encontrar el nombre no, busca en una lista predeterminada de los directorios (llamados caminos) para el nombre del archivo. Si el sistema operativo no puede encontrar el nombre del programa, que emite un mensaje de error.
y

Si el archivo de programa se encuentra, el sistema operativo recupera la informacin bsica sobre el archivo del programa desde el directorio del disco, incluyendo el tamao del archivo y su ubicacin fsica en la unidad de disco. El sistema operativo determina la siguiente ubicacin disponible en la memoria y carga el archivo de programa en la memoria. Se asigna un bloque de memoria para el programa y entra en la informacin sobre el tamao del programa y la ubicacin en una tabla (a veces llamada tabla d e descriptores). Adems, el sistema operativo puede ajustar los valores de los punteros dentro del programa por lo que contienen las direcciones de los datos del programa. El sistema operativo se inicia la ejecucin de las instrucciones del programa de la primera mquina. Tan pronto como el programa comienza a funcionar, se llama un proceso. El sistema operativo asigna el proceso de un nmero de identificacin (ID del proceso), que se utiliza para realizar un seguimiento al correr. El proceso se ejecuta por s mismo. Es el trabajo del sistema operativo para realizar el seguimiento de la ejecucin del proceso y de responder a las

Ingeniera Electrnica

15

Sistemas Digitales II solicitudes de recursos del sistema. Ejemplos de recursos son la memoria, el disco los archivos y dispositivos de entrada -salida.
y

Cuando el proceso termina, se elimina de la memoria.

2.2. DETALLES DE LA ARQUITECTURA X86

En esta seccin, nos centramos en las caractersticas bsicas de arquitectura de la familia de procesadores x86, que incluye los procesadores AMD de Intel IA-32 y 32 bits. (Tokheim, 2006)
2.2.1. Modos de operacin.

Los procesadores x86 tienen tres modos principales de funcionamiento: modo protegido, el modo de direccin real, y el modo de gestin del sistema. A modo de sub-, llamado virtuales-8086, es un caso especial de modo protegido. Aqu hay una breve descripcin de cada uno: El modo protegido de modo protegido es el estado natal del procesador, en el que todas las instrucciones y las funciones estn disponibles. Programas que se ofrecen reas separadas de memoria el nombre segmentos, y el procesador evita que los programas de referencia de memoria fuera de sus segmentos asignados. Virtual 8086 mientras que en modo protegido, el procesador puede ejecutar directamente la direccin real de software, tales co mo el modo de MS-DOS los programas en un entorno seguro multitarea. En otras palabras, si un programa se bloquea de MS-DOS o los intentos de escribir datos en el rea de memoria del sistema, no afectar a los programas que se ejecutan al mismo tiempo. Wind ows XP puede ejecutar mltiples virtual diferente -8086 sesiones al mismo tiempo. Direccin real de modo real el modo de abordar implementa el entorno de programacin del procesador Intel 8086 con algunas caractersticas adicionales, tales como la capacidad de cambiar a otros modos. Este modo est disponible en Windows 98, y se puede utilizar para ejecutar un programa de MS -DOS que requiere el acceso directo a la memoria del sistema y dispositivos de hardware. Ingeniera Electrnica 16

Sistemas Digitales II Programas que se ejecutan en modo real, la dire ccin puede hacer que el sistema operativo se bloquee (deje de responder a los comandos). (Hayes, 1996) Sistema de gestin de modo de sistema modo de gestin (SMM) ofrece un sistema operativo con un mecanismo para la implementacin de funciones tales como administracin de energa y la seguridad del sistema. Estas funciones se implementan normalmente por los fabricantes de ordenadores que personalizar el procesador para una configuracin especfica del sistema. (Tokheim, 2006)
2.2.2. Entorno de ejecucin bsica.

De 32 bits en modo protegido, una tarea o un programa puede abordar un espacio de direcciones lineales de hasta 4GBytes. Comenzando con el procesador P6, una tcnica llamada extendido de direccionamiento fsico permite que un total de 64GBytes de memoria fsica que deben abordarse. La direccin real de los programas de modo, por el contrario, slo se puede abordar una serie de 1MB. Si el procesador est en modo protegido y ejecutar mltiples programas en virtual -8086, cada programa tiene su propio 1MByte rea de memoria. (Ledesma, 2001)

- Ejecucin del programa bsico Registros Los registros son de alta velocidad ubicaciones de almacenamiento directamente dentro de la CPU, diseados para ser accesibles a una velocidad mucho mayor que la memoria convencional. Cuando un circuito de procesamiento se ha optimizado para la velocidad, por ejemplo, contadores de bucle se llevan a cabo en los registros en vez de variables. La Figura 1 -5 muestra los registros bsicos del programa de ejecucin. Hay ocho registros de propsito general, seis registros de segmento, un estado del procesador registro de banderas (EFLAGS), y un puntero de instruccin (EIP).

Ingeniera Electrnica

17

Sistemas Digitales II Figura 1-5: Ejecucin del Programa Bsico registros.

Registros de propsito general, los registros de propsito general se utilizan principalmente para la aritmtica y el movimiento de datos. Como se muestra en la Figura 1-6, los 16 bits inferiores del registro EAX se puede hacer referencia por el nombre de AX. (Hayes, 1996) Figura 1-6: Registros de propsito general.

Las porciones de algunos registros pueden ser abordados como valores de 8-bits. Por ejemplo, el registro AX, tiene un AH superior de 8-bits llamado medio y una media de 8-bits llamado al menor. La misma relacin existe superposicin de EAX, EBX, ECX, EDX y registros:

Ingeniera Electrnica

18

Sistemas Digitales II

El resto de registros de propsito general slo se puede acceder utilizando los nombres de 32-bit o 16-bit, como se muestra en la siguiente tabla :

Especializados Usos Algunos registros de propsito general tienen usos especializados: EAX se utiliza automticamente por la multiplicacin y la divisin de las instrucciones. A menudo se llama el prolongado registro acumulador.
y y

La CPU utiliza automticamente ECX como contador de bucle. ESP direcciones de datos en la pila (una estructura de memoria del sistema). Rara vez se utiliza para la aritmtica ordinaria o de transferencia de datos. A menudo se llama el puntero de pila extendida registro. ESI y EDI son utilizados por las instrucciones de alta velocidad de transferencia de la memoria. A veces se llama el ndice fuente extendida y registros extendidos destino ndice. EBP es usado por lenguajes de alto nivel para hacer referencia a parmetros de la funcin y las variables locales en la pila. No se debe utilizar para la aritmtica ordinaria o de transferencia de datos, excepto en un nivel avanzado de la programacin. A menudo se llama el puntero de marco ampliado de registro.

Ingeniera Electrnica

19

Sistemas Digitales II En los registros de segmento real direccin de modo de 16bits, los registros de segmento indican las direcciones de base de las reas de memoria pre asignada nombre segmentos. En modo protegido, los registros de segmento tienen punteros a las tablas de descriptor de segmento. Algunos segmentos tienen instrucciones del programa (cdigo), otros sostienen variables (datos), y otro segmento llamado el segmento de pila contiene las variables locales de funciones y parmetros de la funcin. (Ledesma, 2001) El puntero de instruccin EIP, o puntero de instruccin , el registro contiene la direccin de la siguiente instruccin a ejecutar. Ciertas instrucciones mquina manipular EIP, haciendo que el programa para pasar a una nueva ubicacin. El Registro EFLAGS (o simplemente Banderas) registrar consta de bits binarios individuales que controlan el funcionamiento de la CPU o reflejar el resultado de una operacin de la CPU. Algunas instrucciones de la prueba y manipular indicadores individuales del procesador. (Ledesma, 2001) Indicadores de control de indicadores de control de control de operaciones de la CPU. Por ejemplo, puede hacer que la CPU de descanso despus de cada instruccin se ejecuta, la interrupcin de desbordamiento aritmtico cuando se detecta, entrar en el modo virtual 8086, y entrar en modo protegido. Los programas se pueden establecer los bits individuales en el EFLAGS registro para controlar el funcionamiento de la CPU. (Brey, 1994)

- Ejemplos de ello son la Direccin y las banderas de interrupcin. Banderas estado de los indicadores de estado reflejan los resultados de las operaciones lgicas y aritmticas realizadas por la CPU. Ellos son el desbordamiento, signo, Llevar a cero, auxiliar, paridad, y llevar las banderas. Sus siglas se presentan inmediatamente despus de sus nombres: La bandera de acarreo (CF) se establece cuando el resultado de una operacin aritmtica sin signo es demasiado grande para caber en el destino. Ingeniera Electrnica 20

Sistemas Digitales II
y

La bandera de desbordamiento (OF) se establece cuando el resultado de una operacin aritmtica con signo es demasiado grande o demasiado pequeo como para caber en el destino. La bandera de signo (SF) se establece cuando el resultado de una operacin aritmtica o lgica genera un resultado negativo. La bandera de cero (ZF) se establece cuando el resultado de una operacin aritmtica o lgica genera un resultado de cero. La bandera de acarreo auxiliar (AC) se establece cuando una operacin aritmtica causa un acarreo del bit 3 al bit 4 en un operando de 8 bits. La bandera de paridad (PF) se establece si el byte menos significativo en el resultado contiene un nmero par de bits 1. De lo contrario, PF es clara. En general, se utiliza para la comprobacin de errores cuando hay una posibilidad de que los datos pueden ser alterados o daados. (Stallings, 1998)

- MMX Registros Tecnologa MMX se aadi en el procesador Pentium de Intel para mejorar el rendimiento de multimedia y aplicaciones avanzadas de comunicaciones. Las ocho de 64 bits MMX registros apoyo instrucciones especiales llamadas SIMD (Singleinstruccin, mltiples datos). Como su nombre indica, las instrucciones MMX funcionar en paralelo en los valores de los datos contenidos en los registros MMX. A pesar de que parecen ser registros separados, los nombres de MMX registrarse en los alias de hecho a los mismos registros utilizados por la unidad de coma flotante. (Tokheim, 2006)

- XMM Registros La arquitectura x86 tambin contiene ocho de 128-bit registros llamados registros XMM. Son utilizadas por extensiones streaming SIMD para el conjunto de instrucciones. (Tokheim, 2006)

Ingeniera Electrnica

21

Sistemas Digitales II
2.2.3. Unidad de coma flotante.

La unidad de coma flotante (FPU) de alta velocidad realiza aritmtica de punto flotante. Hubo un tiempo en un chip coprocesador separado se requiere para ello. A partir de la Intel486, la FPU se ha integrado en el chip del procesador principal. Hay ocho en punto flotante registros de datos en la FPU, llamado ST (0), ST (1), ST (2), ST (3), ST (4), ST (5), ST (6), y ST (7). Los registros restantes de control y el puntero se muestran en la figura 1-7. (Ledesma, 2001)
2.2.4. Descripcin de los microprocesadores Intel

Vamos a hacer un pequeo viaje al pasado, a partir de cuando el IBM -PC fue lanzado por primera vez, cuando el equipo tena 64Kbytes de RAM y sin disco duro. Figura 1-7: Registros de coma flotante de la unidad.

Cuando se habla de la evolucin del procesador, las referencias al tamao del bus de datos son importantes porque afectan el rendimiento del sistema. Cuando un procesador utiliza un bus de 8 bits de datos para transferir un nmero entero de 32 bits en la memoria, por ejemplo, el entero debe ser dividida en cuatro partes, y cuatro operaciones de transferencia de datos son necesarios para completar la operacin. Teniendo en cuenta que hay un retraso significativo (llamado latencia) que participan en cada operacin de transferencia de datos, uno de 8-bit bus de Ingeniera Electrnica 22

Sistemas Digitales II datos transfiere datos a un cuarto de la velocidad de un bus de 32 bits de datos. El Intel 8086 procesadores (1978) marc el inicio de la familia moderna arquitectura Intel. Las innovaciones principales del 8086 respecto a los procesadores anteriores eran que tena registros de 16 bits y un bus de 16 bits de datos y se utiliza un modelo de memoria segmentada que permita programas para atender hasta 1 MB de memoria RAM. Un mayor acceso a la memoria hizo posible la escritura de aplicaciones de negocio complejas. El IBM-PC (1980) contiene un procesador Intel 8088, que era idntica a la del 8086, excepto que haba un bus de 8 bits de datos que lo hizo un poco menos caro de producir. Hoy, el Intel 8088 se utiliza en microcontroladores de bajo costo. (Ledesma, 2001) Intel 80286 el procesador Intel 80286, usado por primera vez en el ordenador IBMPC/AT, establece un nuevo estndar de velocidad y potencia. Fue el primer procesador de Intel para ejecutar en modo protegido. Los 80.286 direcciones de hasta 16Mbytes de RAM con un bus de direcciones de 24 bits. (Hayes, 1996) IA-32 familia de procesadores (x86). El procesador Intel 80386 (1985) present registros de 32 bits de datos y un bus de direcciones de 32 bits y la ruta de datos externos. En este caso, podemos distinguir entre una ruta de datos interna, que es un autobs que se mueve datos dentro del procesador, y una ruta de datos externa, que es el autobs que se mueve datos desde y hacia la memoria y los dispositivos de I/O. Como tal, fue el primer miembro de la familia IA-32. IA-32 procesadores pueden direccin de memoria virtual ms grande que la memoria fsica del equipo. Cada programa se le asigna una de 4Gbytes (gigabytes) de espacio de direcciones lineales. (Brey, 1994) Intel i486 Continuando con la familia IA-32, el procesador Intel i486 (1989) aparece una micro arquitectura conjunto de instrucciones mediante tcnicas de segmentacin que permiten mltiples instrucciones a procesar al mismo tiempo. Pentium El procesador Intel Pentium (1993) aade muchas mejoras de rendimiento, incluyendo un diseo superescalar con dos tuberas de ejecucin en paralelo. Dos instrucciones puede ser decodificada y ejecutada de forma simultnea. El Pentium

Ingeniera Electrnica

23

Sistemas Digitales II usa un bus de direcciones de 32 bits y una trayectoria de 64 bits de datos internas (dentro del propio procesador), e introdujo la tecnologa MMX a la familia IA-32.

- Procesadores Intel Dentro de la familia de los procesadores que Intel ha fabricado a lo largo de su historia estn los procesadores x86, entre los cuales podemos mencionar los 286, 386, 486, 586, 686. (Tokheim, 2006)

La velocidad de los procesadores se mide en megahertz (MHz =Millones de ciclos por segundo). Este parmetro indica el nmero de ciclos de instrucciones que el procesador realiza por segundo, pero slo sirve para compararlo con procesadores del mismo tipo. (Tokheim, 2006) Parmetros significativos de un procesador son su ancho de bus, medido en bits y la frecuencia de reloj a la que trabajan, medida en hertzios, tamao de memoria cach medido en Kb (kilobytes). (Tokheim, 2006)

- X86 (Intel Core Duo) Pero la verdadera revolucin en los procesadores Intel se produce en julio de 2.006, con la salida al mercado de los Intel Core 2 Duo. (Tokheim, 2006) Esta gama ha sido desarrollada no solo por la presin ejercida por AMD, sino tambin para poder cumplir con las especificaciones exigidas por Apple para los Mac PC. Durante los aos 2.005 y 2.006, AMD haba superado nuevamente a Intel Ingeniera Electrnica 24

Sistemas Digitales II en el rendimiento de sus procesadores, tanto en los procesadores de un solo ncleo como en los de doble ncleo. La respuesta de Intel lleg en el verano de 2.006, con la presentacin de los Core 2 Duo. Se trata de unos procesadores basados en la arquitectura de los Pentium M, que tienen una arquitectura mucho ms eficiente que la de los Pentium 4. Como principales caractersticas, cuentan con un motor de ejecucin ancho, cuatro FPUs y tres unidades SSE de 128bits, as como arquitectura de 64bits EM64T, tecnologa de virtualizacin, Intel Enhanced SpeedStep Technology, Active Management Technology (iAMT2), MMX, SSE, SSE2, SSE3, SSSE3, y XD bit. Todos ellos con un consumo reducido (de 65 wattios). (Tokheim, 2006)
2.3. ADMINISTRACIN DE LA MEMORIA X86

Los procesadores x86 gestionan la memoria de acuerdo a los modos de operacin bsicos discutidos en la Seccin 2.2.1. El modo protegido es el ms robusto y poderoso, pero s restringe los programas de aplicacin de acceso directo a hardware del sistema. En tiempo real, direccin modo, slo 1MByte de memoria se pueden abordar, a partir de 00000 a hexadecimal FFF FF. El procesador slo puede ejecutar un programa a la vez, pero por un momento que puede interrumpir el programa para procesar las solicitudes (denominado interrumpe) de los perifricos. Los programas de aplicacin pueden acceder a cualquier ubicacin de memoria, incluidas las direcciones que estn vinculadas directamente al hardware del sistema. El sistema operativo MS -DOS se ejecuta en modo real, direccin, y Windows 95 y 98 se puede arrancar en este modo. En modo protegido, el procesador puede eje cutar varios programas al mismo tiempo. Se asigna a cada proceso (programa en ejecucin) un total de 4Gbyte de la memoria. Cada programa se le puede asignar su propia rea de memoria reservada, y los programas se les impiden acceder de forma accidental de cada uno de cdigo y datos. MS-Windows y Linux se ejecutan en modo protegido. (Tokheim, 2006) En el modo virtual 8086, el equipo funciona en modo protegido y crea un virtual 8086 de la mquina con su propio espacio de direcciones de 1Mbyte, que simula un Ingeniera Electrnica 25

Sistemas Digitales II ordenador de 80x86 se ejecuta en modo real de direcciones. Windows NT y 2000, por ejemplo, crear una mquina virtual 8086 cuando se abre una ventana de comandos. Puede ejecutar varios como, al mismo tiempo, y cada uno est protegido de las acciones de los dems. Algunos programas de MS-DOS que hacen referencia directa al hardware no funciona en este modo bajo Windows NT, 2000 y XP. En las secciones 2.3.1 y 2.3.2 se explicar los detalles de ambos de modo real de direccin y modo protegido. (Ledesma, 2001)
2.3.1. Modo real de direccin.

En el modo de direccin real, un procesador x86 puede acceder a 1.048.576 bytes de memoria (1 MB) con 20 bits de direcciones en el rango de 0 a FFFFF hexadecimal. Los ingenieros de Intel tuvo que resolver un problema bsico: Los registros de 16 bits en el procesador Intel 8086 no pudo contener las direcciones de 20 bits. Ellos vinieron con un esquema conocido como memoria segmentada. Toda la memoria se divide en 64 kilobytes (64KByte) unidades denominadas segmentos, que se muestra en la figura 1-8. Una analoga es un gran edificio, en el que representan los segmentos de pisos del edificio. Una persona puede viajar en el ascensor hasta un piso particular, baje, y comenzar a seguir los nmeros de habitacin para encontrar una habitacin. El desplazamiento de una habitacin se puede considerar como la distancia desde el ascensor a la habitacin. Una vez ms en la figura 1-8, cada segmento comienza en una direccin que tiene un cero en su ltimo dgito hexadecimal. Debido a que el ltimo dgito es siempre cero, se omite la hora de representar los valores del segmento. Un valor del segmento de la C000, por ejemplo, se refiere al segmento en la direccin C0000. La misma cifra que muestra una expansin del segmento en 80.000. Para llegar a un byte en este segmento, agregar un desplazamiento de 16 bits (0 a FFFF) a la ubicacin de la base del segmento. La direccin 8000:0250, por ejemplo, representa un desplazamiento de 250 dentro del segmento inicial en la direccin 80000. La direccin lineal es 80250h. (Ledesma, 2001)

Ingeniera Electrnica

26

Sistemas Digitales II

Figura 1-8: Mapa de memoria segmentada, modo real de direccin.

Clculo lineal direccin 20 bit se refiere a una direccin de una nica ubicacin en la memoria y los procesadores x86 permiten a cada lugar de bytes en una direccin independiente. El trmino para esto es byte direccional de memoria. En el modo de direccin real, la lineal (o absoluta) de direcciones es de 20 bits, que van d esde 0 a FFFFF hexadecimal. Los programas no pueden utiliza r directamente las direcciones lineales, lo que las direcciones se expresan mediante dos enteros de 16 bits. A la direccin del segmento de compensacin incluye lo siguiente: Un segmento de 16-bit de valor, situado en uno de los registros de segmento (CS, DS, ES, SS)
y

Un valor de desplazamiento de 16 bits se convierte automticamente una direccin de segmento de

La CPU

compensacin a una direccin lineal de 20 bits. Supongamos que una variable de la direccin hexadecimal segmento de compensacin es 08F1: 0 100. La CPU se Ingeniera Electrnica 27

Sistemas Digitales II multiplica el valor del segmento de 16 (10 hexadecimal) y aade el producto a la variable de desplazamiento: 08F1h10h = 08F10h Adjusted Segment value: Add the offset: Linear address: (adjusted segment value) 08F10 0100 09010

Un programa tpico tiene tres segmentos: el cdigo, datos y pila. Tres registros de segmento, CS, DS y SS, contienen puntos de los segmentos de base: CS contiene la direccin de cdigo de 16 bits del segmento DS contiene la direccin de 16 bits de datos del segmento SS contiene la direccin de la pila de 16 bits del segmento ES, FS, y GS puede apuntar a los segmentos de datos alternativos, es decir, segmentos que complementan el segmento de datos por defecto .
2.3.2. Modo protegido

y y y y

El modo protegido es el ms poderoso "nativo" modo del procesador. Cuando se ejecuta en modo protegido, el espacio de direccione s de un programa lineal es de 4GBytes, el uso de direcciones de 0 a FFFFFFFF hexadecimal. En el contexto de la Assembler de Microsoft, el modelo de segmentacin plano es apropiado para la programacin en modo protegido. El modelo plano es fcil de usar, ya que requiere un solo entero de 32 bits para mantener la direccin de una instruccin o variable. La CPU realiza clculo de la direccin y la traduccin en el fondo, todos los cuales son transparentes para los programadores de aplicaciones. Registros de segmento (CS, DS, SS, ES, FS, GS) apuntan a las tablas de descriptor de segmento, que el sistema operativo utiliza para realizar un seguimiento de las ubicaciones de los segmentos de cada programa. Un tpico modo protegido programa consta de tres segmentos: el cdigo, datos y pila, con el CS, DS, y registros de segmento SS: Referencias de CS el descriptor de la tabla para el segmento de c digo. Referencias de DS el descriptor de la tabla para el segmento de datos . 28

y y

Ingeniera Electrnica

Sistemas Digitales II
y

SS referencia a la tabla de descriptores para el segmento de pila .

- Modelo de segmentacin de planos En el modelo de segmentacin de planos, todos los segmentos se asignan a la totalidad de 32 bits espacio de direcciones fsicas de la computadora. Por lo menos dos segmentos se requieren, una para el cdigo y otra para datos. Cada segmento est definido por un descriptor de segmento, un entero de 64 bits almacenado en una tabla conocida como la tabla de descriptores globales (GDT). La figura 1-9 muestra un descriptor de segmento cuya base los puntos del campo de direccin de la primera ubicacin disponible en la memoria (00000000). En esta figura, el lmite de segmento es 0040. (Tokheim, 2006) El campo de acceso contiene los bits que determinan la forma en que el segmento se puede utilizar. Todos los sistemas operativos modernos basados en arquitectura x86 utilizan el modelo de segmentacin de planos. (Ledesma, 2001) Figura 1-9: Modelo de segmentacin de planos

- Modelo del multi-segmento En el modelo de multi-segmento, cada tarea o un programa se le da su propia tabla de descriptores de segmento, llamada tabla de descriptor local (LDT). Cada Ingeniera Electrnica 29

Sistemas Digitales II descriptor de puntos de un segmento, que puede ser distinto de todos los segmentos utilizados por otros procesos. Cada segmento tiene su propio espacio de direcciones. En figura 1-10, cada entrada en los puntos de LDT a un segmento diferente de la memoria. Cada descriptor de segmento especifica el tamao exacto de su segmento. Por ejemplo, el comienzo del segmento en 3000 tiene un tamao de 2000 hexadecimal, que se calcula como (00.021.000 hexadecimal). El comienzo del segmento en 8000 tiene un tamao A000 hexadecimal. Figura 1-10: Modelo del multi-segmento.

- Paginacin Una caracterstica que permite a los segmentos que se divide en bloques de 4096 bytes de memoria llamadas pginas. Paginacin permite el total de la memoria utilizada por todos los programas que se ejecutan al mismo tiempo, ser mucho ms grande que la memoria fsica del ordenador. La coleccin completa de las pginas asignadas por el sistema operativo se llama memoria virtual. Los sistemas operativos han nombrado los administradores de programas de utilidad de la memoria virtual. (Tokheim, 2006) La localizacin es una importante solucin a un problema molesto que enfrentan los diseadores de software y hardware. Un programa debe ser cargado en la memoria principal antes de que pueda correr, pero la memoria es cara. Los usuarios quieren poder cargar muchos programas en la memoria y cambiar entre ellos a voluntad. Ingeniera Electrnica 30

Sistemas Digitales II

De almacenamiento en disco, por otra parte, es barata y abundante. Paginacin proporciona la ilusin de que la memoria es casi ilimitada de tamao. El acceso al disco es mucho ms lento que el acceso a la memoria principal, as que cuanto ms se basa en un programa de paginacin, ms lento que se ejecuta. (Stallings, 1998) Cuando una tarea est en ejecucin, las partes de que se pueden almacenar en el disco si no estn actualmente en uso. Partes de la tarea se paginan (prstamo) en el disco. Otras pginas activamente la ejecucin de permanecer en la memoria. Cuando el procesador comienza a ejecutar el cdigo que se ha paginado de memoria que emite un fallo de pgina , haciendo que la pgina o pginas que contienen el cdigo necesario o los datos que se cargan en la memoria. Para ver cmo funciona esto, encontrar un ordenador con una memoria un tanto limitada y ejecutar muchas aplicaciones de gran tama o al mismo tiempo. Usted debe notar un retraso al cambiar de un programa a otro, porque el sistema operativo debe transferir porciones paginado de cada programa en la memoria del disco. Un ordenador funciona ms rpido cuando ms de memoria instalada debido a archivos de gran tamao y la aplicacin de los programas se pueden mantener en su totalidad en la memoria, reduciendo la cantidad de paginacin. (Tokheim, 2006)

Ingeniera Electrnica

31

Sistemas Digitales II
3. PROGRAMACIN EN LENGUAJE ASSEMBLER. 3.1. INSTRUCCIONES.

El set de instrucciones de un microprocesador es el set de entradas binarias que producen acciones definidas durante un ciclo de instruccin. Un set de instrucciones es para el microprocesador lo mismo que una tabla de verdad es para una compuerta lgica, un registro de desplazamiento o un circuito sumador. (Tokheim, 2006) Por supuesto, las acciones que realiza un microprocesador con cada instruccin, son ms complejas que las que realizan los dispositivos y compuertas antes mencionados.
3.1.1. Instrucciones Binarias.

Una instruccin es un patrn de dgitos binarios el cual debe estar a disposicin del microprocesador en el tiempo y forma que ste lo requiera. (Tokheim, 2006)

Por ejemplo, cuando un microcontrolador PIC16C5X recibe el patrn binario de 12 bits 000010000000 en el momento adecuado, significa: CLEAR (borrar o poner a cero) EL REGISTRO W
3.1.2. Programa.

Un programa es una serie de instrucciones que causan que la computadora realice una tarea en particular. (Tokheim, 2006)

- Programa en assembler. Tenemos que traducirlo a hexadecimal o a binario. Se puede hacer instruccin a instruccin a mano o, como en nuestro caso, a travs de un programa en una PC llamado Crossassembler. ste sera un ejemplo de programacin en assembler:

Ingeniera Electrnica

32

Sistemas Digitales II org 0 startmovlw 0Eh movwf REG1 movlw 100 addwf REG1,1 end

- Desventajas del Assembly. El lenguaje assembler no resuelve todos los problemas de programacin. Uno de ellos es la tremenda diferencia entre el set de instrucciones del microprocesador y las tareas que el microprocesador debe realizar. Las instrucciones del microprocesador tienden a hacer cosas como: sumar contenidos de dos registros, desplazar el contenido de un acumulador un bit, o colocar un nuevo valor en el contador de programa (PC). (Tokheim, 2006) Por otro lado, el usuario generalmente quiere que el computador haga cosas como: chequear si un valor analgico ledo se excedi de un cierto umbral, buscar y reaccionar ante un comando particular de una consola o teletipo, o activar un rel en el momento apropiado. El programador de lenguaje assembler debe traducir estas tareas a secuencias de simples instrucciones de microprocesador. Esta traduccin suele ser dificultosa, consume tiempo de trabajo. Otro inconveniente es la no portabilidad. Cada microprocesador posee su propio set de instrucciones en el cual est reflejada su arquitectura interna. Un programa en assembler escrito para 6809, no correr en un 6502, Z80, 8080, o cualquier microprocesador de 16 o 32 bits. Ni siquiera dentro de la mis ma familia de microcontroladores de Microchip Technology (PICs) existen las mismas instrucciones. Cada modelo tiene un set de instrucciones propio que difiere en algunas instrucciones con los dems. Para solucionar este inconveniente se utiliza un lengua je de programacin de alto o medio nivel, como puede ser el lenguaje C. Ingeniera Electrnica 33

Sistemas Digitales II

3.2. CONVENCIONES EN LA ESCRITURA DEL CDIGO FUENTE.

Para hacer la tarea del programador ms grata, se usan algunas convenciones. Cada uno puede adoptar las que ms le agraden y ayuden para ser ms productivo. En general, las convenciones son cualquier accin que facilita la revisin y comprensin de un programa, especialmente el que uno mismo ha escrito cuando tiene que revisarlo algunos meses despus. Comentamos algunas convenciones que usaremos: Los ficheros de cdigo fuente llevarn la extensin *.ASM Los ficheros de listado llevarn la extensin *.LST Los ficheros de cdigo objeto llevarn la extensin *.OBJ Los ficheros de errores llevarn la extensin *.ERR Los ficheros ejecutables en formato Intel Hex llevarn la extensin *.HEX Los nemnicos escritos en mayscula hacen que el cdigo escrito sea ms visible. Comentarios explicando cada lnea de cdigo. Un prrafo de comentarios explica las rutinas o conjunto de instruccion es ya que los campos de comentarios suelen ser pequeos.
y

y y y y y y y y

El espacio entre caracteres se escribe _. RB0_ES_1 es ms fcil de leer que RB0ES1.

Recuerde que las convenciones son cualquier cosa que le haga ms fcil la lectura y comprensin de su cdigo, como por ejemplo: Una cabecera estandarizada. Colocar las rutinas en el mismo sitio, todas contiguas. Dibujar diagramas de flujo o escribir seudocdigo.

y y y

Ingeniera Electrnica

34

Sistemas Digitales II
3.3. CARACTERSTICAS DEL ASSEMBLER. 3.3.1. Campos del lenguaje assembler.

Las instrucciones estn divididas en un nmero de campos, como se muestra debajo.

El campo del cdigo de operacin es el nico que nunca puede estar vaco; ste siempre contiene una instruccin o una directiva del assembler. El campo del operando o direccin puede contener una direccin o un dato, o puede estar en blanco. (Tokheim, 2006) El campo del comentario o de etiquetas es opcional. El programador asignar una etiqueta a una lnea de instruccin o agregar un comentario segn su conveniencia: normalmente, para hacer ms fcil el uso y la lectura; por ejemplo si va a retomar el trabajo dentro de tres semanas.

- Delimitadores. Los campos van separados slo con espacios y/o tabulaciones. No agregar nunca otros caracteres (comas, puntos, etc.). No utilice espacios extra, particularmente despus de comas que separan operandos. (Ej: movlw 5,w) No use caracteres delimitadores (espacios y tabulaciones) en nombres o etiquetas. (Tokheim, 2006)

Ingeniera Electrnica

35

Sistemas Digitales II - Etiquetas. La etiqueta es el primer campo en una lnea en lengu aje assembler y puede no existir. Si una etiqueta est presente, el assembler la define como el equivalente a la direccin del 1 byte correspondiente a esa instruccin. (Tokheim, 2006) Esta etiqueta puede volver a usarse en otro lugar pero como operando de una instruccin. El assembler reemplazar sta etiqueta por el valor de cuando fue creada. Se usan frecuentemente en las instrucciones de salto.

y y

No puede existir ms de una etiqueta en el 1 campo de instruccin. No pueden usarse como nombres de etiquetas a palabras ya reservadas por el assembler.

(ORG, EQU, etc.) O nombres de instrucciones (movlw, call, nop, etc.) Ejemplo:

La instruccin goto START causa que la direccin de la instruccin con la etiqueta START (movlw) se cargue en el PC. Por lo tanto sta instruccin ser luego ejecutada. (Tokheim, 2006)

- Directivas. Algunas instrucciones del lenguaje assembler no se traducen directamente a instrucciones del lenguaje mquina. E stas instrucciones son directivas para el assembler; estas asignan al programa ciertas reas de memoria, definen smbolos, Ingeniera Electrnica 36

Sistemas Digitales II designan reas de RAM para almacenamiento de datos temporales, colocan tablas o datos constantes en memoria y permiten referencias a otros programas. Las directivas se utilizan como comandos escritos en el cdigo fuente para realizar un control directo o ahorrar tiempo a la hora de ensamblar. El resultado de incorporar directivas se puede ver en el fichero *.LST, despus de ensamblar el programa. (Stallings, 1998) Para usar stas directivas o pseudooperandos, el programador las coloca en el campo del cdigo de operacin , y, si lo requiere la directiva, una direccin o dato en el campo de direccin. (Tokheim, 2006) Las directivas ms comunes son:

- Operandos y direcciones. Los ensambladores permiten elegir con libertad el tipo de elemento a colocar en el campo de operando o direccin. (Tokheim, 2006) Nmeros decimales:

La mayora de los ensambladores asumen todos los nmeros como decimales a no ser que se marquen de otra manera. (Brey, 1994) Por ejemplo: movlw 100 Significa: mover el nmero literal 100 (en decimal) al registro de trabajo W. Ingeniera Electrnica 37

Sistemas Digitales II
y

Otros sistemas de numeracin:

Los ensambladores tambin aceptan nmeros Hexadecimales, octales o binarios. Esta es la forma de representarlos:

- Ensamblado condicional. Algunos ensambladores les permiten incluir o excluir partes de programa, dependiendo de condiciones que existan en el tiempo de compilacin. La forma tpica es:

Si la condicin es verdadera en el tiempo de compilacin, las instrucciones que estn entre IF y ENDIF se incluirn en el programa. Los usos tpicos son: Para incluir o excluir variables extras. Para incluir cdigo de diagnstico en condiciones de testeo (DEBUG). Para permitir datos de distintos tamaos.

y y y

- Inclusin de Cdigo.

Ingeniera Electrnica

38

Sistemas Digitales II Algunos ensambladores permiten incluir cdigo fuente (partes de programas) desde otros archivos. Por ejemplo: INCLUDE DISPLAY.ASM Le dice al compilador que incluya el cdigo que se encuentra en el archivo DISPLAY.ASM como si fuese parte del propio programa. Esto se utiliza para reutilizar cdigos realizados con anterioridad. En el ejemplo del siguiente punto lo vemos ms claro. (Tokheim, 2006) - Macros. A veces ocurren secuencias de instrucciones particulares en los programas que son repetitivas. Estas secuencias de instrucciones se pueden eliminar utilizando macros. Las macros permiten asignarle un nombre a una secuencia de instrucciones. Luego se utiliza el nombre de la macro en el programa como si se usase la secuencia de instrucciones anterior. (Tokheim, 2006) Las macros no son lo mismo que las subrutinas. El cdigo de las subrutinas aparece una sola vez en un programa y la ejecucin del programa salta a la subrutina. En cambio, el ensamblador reemplaza cada ocurrencia del nombre de la macro con la secuencia especificada de instrucciones. Por consiguiente la ejecucin del programa no salta a la macro como una subrutina. Veamos un ejemplo utilizando los conceptos vistos hasta ahora:

Archivo MULX10.ASM:

Ingeniera Electrnica

39

Sistemas Digitales II

Archivo EJEMPLO1.ASM :

Si ensamblamos el EJEMPLO1.ASM notaremos que el listado final queda de la siguiente forma:

Ingeniera Electrnica

40

Sistemas Digitales II
CONCLUSIONES

El diseo de microprocesadores se estudia en las universidades de ingeniera con miras a mejorar los diseos existentes. Hoy en da se prefiere ensear microprocesadores y arquitectura de computadoras desde el punto de vista econmico o cuantitativo, desde el punto de rendimiento-costo. A mi parecer, no deja de ser importante apre nder las bases principales del diseo de microprocesadores ya que ello llevar a una mejor comprensin de los lenguajes de programacin, segmentacin, computadoras de procesadores paralelos, microcontroladores, etc. Adems, poder disear un microprocesador sencillo como el que se desarrolla en este documento, nos conduce a conocer y comprender uno de los secretos de la electrnica ms hermosos y enigmticos. Cmo se procesa la informacin? Cmo es posible que una computadora me pueda desplegar imgenes, videos, texto, etc.? Todas estas preguntas son el enigma de las computadoras y los estudiantes de una ingeniera relacionada con la computacin deben de adentrarse, al menos de manera superficial, con las respuestas.
BIBLIOGRAFA.

Brey. (1994). Los microprocesadores Intel. Arquitectura, programacin e interfaces. Prentice Hall. Colombia. Hayes, J. (1996). Diseo de sistemas digitales y microprocesadores. Ed. McGrawHill. Mxico. Hayes, j. (1998). Arquitectura de Microprocesadores. Tercera edicin. Editorial McGraw Hill. Espaa. Ledesma, C. (2001). Introduccin a la Realidad Virtual Ingeniera Neurosensorial. Departamento de Ingeniera Electrnica. Espaa. Stallings, W. (1998). Organizacin y arquitectura de computadoras. Ed itorial Prentice Hall. Mxico DF. Tokheim, R. (2006). Fundamentos de los microprocesadores. Editorial McGraw Hill. Mxico - DF http://www.intel.co.nz/espanol/ http://members.tripod.com/~alpertron/ 41

y y

Ingeniera Electrnica

Vous aimerez peut-être aussi