of 39 /39
Organización de computadoras II FAMILIA INTEL Historia del 8086/8088 En junio de 1978 Intel lanzó al mercado el primer microprocesador de 16 bits: el 8086. En junio de 1979 apareció el 8088 (internamente igual que el 8086 pero con bus de datos de 8 bits) y en 1980 los coprocesadores 8087 (matemático) y 8089 (de entrada y salida). El primer fabricante que desarrolló software y hardware para estos chips fue la propia Intel. Reconociendo la necesidad de dar soporte a estos circuitos integrados, la empresa invirtió gran cantidad de dinero en un gran y moderno edificio en Santa Clara, California, dedicado al diseño, fabricación y venta de sus sistemas de desarrollo que, como se explicó anteriormente, son computadoras autosuficientes con el hardware y software necesario para desarrollar software de microprocesadores. Los sistemas de desarrollo son factores clave para asegurar las ventas de una empresa fabricantes de chips. La inmensa mayoría de ventas son a otras empresas, las cuales usan estos chips en aparatos electrónicos, diseñados, fabricados y comercializados por ellas mismas. A estas empresas se las llama "fabricantes de equipo original", o en inglés, OEM (Original Equipment Manufacturer). El disminuir el tiempo de desarrollo de hardware y software para las OEM es esencial, ya que el mercado de estos productos es muy competitivo. Necesitan soporte pues los meses que les puede llevar el desarrollo de las herramientas apropiadas les puede significar pérdidas por millones de dólares. Además quieren ser los primeros fabricantes en el mercado, con lo cual pueden asegurarse las ventas en dos áreas importantes: a corto plazo, ya que al principio la demanda es mucho mayor que la oferta, y a largo plazo, ya que el primer producto marca a menudo los estándares. De esta manera la empresa Intel había desarrollado una serie completa de software que se ejecutaba en una Familia Intel y Motorola Página 1

Investigacion de Intel vs Motorola

Embed Size (px)

Text of Investigacion de Intel vs Motorola

Organizacin de computadoras II FAMILIA INTEL

Historia del 8086/8088

En junio de 1978 Intel lanz al mercado el primer microprocesador de 16 bits: el 8086. En junio de 1979 apareci el 8088 (internamente igual que el 8086 pero con bus de datos de 8 bits) y en 1980 los coprocesadores 8087 (matemtico) y 8089 (de entrada y salida). El primer fabricante que desarroll software y hardware para estos chips fue la propia Intel. Reconociendo la necesidad de dar soporte a estos circuitos integrados, la empresa invirti gran cantidad de dinero en un gran y moderno edificio en Santa Clara, California, dedicado al diseo, fabricacin y venta de sus sistemas de desarrollo que, como se explic anteriormente, son computadoras autosuficientes con el hardware y software necesario para desarrollar soft ware de microprocesadores. Los sistemas de desarrollo son factores clave para asegurar las ventas de una empresa fabricantes de chips. La inmensa mayora de ventas son a otras empresas, las cuales usan estos chips en aparatos electrnicos, diseados, fabricados y comercializados por ellas mismas. A estas empresas se las llama "fabricantes de equipo original", o en ingls, OEM (Original Equipment Manufacturer). El disminuir el tiempo de desarrollo de hardware y software para las OEM es esencial, ya que el mercado de estos productos es muy competitivo. Necesitan soporte pues los meses que les puede llevar el desarrollo de las herramientas apropiadas les puede significar prdidas por millones de dlares. Adems quieren ser los primeros fabricantes en el mercado, con lo cual pueden asegurarse las ventas en dos reas importantes: a corto plazo, ya que al principio la demanda es mucho mayor que la oferta, y a largo plazo, ya que el primer producto marca a menudo los estndares. De esta manera la empresa Intel haba desarrollado una serie completa de software que se ejecutaba en una microcomputadora basada en el 8085 llamada "Intellec Microcomputer Development System". Los programas incluan ensambladores cruzados (stos son programas que se ejecutan en un microprocesador y generan cdigo de mquina que se ejecuta en otro), compiladores de PL/M, Fortran y Pascal y varios programas de ayuda. Adems haba un programa traductor llamado CON V86 que converta cdigo fuente 8080/8085 a cdigo fuente 8086/8088. Si se observan de cerca ambos conjuntos de instrucciones, queda claro que la transformacin es sencilla si los registros se traducen as: A -> AL, B -> CH, C -> CL, D -> DH, E -> DL, H -> BH y L -> BL. Puede parecer complicado traducir LDAX B (por ejemplo) ya que el 8088 no puede utilizar el registro CX para direccionamiento indirecto, sin embargo, se puede hacer con la siguiente secuencia: MOV SI, CX; MOV AL, [SI]. Esto aprovecha el hecho que no se utiliza el registro SI. Por supuesto el programa resultante es ms largo (en cantidad de bytes) y a veces ms lento de correr que en su antecesor 8085. Este programa de conversin slo serva para no tener que volver a escribir los programas en una primera etapa. Luego debera reescribirse el cdigo fuente en assembler para poder obtener lasFamilia Intel y Motorola Pgina 1

Organizacin de computadoras II

ventajas de velocidad ofrecidas por el 8088. Luego deba correr el programa en la iSBC 86/12 Single Board Computer basado en el 8086. Debido al engorro que resultaba tener dos plaquetas diferentes, la empresa Godbout Electronics (tambin de California) desarroll una placa donde estaban el 8085 y el 8088, donde se utilizaba un ensamblador cruzado provisto por la compaa Microsoft. Bajo control de software, podan conmutarse los microprocesadores. El sistema operativo utilizado era el CP/M ( de Digital Research). El desarrollo ms notable para la familia 8086/8088 fue la eleccin de la CPU 8088 por parte de IBM (International Business Machines) cuando en 1981 entr en el campo de las computadoras personales. Esta computadora se desarroll bajo un proyecto con el nombre "Acorn" (Proyecto "Bellota") pero se vendi bajo un nombre menos imaginativo, pero ms correcto: "Computadora Personal IBM", con un precio inicial entre 1260 dlares y 3830 dlares segn la configuracin (con 48KB de memoria RAM y una unidad de discos flexibles con capacidad de 160KB costaba 2235 dlares). Esta computadora entr en competencia directa con las ofrecidas por Apple (basado en el 6502) y por Radio Shack (basado en el Z -80).Estructura de memoria de segmentacin: Como se ha mencionado anteriormente, el 8086/8088 usa un esquema ingenioso llamado segmentacin, para acceder correctamente a un megabyte completo de memoria, con referencias de direcciones de slo 16 bits.

Veamos cmo funciona. Cualquier direccin tiene dos pa rtes, cada una de las cuales es una cantidad de 16 bits. Una parte es la direccin de segmento y la otra es el offset. A su vez el offset se compone de varias partes: un desplazamiento (un nmero fijo), una base (almacenada en el registro base) y un ndice (almacenado en el registro ndice). La direccin de segmento se almacena en uno de los cuatro registros de segmento (CS, DS, ES, SS). El procesador usa estas dos cantidades de 16 bits para calcular la direccin real de 20 bits, segn la siguiente frmula: Direccin real = 16 * (direccin del segmento) + offset Tal como veamos antes, dado que 16 en decimal es 10 en hexadecimal, multiplicar por ese valor es lo mismo que correr el nmero hexadecimal a la izquierda una posicin. Hay dos registros de segmento que tienen usos especiales: el microprocesador utiliza el registro CS (con el offset almacenado en el puntero de instruccin IP) cada vez que se debe acceder a un byte de instruccin de programa, mientras que las instrucciones que utilizan la pila (llamado s a procedimientos, retornos, interrupciones y las instrucciones PUSH y POP) siempre utilizan el registro de segmento SS (con el offset almacenado en el registro puntero de pila SP). De ah los nombres que toman: CS es el segmento de cdigo mientras que SS es el registro segmento de pila. Para acceder a datos en la memoria se puede utilizar cualquiera de los cuatro registros de segmento, pero uno de ellos provoca que la instruccin ocupe unFamilia Intel y Motorola Pgina 2

Organizacin de computadoras II

byte menos de memoria: es el llamado segmento por defecto, por lo q ue en lo posible hay que tratar de usar dicho segmento para direccionar datos. Este segmento es el DS (registro de segmento de datos) para todos los casos excepto cuando se utiliza el registro base BP. En este caso el segmento por defecto es SS. Si se utiliza otro registro, el ensamblador genera un byte de prefijo correspondiente al segmento antes de la instruccin: CS -> 2Eh, DS -> 3Eh, ES -> 26h y SS -> 36h. El uso de estos diferentes segmentos significa que hay reas de trabajo separadas para el programa , pila y los datos. Cada rea tiene un tamao mximo de 64 KBytes. Dado que hay cuatro registros de segmento, uno de programa (CS), uno de pila (SS) y dos de datos (segmento de datos DS y segmento extra ES) el rea de trabajo puede llegar a 4 * 64 KB = 256 KB en un momento dado suponiendo que las reas no se superponen. Si el programa y los datos ocupan menos de 64 KB, lo que se hace es fijar los registros de segmento al principio del programa y luego se utilizan diferentes offsets para acceder a distintas posiciones de memoria. En caso contrario necesariamente debern cambiarse los registros de segmento en la parte del programa que lo requiera. Los registros de segmento DS, ES y SS se cargan mediante las instrucciones MOV y POP, mientras que CS se carga mediante transferencias de control (saltos, llamadas, retornos, interrupciones) intersegmento.Arquitectura de los procesadores 8088 y 8086: El 8086 es un microprocesador de 16 bits, tanto en lo que se refiere a su estructura como en sus conexiones externas, mientras que el 8088 es un procesador de 8 bits que internamente es casi idntico al 8086. La nica diferencia entre ambos es el tamao del bus de datos externo. Intel trata esta igualdad interna y desigualdad externa dividiendo cada procesador 8086 y 8088 en dos sub-procesadores. O sea, cada uno consta de una unidad de ejecucin (EU: Execution Unit) y una unidad interfaz del bus (BIU: Bus Interface Unit). La unidad de ejecucin es la encargada de realizar todas las operaciones mientras que la unidad de int erfaz del bus es la encargada de acceder a datos e instrucciones del mundo exterior. Las unidades de ejecucin son idnticas en ambos microprocesadores, pero las unidades de interfaz del bus son diferentes en varias cuestiones, como se desprende del siguie nte diagrama en bloques:

Familia Intel y Motorola

Pgina 3

Organizacin de computadoras II

La ventaja de esta divisin fue el ahorro de esfuerzo necesario para producir el 8088. Slo una mitad del 8086 (el BIU) tuvo que redisearse para producir el 8088. La explicacin del diagrama en bloques es la siguiente:Registros de uso general del 8086/8088:

Tienen 16 bits cada uno y son ocho: 1. AX = Registro acumulador, dividido en AH y AL (8 bits cada uno). Usndolo se produce (en general) una instruccin que ocupa un byte menos que si se utilizaran otros registros de uso general. Su parte ms baja, AL, tambin tiene esta propiedad. El ltimo registro mencionado esFamilia Intel y Motorola Pgina 4

Organizacin de computadoras II

2.

3.

4.

5.

6. 7. 8.

el equivalente al acumulador de los procesad ores anteriores (8080 y 8085). Adems hay instrucciones como DAA; DAS; AAA; AAS; AAM; AAD; LAHF; SAHF; CBW; IN y OUT que trabajan con AX o con uno de sus dos bytes (AH o AL). Tambin se utiliza este registro (junto con DX a veces) en multiplicaciones y divisiones. BX = Registro base, dividido en BH y BL. Es el registro base de propsito similar (se usa para direccionamiento indirecto) y es una versin ms potente del par de registros HL de los procesadores anteriores. CX = Registro contador, dividido en CH y CL. Se utiliza como contador en bucles (instruccin LOOP), en operaciones con cadenas (usando el prefijo REP) y en desplazamientos y rotaciones (usando el registro CL en los dos ltimos casos). DX = Registro de datos, dividido en DH y DL. Se utiliza junto con el registro AX en multiplicaciones y divisiones, en la instruccin CWD y en IN y OUT para direccionamiento indirecto de puertos (el registro DX indi ca el nmero de puerto de entrada/salida). SP = Puntero de pila (no se puede subdividir). Aunque es un registro de uso general, debe utilizarse slo como puntero de pila, la cual sirve para almacenar las direcciones de retorno de subrutinas y los datos temporarios (mediante las instrucciones PUSH y POP). Al introducir (push) un valor en la pila a este registro se le resta dos, mientras que al extraer (pop) un valor de la pila este a registro se le suma dos. BP = Puntero base (no se puede subdividir). Generalmente se utiliza para realizar direccionamiento indirecto dentro de la pila. SI = Puntero ndice (no se puede subdividir). Sirve como puntero fuente para las operaciones con cadenas. Tambin sirve para realizar direccionamiento indirecto. DI = Puntero destino (no se puede subdividir). Sirve como puntero destino para las operaciones con cadenas. Tambin sirve para realizar direccionamiento indirecto.

Cualquiera de estos registros puede utilizarse como fuente o destino en operaciones aritmticas y lgicas, lo que no se puede hacer con ninguno de los seis registros que se vern ms adelante. Adems de lo anterior, cada registro tiene usos especiales:Unidad aritmtica y lgica

Es la encargada de realizar las operaciones aritmticas (suma, suma con "arrastre", resta, resta con "prstamo" y comparaciones) y lgicas (AND, OR, XOR y TEST). Las operaciones pueden ser de 16 bits o de 8 bits.Indicadores ( flags)

Hay nueve indicadores de un bit en este registro de 16 bits. Los cuatro bits ms significativos estn indef inidos, mientras que hay tres bits con valoresFamilia Intel y Motorola Pgina 5

Organizacin de computadoras II

determinados: los bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno (esto tambin ocurra en los procesadores anteriores). Registro de indicadores (16 bits)Bit

15 14 13 12 11 10 9 8

7

6

5 4

3 2

1 0

Flag --

-- -- -- OF DF IF TF SF ZF 0 AF 0 PF 1 CF

CF (Carry Flag, bit 0): Si vale 1, indica que hubo "arrastre" (en caso de suma) hacia, o "prstamo" (en caso de resta) desde el bit de orden ms significativo del resultado. Este indicador es usado por instrucciones que suman o restan nmeros que ocupan varios bytes. Las instrucciones de rotacin pueden aislar un bit de la memoria o de un registro ponindolo en el CF. PF (Parity Flag, bit 2): Si vale uno, el resultado tiene paridad par, es decir, un nmero par de bits a 1. Este indicador se puede utilizar para detectar errores en transmisiones. AF (Auxiliary carry Flag, bit 4): Si vale 1, indica que hubo "arrastre" o "prstamo" del nibble (cuatro bits) menos significativo al nibble ms significativo. Este indicador se usa con las instrucciones de ajuste decimal. ZF (Zero Flag, bit 6): Si este indicador vale 1, el resultado de la operacin es cero. SF (Sign Flag, bit 7): Refleja el bit ms significativo del resultado. Como los nmeros negativos se representan en la notacin de complemento a dos, este bit representa el signo: 0 si es positivo, 1 si es negativo. TF (Trap Flag, bit 8): Si vale 1, el procesador est en modo paso a paso. En este modo, la CPU automticamente genera una interrupcin interna despus de cada instruccin, permitiendo inspeccionar los resultados del programa a medida que se ejecuta instruccin por instruccin. IF (Interrupt Flag, bit 9): Si vale 1, la CPU reconoce pedidos de interrupcin externas enmascarables (por el pin INTR). Si vale 0, no se reconocen tales interrupciones. Las interrupciones no enmascarables y las internas siempre se reconocen independientemente del valor de IF. DF (Direction Flag, bit 10): Si vale 1, las instrucciones con cadenas sufrirn "auto-decremento", esto es, se procesarn las cadenas desde las direcciones ms altas de memoria hacia las ms bajas. Si vale 0, habr "auto -incremento", lo que quiere decir que las cadenas se procesarn de "izquierda a derecha". OF (Overflow flag, bit 11): Si vale 1, hubo un desborde en una operacin aritmtica con signo, esto es, un dgito significativo se perdi debido a que tamao del resultado es mayor que el tamao del destino.Familia Intel y Motorola Pgina 6

Organizacin de computadoras II Sistema de control de la unidad de ejecucin

Es el encargado de decodificar las instrucciones que le enva la cola y enviarle las rdenes a la unidad aritmtica y lgica segn una tabla que tiene almacenada en ROM llamada CROM (Control Read Only Memory). instrucciones 8088, las instrucciones 51h; 52h y 53h son respectivamente rdenes de salvar el contenido de los registros CX, DX y BX en la pila, pero escribir directamente en este lenguaje nativo sera inhumano. En realidad se utiliza un lenguaje denominado ensamblador o macro-ensamblador ; este lenguaje ha sustituido cada instruccin-mquina por un nemnico o macroinstruccin que la hace ms fcil de recordar por el programador. Por ejemplo, las instrucciones anteriores pueden escribirse como: PUSH CX; PUSH DX y PUSH BX respectivamente (como puede ver mucho ms fciles de recordar). Aunque es de muy bajo nivel (muy cercano al lenguaje -mquina), este lenguaje dispone de algunas otras comodidades, como permitir escribir comentarios en el fuente. Posteriormente el compilador traduce nuestros nemnicos al verdadero lenguaje-mquina y el conjunto es ensamblado en un conjunto ejecutable.Cola de instrucciones

Almacena las instrucciones para ser ejecutadas. La cola se carga cuando el bus est desocupado, de esta manera se logra una mayor eficiencia del mismo. La cola del 8086 tiene 6 bytes y se carga de a dos bytes por vez (debido al tamao del bus de datos), mientras que el del 8088 tiene cuatro bytes. Esta estructura tiene rendimiento ptimo cuando no se realizan saltos, ya qu e en este caso habra que vaciar la cola (porque no se van a ejecutar las instrucciones que van despus del salto) y volverla a cargar con instrucciones que se encuentran a partir de la direccin a donde se salta. Debido a esto las instrucciones de salto son (despus de multiplicaciones y divisiones) las ms lentas de este microprocesador.Registros de la unidad de interfaz con el bus:

El programador puede acceder a cinco registros de 16 bits cada uno, siendo cuatro de ellos registros de segmento y el restante el puntero de instruccin (IP). Los registros de segmento se llaman:CS: Registro de DS: Registro de ES: Registro SS: Registro de segmento de pila.Familia Intel y Motorola

de

segmento de segmento de segmento

cdigo. datos. extra.Pgina 7

Organizacin de computadoras II

La utilizacin de estos registros se explica ms adelante, en la seccin que trata de direccionamiento a memoria .Lgica de control del bus:

El cometido de este bloque es poder unir los bloques anteriormente mencionados con el mundo exterior, es decir, la memoria y los perifricos. El 8088 tiene un bus de datos externo reducido de 8 bits. La razn para ello era prever la continuidad entre el 8086 y los antiguos procesadores de 8 bits, como el 8080 y el 8085. Teniendo el mismo tamao del bus (as como similares requerimientos de control y tiempo), el 8088, que es internamente un procesador de 16 bits, puede reemplazar a los microprocesadores ya nombrados en un sistema ya existente. El 8088 tiene muchas seales en comn con el 8085, particularmente las asociadas con la forma en que los datos y las d irecciones estn multiplexadas, aunque el 8088 no produce sus propias seales de reloj como lo hace el 8085 (necesita un chip de soporte llamado 8284, que es diferente del 8224 que necesitaba el microproce sador 8080). El 8088 y el 8085 siguen el mismo esquema de compartir los terminales correspondientes a los 8 bits ms bajos del bus de direcciones con los 8 bits del bus de datos, de manera que se ahorran 8 terminales para otras funciones del microprocesador. El 8086 comparte los 16 bits del bus de datos con los 16 ms bajos del bus de direcciones. El 8085 y el 8088 pueden, de hecho, dirigir directamente los mismos chips controladores de perifricos. Las investigaciones de hardware para sistemas basados en el 8080 o el 8085 son, en su mayora, aplicables al 8088. En todo lo recin explicado se bas el xito del 8088.Terminales ( pinout) del 8088

Este microprocesador est encapsulado en el formato DIP (Dual Inline Package) de 40 patas (veinte de cada lado). La distancia entre las patas es deFamilia Intel y Motorola Pgina 8

Organizacin de computadoras II

0,1 pulgadas (2,54 milmetros), mientras que la distancia entre pat as enfrentadas es de 0,6 pulgadas (15,32 milmetros). Ntese en el grfico el semicrculo que identifica la posicin de la pata 1. Esto sirve para no insertar el chip al revs en el circuito impreso. El 8086/8088 puede conectarse al circuito de dos formas distintas: el modo mximo y el modo mnimo. El modo queda determinado al poner un determinado terminal (llamado MN/MX) a tierra o a la tensin de alimentacin. El 8086/8088 debe estar en modo mximo si se desea trabajar en colaboracin con el Procesador de Datos Numrico 8087 y/o el Procesador de Entrada/Salida 8089 (de aqu se desprende que en la IBM PC el 8088 est en modo mximo). En este modo el 8086/8088 depende de otros chips adicionales como el Controlador de Bus 8288 para generar el conjunto complet o de seales del bus de control. El modo mnimo permite al 8086/8088 trabajar de una forma ms autnoma (para circuitos ms sencillos) en una manera casi idntica al microprocesador 8085. Los 40 pines del 8088 en modo mnimo tienen las siguientes funciones: 1. GND (Masa) 2. A14 (Bus de direcciones) 3. A13 (Bus de direcciones) 4. A12 (Bus de direcciones) 5. A11 (Bus de direcciones) 6. A10 (Bus de direcciones) 7. A9 (Bus de direcciones) 8. A8 (Bus de direcciones) 9. AD7 (Bus de direcciones y datos) 10. AD6 (Bus de direcciones y datos) 11. AD5 (Bus de direcciones y datos) 12. AD4 (Bus de direcciones y datos) 13. AD3 (Bus de direcciones y datos) 14. AD2 (Bus de direcciones y datos) 15. AD1 (Bus de direcciones y datos) 16. AD0 (Bus de direcciones y dat os) 17. NMI (Entrada de interrupcin no enmascarable) 18. INTR (Entrada de interrupcin enmascarable) 19. CLK (Entrada de reloj generada por el 8284) 20. GND (Masa) 21. RESET (Para inicializar el 8088) 22. READY (Para sincronizar perifricos y memorias lentas) 23. /TEST 24. /INTA (El 8088 indica que reconoci la interrupcin) 25. ALE (Cuando est uno indica que salen direcciones por AD, en caso contrario, es el bus de datos) 26. /DEN (Data enable: cuando vale cero debe habilitar los transceptores 8286 y 8287 (se conecta al pin de "outpu t enable"), esto sirve para que no se mezclen los datos y las direcciones).Familia Intel y Motorola Pgina 9

Organizacin de computadoras II

27. DT/R (Data transmit/receive: se conecta al pin de direccin de los chips recin indicados). 28. IO/M (Si vale 1: operaciones con ports, si vale 0: operaciones con la memoria) 29. /WR (Cuando vale cero hay una escritura) 30. HLDA (Hold Acknowledge: el 8088 reconoce el HOLD) 31. HOLD (Indica que otro integrado quiere aduearse del control de los buses, generalmente se usa para DMA o acceso directo a memoria). 32. /RD (Cuando vale cero hay una lectu ra) 33. MN/MX (Cuando esta entrada est en estado alto, el 8088 est en modo mnimo, en caso contrario est en modo mximo) 34. /SSO (Junto con IO/M y DT/R esta salida sirve para determinar estados del 8088) 35. A19/S6 (Bus de direcciones/bit de estado) 36. A18/S5 (Bus de direcciones/bit de estado) 37. A17/S4 (Bus de direcciones/bit de estado) 38. A16/S3 (Bus de direcciones/bit de estado) 39. A15 (Bus de direcciones) 40. Vcc (+5V) En modo mximo (cuando se aplica +5V al pin 33) hay algunos pines que cambian de significado: 24.QS1: Estado de la cola de instrucciones (bit 1). 25.QS0: Estado de la cola de instrucciones (bit 0). 26.S0 : Bit de estado 0. 27.S1 : Bit de estado 1. 28.S2 : Bit de estado 2. 29.- /LOCK: Cuando vale cero indica a otros controladores del bus (otros microprocesadores o un dispositivo de DMA) que no deben ganar el control del bus. Se activa ponindose a cero cuando una instruccin tiene el prefijo LOCK. 30.- RQ/GT1: Es bidireccional y tiene la misma funcin que HOLD/HLDA en modo mnimo. 31.RQ/GT0: Como RQ/GT1 pero tiene mayor prioridad. 34.- Esta salida siempre est a uno. Por ser este microprocesador mucho ms complejo que el 8085, tiene ms bits de estado que el recin mencionado. A ttulo informat ivo se detallan los bits de estado:DT/R /SSO S2 IO/M S1 S0 Significado

1 1

0 0

0 0

0 1

Acceso a cdigo (instrucciones) Lectura de memoria

Familia Intel y Motorola

Pgina 10

Organizacin de computadoras II

1 1 0 0 0 0

0 0 1 1 1 1

1 1 0 0 1 1

0 1 0 1 0 1

Escritura a memoria Bus pasivo (no hace nada) Reconocimiento de interrupcin Lectura de puerto de entrada/salida Escritura a puerto de E/S Estado de parada (Halt)

QS1 QS0 Significado

0 0 1 1

0 1 0 1

No hay operacin Primer byte del cdigo de operacin Se vaca la cola de instrucciones Siguiente byte de la instruccin

Modos de direccionamiento del 8086/8088:

Estos procesadores tienen 27 modos de direccionamiento (una cantidad bastante ms grande que los microprocesadores anteriores) o reglas para localizar un operando de una instruccin. Tres de ellos son comunes a microprocesadores anteriores: direccionamiento inmediato (el operando es un nmero que se encuentra en la misma instruccin), direccionamiento a registro (el operando es un registro del microprocesador) y direccionamiento inherente (el operando est implcito en la instruccin, por ejemplo, en la multiplicacin uno de los operandos siempre es el acumulador). El resto de los modos sirve para localizar un operando en memoria. Para facilitar la explicacin de estos modos, se pueden resumir de la siguiente manera: Deben sumarse cuatro cantidades: 1) direccin de segmento , 2) direccin base , 3) una cantidad ndice y 4) un desplazamiento . La direccin de segmento se almacena en el registro de segmento (DS, ES, SS o CS). En la prxima seccin se indica la forma en que se hace esto. Por ahora basta con saber que el contenido del registro de segmento se multiplica por 16 antes de utilizarse para obtener la direccin real. El registro de segmentacin siempre se usa para referenciar a memoria.Familia Intel y Motorola Pgina 11

Organizacin de computadoras II

La base se almacena en el registro base (BX o BP). El ndice se almacena en el registro ndice (SI o DI). Cualquiera de estas dos cantidades, la suma de las dos o ninguna, pueden utilizarse para calcular la direccin real, pero no pueden sumarse dos bases o dos ndices. Los registros restantes (AX, CX, DX y SP) no pueden utilizarse para direccionam iento indirecto. El programador puede utilizar tanto la base como el ndice para gestionar ciertas cosas, tales como matrices de dos dimensiones, o estructuras internas a otras estructuras, esquemas que se utilizan en las prcticas comunes de programacin. La base y el ndice son variables o dinmicas, ya que estn almacenadas en registros de la CPU. Es decir, pueden modificarse fcilmente mientras se ejecuta un programa. Adems del segmento, base e ndice, se usa un desplazamiento de 16 bits, 8 bits o 0 bits (sin desplazamiento). sta es una cantidad esttica que se fija al tiempo de ensamblado (paso de cdigo fuente a cdigo de mquina) y no puede cambiarse durante la ejecucin del programa (a menos que el programa se escriba sobre s mismo, lo que constit uye una prctica no aconsejada). Todo esto genera los 24 modos de direccionamiento a memoria que se ven a continuacin: Registro indirecto : 1) [BX], 2) [DI]. 3) [SI]. - Basado: 4) desp8[BX], 5) desp8[BP], 6) desp16[BX], 7) desp16[BP]. - Indexado : 8) desp8[SI], 9) desp8[DI], 10) desp16[SI], 11) desp16[DI]. - Basado-indexado : 12) [BX+SI], 13) [BX+DI], 14) [BP+SI], 15) [BX+DI]. - Basado-indexado con desplazamiento : 16) desp8[BX+SI], 17) desp8[BX+DI], 18) desp8[BP+SI], 19) desp8[BX+DI], 20) desp16[BX+SI], 21) desp16[BX+DI], 22) desp16[BP+SI], 23) desp16[BX+DI]. - Directo: 24) [desp16]. Aqu desp8 indica desplazamiento de 8 bits y desp16 indica desplazamiento de 16 bits. Otras combinaciones no estn implementadas en la CPU y generarn error al querer ensamblar, por ejemplo, ADD CL,[DX+SI]. El ensamblador genera el tipo de desplazamiento ms apropiado (0, 8 16 bits) dependiendo del valor que tenga la constante: si vale cero se utiliza el primer caso, si vale entre -128 y 127 se utiliza el segundo, y en otro caso se utiliza el tercero. Ntese que [BP] sin desplazamiento no existe. Al ensamblar una instruccin como, por ejemplo, MOV AL,[BP], se generar un desplazamiento de 8 bits con valor cero. Esta instruccin ocupa tres bytes, mientras que MOV AL,[SI] ocupa dos, porque no necesita el desplazamiento. Estos modos de direccionamiento producen algunos inconvenientes en el 8086/8088. La CPU gasta tiempo calculando una direccin compuesta de varias cantidades. Principalmente esto se debe al hecho de que el clculo de direcciones est programado en microcdigo (dentro de la CROM del sistema de control de la unidad de ejecucin). En las siguientes versiones (a partir del 80186/80188) estos clculos estn cableados en la mquina y, por lo tanto, cuesta mucho menos tiempo el realizarlos.

Familia Intel y Motorola

Pgina 12

Organizacin de computadoras II

Veamos un ejemplo: MOV AL, ES:[BX+SI+6]. En este caso el operando de la izquierda tiene direccionamiento a registro mientras que el de la derecha indica una posicin de memoria. Poniendo valores numricos, supongamos que los valores actuales de los registros sean: ES = 3200h, BX = 200h, SI = 38h. Como se apunt ms arriba la direccin real de memoria ser: ES * 10h + BX + SI + 6 = 3200h * 10h + 200h + 38h + 6 = 3223Ehy y y

El lenguaje debe contener un amplio surtido de ellas (una para cada circunstancia distinta). Son instrucciones complejas, por tanto de ejecucin lenta. La circuitera del procesador tambin es compleja. Para un trabajo especfico se requieren pocas instrucciones (siempre hay una que resuelve el problema).

Las mquinas RISC representan el enfoque opuesto. Utilizan instrucciones muy simples, que deben ser cuidadosamente escogidas, porque cualquier operacin debe ser expresada como una secuencia de estas pocas instrucciones. Las consecuencias son justamente opuestas a las a nteriores:y y y

El lenguaje contiene un conjunto pequeo de instrucciones. Las instrucciones son muy simples, por tanto de ejecucin rpida. La circuitera es ms simple que en los procesadores CISC. Para cualquier operacin se requieren varias instrucciones e lementales.

Naturalmente cada criterio tiene sus pros y sus contra en lo que a rendimiento se refiere. En las mquinas CISC, lentitud de cada instruccin frente a poca cantidad de ellas; en las RISC, rapidez individual aunque hay que ejecutar un mayor nmero [2].3 Componentes principales.

De forma esquemtica podemos suponer que un procesador se compone de cinco elementos:y y y y y

Memoria Unidad Artimtico-Lgica ALU ("Arithmetic and Logic Unit" Unidad de Control CU ("Control Unit" ) Bus interno Conexiones con el exterior ( 3.2.1)

)

Puesto que su conocimiento es esencial para la programacin en ensamblador, nos detendremos brevemente la descripcin de la arquitectura del 8088; adems de ser el motor del primer PC, es uno de los primeros ejemplares de una prolfica saga que ha tenido una gran influencia en la informtica actual. Adems recordemos que incluso los modernos Pentium pueden e mular el funcionamiento en modo real de sus ancestros. En le figura 1 se muestran sus elementos.Familia Intel y Motorola Pgina 13

Organizacin de computadoras II 3.1 Los registros

El procesador necesita para su funcionamiento de ciertas reas de almacenamiento, que aqu se llaman registros , y que son de dimensiones mnimas [3]; sin embargo, tienen la ventaja de su rapidez. Comparados con los accesos a RAM, los de registro son como mnimo 10 veces ms veloces. El 8088 dispone de catorce registros de 16 bits que se agrupan en cuatro grupos y que reciben nombres especiales (precisamente los que se utilizan para designarlos en lenguaje ensamblador).3.1.1 Registros de uso general

Existen 4 registros denominados AX, BX, CX y DX que en realidad tienen asignados usos caractersticos, aunque pueden ser utilizados a discrecin para cualquier cosa que necesitemos.y

y y y

AX es denominado acumulador ; suele contener uno de los operandos que intervienen en las operaciones aritmticas y lgicas, y despus de esta, el resultado de la operacin. En general las instrucciones que trabajan con este registro (o su mitad inferior) tienen un microcdigo ms simple que la misma instruccin ejecutada con otro registro. BX es el registro base , suele contener la direccin de inicio de una tabla de valores. CX es denominado contador . Las instrucciones de bucle (LOOP) utilizan este registro como contador. DX es un registro de datos, multiuso. Se utiliza en operaciones de multiplicacin y divisin junto con AX. En operaciones de entrada/salida de puertos IN/OUT, su mitad inferior DL, contiene el nmero de puerto ( 2.5).

Aunque estos cuatro registros son de 16 bits (como los 10 restantes) [6], en caso necesario pueden ser utilizados en dos mitades (nibbles), " High" y " Low", de 8 bits, con lo que puede considerarse que existen 12 registros de uso general (no simultneos), los anteriores y sus mitades: AH; AL; BH; BL; CH; CL; DH y DL.

Familia Intel y Motorola

Pgina 14

Organizacin de computadoras II Registros de segmento

Se dispone de cuatro registros que sirven para contener las direcciones de otros tantos segmentos (zonas de 64 KB de memoria). Utilizndolos en conjuncin con otros registros que sealan las direcciones concretas dentro de estos segmentos (los desplazamientos ), permiten manejar la totalidad de la memoria direccionable (el bus de direcciones es de 20 bits). Ver al respecto el epgrafe "Direccionamiento segmentado" ( 5.1).y y y y

Segmento de cdigo CS ("Code segment"). Seala la direccin del segmento de cdigo del programa que se est ejecutando ( E1.3.2). Segmento de datos DS ("Data segment"). Seala la direccin del segmento de datos del programa en ejecucin ( E1.3.2). Segmento de pila SS ("Stack segment"). Seala la direccin del segmento donde est la pila de l programa ( E1.3.2). Segmento extra ES ("Extra segment"). Es un segmento auxiliar a los anteriores, se utiliza para sealar espacio extra en alguno de los segmentos o para almacenar momentneamente direcciones intermedias.

Registros de puntero

Son 5 registros destinados a contener direcciones; estas direcciones son desplazamientos dentro de los segmentos indicados por los registros de segmento (ver figura 5.1 Fig.2)y

y

y

y

El primero, denominado indistintamente puntero de instruccin IP ("Instruccin pointer") y contador de programa PC ("Program counter"), indica el desplazamiento (dentro del segmento d e cdigo CS) de la prxima instruccin a ejecutar. El puntero de pila SP ("Stack Pointer"), seala el desplazamiento del final de la pila dentro del segmento de pila SS. En caso necesario la pila puede crecer a partir de este punto, de forma que por ejemp lo, una nueva invocacin de funcin crear un nuevo registro de activacin que comenzar en este punto. El puntero base BP ("Base pointer") seala el desplazamiento (dentro del segmento de pila SS) donde se encuentra el origen de la zona ocupada por las variables dinmicas. Existen dos registros denominados "de ndice", en razn de su utilizacin muy particular; el ndice fuente SI ("Source index") y el ndice destino DI ("Destination index"). Generalmente estos dos registros se utilizan con alguno de los registros de uso general y con ciertas instrucciones especficamente pensadas para transferir datos (dentro de un rango de posiciones de memoria), desde un punto inicial de un segmento de datos, a otro.

Registro de estado

Existe un registro especial, el registro de estado (FLAGS), en el que 9 de los 18 bits actan como semforos (indicadores del estado del procesador y delFamilia Intel y Motorola Pgina 15

Organizacin de computadoras II

resultado de determinadas operaciones). Por ejemplo, si despus de una suma aritmtica hay o no desbordamiento del bit ms significativ o. Los nombres y situacin de cada uno, dentro de la palabra de 16 bits, se muestran en la figura 2. Cada bits individual puede estar "activo" (1) o "inactivo" (0), y tiene un identificador que termina en F ("Flag"). Son los siguientes:

Bit Indicador de:

Uso

CF Acarreo ("Carry Indicador de arrastre del bit de mayor orden, que Flag") puede ocurrir en las operaciones aritmticas suma y resta. PF Paridad ("Parity Si est activo Indica un nmero par de bits Flag") activos (bits cuyo contenido es 1). Esta informacin es til cuando el procesador controla transmisiones de datos. AF Acarreo auxiliar Indicador de ajuste en operaciones aritmticas con cantidades BCD ( E0.1w1). ZF Cero Flag") SF Signo Flag")

("Zero Est activo si el resultado de operacin es cero o resultado de comparacin igual. ("Sign Si est activo indica que el resultado de operacin o de comparacin son negativos [ 5]. Si est activo, el procesador genera automticamente una interrupcin despus de la ejecucin de cada instruccin, lo que permite controlar paso a paso la ejecucin del programa. Este bit debe estar normalmente inactivo (a 0).

TF Detencin ("Trap Flag")

IF

Interrupcin Este bit controla el estado del sistema de ("Interrupt Flag") interrupciones enmascarables ( 2.4). Cuando est activo (1) permite las interrupciones; el estado inactivo (0) las deshabilita. Indica la direccin de las operaciones.

DF Direccin ("Direction Flag")

OF Desbordamiento Seala desbordamiento aritmtico (Overflow Flag")y y

Invocar DEBUG desde una ventana DOS (suponemos que estamos en Windows; el "prompt" es un guin "-") introducir el comando R (pedimos que nos muestre el contenido de los registros).Pgina 16

Familia Intel y Motorola

Organizacin de computadoras IIy

Salir de Debug con Q

En mi PC la respuesta al comando tiene el siguiente aspecto: AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1779 ES=1779 SS=1779 CS=1779 IP=0100 NV UP EI PL NZ NA PO NC Los valores estn expresados en hexadecimal. La ltima secuencia de caracteres (NV UP EI PL NZ NA PO NC) muestra el contenido del registro de estado (el bit TF de detencin no se muestra), el significado de la notacin utilizada es el siguiente: Bit Indicador de: CF AcarreoPF Paridad AF Acarreo auxiliar ZF Cero SF Signo IF Indicativo si bit 1 CY ("Carry yes") PE ("Parity paridad par ZR ("Zero") Indicativo si bit 0 NC ("No Carry")

Even") PO ("Parity Odd") paridad imparNA ("No Auxiliar") NZ ("No Zero")

AC ("Auxiliar Carry")

NG ("Negative") negativo PL ("Plus") positivo EI ("Enabled Interrupt") DI ("Disabled activa desactivada DN decremento

Interrupcin

Interrupt")

DF Direccin

("Down") UP incrementoNV ("No overflow")

OF Desbordamiento OV ("Overflow")

Tambin es posible inspeccionar el contenido de un solo registro, aadiendo al comando R el nombre del registro. Por ejemplo, el comando R IP muestra el contenido del contador de programa. Los nombres que pueden utilizarse para los registros son los siguientes: AX; BX; CX; DX; SP; BP; SI; DI; DS; ES; SS; CS; IP y F (este ltimo para el registro de estado). Despus de un comando de este tipo, DEBUG responde con un "prompt" distinto del habitual " :", para indicar que debe introducir el nuevo valor que desea para el registro.El bus interno

Los diversos elementos de un microprocesador estn interconectadas de forma muy compleja (el propio micro lo s), de forma que la imagen de la figura 1 es solo una simplificacin conceptual. En realidad existen varios buses principales, cuya anchura que es dos a cuatro veces la del bus externo ( H2) de los PC's, y muchos ms secundarios. En la figura adjunta se muestra un esquema de la arquitectura interna de un procesador de la familia Pentium de Intel ( Arq. Pentium) en la que puede apreciarse su complejidad.Familia Intel y Motorola Pgina 17

Organizacin de computadoras II

en registros de la CPU. Es decir, pueden modificarse fcilmente mientras se ejecuta un programa. Adems del segmento, base e ndice, se usa un d esplazamiento de 16 bits, 8 bits o 0 bits (sin desplazamiento). sta es una cantidad esttica que se fija al tiempo de ensamblado (paso de cdigo fuente a cdigo de mquina) y no puede cambiarse durante la ejecucin del programa (a menos que el programa se escriba sobre s mismo, lo que constituye una prctica no aconsejada). Todo esto genera los 24 modos de direccionamiento a memoria que se ven a continuacin:y y y y y

y

Registro indirecto: 1) [BX], 2) [DI]. 3) [SI]. Basado: 4) desp8[BX], 5) desp8[BP], 6) desp16[BX], 7) desp16[BP]. Indexado: 8) desp8[SI], 9) desp8[DI], 10) desp16[SI], 11) desp16[DI]. Basado-indexado: 12) [BX+SI], 13) [BX+DI], 14) [BP+SI], 15) [BX+DI]. Basado-indexado con desplazamiento: 16) desp8[BX+SI], 17) desp8[BX+DI], 18) desp8[BP+SI], 19) desp8[BX+DI], 20) desp16[BX+SI], 21) desp16[BX+DI], 22) desp16[BP+SI], 23) desp16[BX+DI]. Directo: 24) [desp16].

Aqu desp8 indica desplazamiento de 8 bits y desp 16 indica desplazamiento de 16 bits. Otras combinaciones no estn implementadas en la CPU y generarn error al querer ensamblar, por ejemplo, ADD CL,[DX+SI]. El ensamblador genera el tipo de desplazamiento ms apropiado (0, 8 16 bits) dependiendo del valor que tenga la constante: si vale cero se utiliza el primer caso, si vale entre -128 y 127 se utiliza el segundo, y en otro caso se utiliza el tercero. Ntese que [BP] sin desplazamiento no existe. Al ensamblar una instruccin como, por ejemplo, MOV AL,[BP], se generar un desplazamiento de 8 bits con valor cero. Esta instruccin ocupa tres bytes, mientras que MOV AL,[SI] ocupa dos, porque no necesita el desplazamiento. Estos modos de direccionamiento producen algunos inconvenientes en el 8086/8088. La CPU gasta tiempo calculando una direccin compuesta de varias cantidades. Principalmente esto se debe al hecho de que el clculo de direcciones est programado en microcdigo (dentro de la CRO M del sistema de control de la unidad de ejecucin). En las siguientes versiones (a partir del 80186/80188) estos clculos estn cableados en la mquina y, por lo tanto, cuesta mucho menos tiempo el realizarlos. Veamos un ejemplo: MOV AL, ES:[BX+SI+6]. En este caso el operando de la izquierda tiene direccionamiento a registro mientras que el de la derecha indica una posicin de memoria. Poniendo valores numricos, supongamos que los valores actuales de los registros sean: ES = 3200h, BX = 200h, SI = 38h. Como se apunt ms arriba la direccin real de memoria ser: ES * 10h + BX + SI + 6 = 3200h * 10h + 200h + 38h + 6 = 3223Eh

Familia Intel y Motorola

Pgina 18

Organizacin de computadoras II

Estructura de memoria de segmentacin: Como se ha mencio nado anteriormente, el 8086/8088 usa un esquema ingenioso llamado segmentacin, para acceder correctamente a un megabyte completo de memoria, con referencias de direcciones de slo 16 bits. Veamos cmo funciona. Cualquier direccin tiene dos partes, cada u na de las cuales es una cantidad de 16 bits. Una parte es la direccin de segmento y la otra es el offset. A su vez el offset se compone de varias partes: un desplazamiento (un nmero fijo), una base (almacenada en el registro base) y un ndice (almacenado en el registro ndice). La direccin de segmento se almacena en uno de los cuatro registros de segmento (CS, DS, ES, SS). El procesador usa estas dos cantidades de 16 bits para calcular la direccin real de 20 bits, segn la siguiente frmula: Direccin real = 16 * (direccin del segmento) + offset Tal como veamos antes, dado que 16 en decimal es 10 en hexadecimal, multiplicar por ese valor es lo mismo que correr el nmero hexadecimal a la izquierda una posicin. Hay dos registros de segmento que tienen u sos especiales: el microprocesador utiliza el registro CS (con el offset almacenado en el puntero de instruccin IP) cada vez que se debe acceder a un byte de instruccin de programa, mientras que las instrucciones que utilizan la pila (llamados a procedimientos, retornos, interrupciones y las instrucciones PUSH y POP) siempre utilizan el registro de segmento SS (con el offset almacenado en el registro puntero de pila SP). De ah los nombres que toman: CS es el segmento de cdigo mientras que SS es el registro segmento de pila. Para acceder a datos en la memoria se puede utilizar cualquiera de los cuatro registros de segmento, pero uno de ellos provoca que la instruccin ocupe un byte menos de memoria: es el llamado segmento por defecto, por lo que en lo posible hay que tratar de usar dicho segmento para direccionar datos. Este segmento es el DS (registro de segmento de datos) para todos los casos excepto cuando se utiliza el registro base BP. En este caso el segmento por defecto es SS. Si se utiliza otro registro, el ensamblador genera un byte de prefijo correspondiente al segmento antes de la instruccin: CS -> 2Eh, DS -> 3Eh, ES -> 26h y SS -> 36h. El uso de estos diferentes segmentos significa que hay reas de trabajo separadas para el programa, pila y los datos. Cada rea tiene un tamao mximo de 64 KBytes. Dado que hay cuatro registros de segmento, uno de programa (CS), uno de pila (SS) y dos de datos (segmento de datos DS y segmento extra ES) el rea de trabajo puede llegar a 4 * 64 KB = 256 KB en un momento dado suponiendo que las reas no se superponen. Si el programa y los datos ocupan menos de 64 KB, lo que se hace es fijar los registros de segmento al principio del programa y luego se utilizan diferentes offsets para acceder a distintas posiciones de memoria. En caso contrario necesariamente debern cambiarse los registros de segmento en la parte delFamilia Intel y Motorola Pgina 19

Organizacin de computadoras II

programa que lo requiera. Los registros de segmento DS, ES y SS se cargan mediante las instrucciones MOV y POP, mientras que CS se carga mediante transferencias de control (saltos, llamadas, retornos, interrupciones) intersegmento. FAMILIA MOTOROLA

El Motorola 68000 (MC68000 ), que debe su nombre al nmero de transistores de los que se compone, es un microprocesador desarrollado por Motorola (actualmente producido por Freescale) y utilizado, entre otros, en los Commodore Amiga, los Atari ST, los primeros Macintosh y las primeras PCB de videojuegos de recreativas de Capcom. El MC68000 fue lanzado al mercado en 1980 y es el primero de una familia de microprocesadores que est formada por el Motorola 68010, Motorola 68020, Motorola 68030, Motorola 68040 y el Motorola 68060. Esta familia de procesadores a menudo es designada por el trmino genrico 680x0, m68k, 68k o familia 68000. Motorola desarroll tambin a un sucesor de los 680x0: el Coldfire. Los microprocesadores de la familia 68000 son de tipo CISC.

MOTOROLA 68000

Como ya se dijo el MC68000 es un microprocesador de 16/32 bits fabricado por Motorola que sirve para realizar programas en assembler. Algunas caractersticas del MC68000 son: Su alimentacin nica es de +5V, la frecuencia de funcionamiento es de 4 -25MHz tambin soporta 5 tipos de datos: Bits (1), BCD (4), BYTE (8), WORD (16) y LONG (32 bits), tiene 56 diferentes tipos de instrucciones y 14 modos de direccionamiento, entre otras.ARQUITECTURA Y PROGRAMACIN DEL MC68000

Consta de 16 Bus datos (D0 D1 D2...D15) Consta de 24 Bus direcciones: A1...A23, donde A0 es interno y apunta a los 2 bytes en memoria, A0 a A23 son direcciones de 000000H a FFFFFFH Tiene 8 registros de datos de 32 bits Tiene 8 registros de direcciones de 32 bits desde la A0 hasta A7 (A7 puntero de pila SP) Gran ortogonalidad ya que todas las instrucciones tienen los mismos modos de direccionamiento - El tamao del operando se especifica, explcitamente,Familia Intel y Motorola Pgina 20

Organizacin de computadoras II

en la instruccin: MNEMNIICO.N (donde N es B para byte, W para Word y L para long Word) - Otras instrucciones soportan tamaos predefinidos y no requieren el uso del formato anterior. El MC68000 puede ejecutar sus instrucciones en dos modos diferentes estos son: el modo usuario y el modo supervisor.y

y

El MODO USUARIO, conforma un entorno de programacin para la ejecucin de los programas de aplicacin. En este modo no se pueden ejecutar ciertas instrucciones y no se puede acceder a parte del registro de Estado. El MODO SUPERVISOR permite utilizar el juego de instrucciones completo y acceder a todo el registro de Estado, tanto en lectura como en escritura. Se establece as unos "privilegios" de utilidad en sistemas operativos y software de base de los sistemas.

El 68000 est basado en dos bancos de 8 registros de 32 bits. Un banco es de datos (Dn) y el otro de punteros (An). Adems contiene un contador de programa de 32 bits y un registro de estado de 16 bits, Siendo su parte alta el "System Byte" y la parte baja el " User Byte". Los registros de datos (D0 a D7) se pueden usar como registros de 32 bits (.l), 16 bits (.w) y 8 bits (.b). Cualquiera de ellos puede usarse como acumulador, ndice o puntero. Realizado en tecnologa HMOS y posee 64 pines sin multiplexacin de seales. Los registros de direcciones (punteros) son muy parecidos a los de datos, pero no pueden usarse como bytes y las operaciones con ellos no afectan al acarreo para poder efectuar clculos con direcciones entre clculos con datos. El registro A7 es el puntero de la pila ( Stack Pointer) y est duplicado, habiendo un stack para el modo usuario y otro para el modo supervisor. Contiene dos ALUs diferentes, para operar con datos y direcciones independiente y simultneamente.

Modelo de memoria

Se organiza mediante el mapa de memoria fsica y el mapa de memoria funcional

Modelo de registrosFamilia Intel y Motorola Pgina 21

Organizacin de computadoras II

Todos son de 32 bits, y son los siguientes:y y

y y

8 registros de datos (D0/D7). 8 registros de direcciones (A0/A7): el registro A7 (SP) est desdoblado en dos registros independientes (puntero de pila de supervisor o S SP y el puntero de pila de usuario o USP). 1 contador de programa o PC. 1 registro de estado o SR: est dividido en dos bytes: el byte de usuario (CCR) y el byte de supervisor (es un recurso privilegiado, pues slo se puede leer y escribir en modo supervisor; en modo usuario tan slo se puede leer. En caso de ser modificado en el lti mo caso, el microprocesador salta a una ISR de violacin de privilegio). o El byte de supervisor lo constituyen 8 bits, de los cuales 3 son la mscara de interrupciones, el bit S o de supervisor (indica si est en modo supervisor o modo usuario) y el bit T o modo de traza.

Registros de Datos: Cada registro se puede considera como una palabra larga de 32 bits (bit de signo = bit 31), dos palabras de 16 bits (palabras alta y baja), en este modo slo se accede a la palabra baja (Bit de signo = bit 15) y la escritura del tamao de la palabra, no altera la palabra alta, y el modo cuatro bytes, en este modo byte, se accede al byte bajo de la palabra baja, dejando intactos los restantes bits (Bit de signo = bit 7).

Registros de Direcciones (A0 -A6): Este registro contienen las direcciones de memoria que usan los modos de direccionamiento. La direccin del operando resultante del

modo de direccionamiento debe ser par para palabra y palabra larga, y par o impar, para byte. Aqu solo admiten el modo palabra o el de palabra larga para lectura/escritura, sin embargo, una escritura en modo palabra modificara los 32 bits del registro (extensin de signo). Tambin se debe indicar que las operaciones con estos registros no modifican los bits del CCR.

Familia Intel y Motorola

Pgina 22

Organizacin de computadoras II

Registro de Direccin A7: Este registro es el puntero de pila (Stack Point o SP), que fsicamente est desdoblado en dos registros: USP y SSP accesibles segn el modo de funcionamiento (Usuario o Supervisor).

El SP se decrementa cuando se introducen datos en la pila y se incrementa cuando estos se extraen y siempre apunta al ltim o dato almacenado.Contador de Programa (PC): Este contiene la direccin de memoria donde se encuentra la siguiente instruccin a ejecutar. Slo se utilizan los 24 bits menos significativos. Registro de estado (SR): Este registro se divide en dos mitades de 8 bits: Byte del Sistema (acceso slo en modo supervisor) y Byte de Usuario o CCR (que contiene los flags). Modos de direccionamiento: 1. Inmediato: En este modo el dato se encuentra en una o varias de las palabras de extensin que siguen a la palabra de operacin de la propia instruccin. Este modo se utiliza para inicializar los contenidos de los registros (datos o direcciones) a un valor determinado o para incrementar su valor. Sintaxis: MNEMNICO.N #DATO, OPERANDO_DESTINO 2. Relativo al registro: que pueden ser mediante:y

Registro de Datos Directo: Donde el operando est en el registro de datos especificado por la direccin efectiva.

Sintaxis: MNEMNICO.N Dn, OPERANDO_DESTINO Ejemplo:

Familia Intel y Motorola

Pgina 23

Organizacin de computadoras IIy

Registro Direcciones Directo: Donde el operando est en el registro de direcciones especificado por la instruccin.

Sintaxis: MNEMNICO.N An, OPERANDO_DESTINO Ejemplo:

y

Registro Direcciones Indirecto: En este registro el operando est en la posicin de memoria indicada por el registro de direcciones especificado en la instruccin.

Sintaxis: MNEMNICO.N (An),OPERANDO_DESTINOy

Registro Direcciones Indirecto con Postincremento: Aqu el operando est en la posicin de memoria indicada por el registro de direcciones

especificado en la instruccin. Despus de acceder, el registro de direcciones se incrementa en 1, 2 o 4 unidades dependiendo si el tamao del operando es byte, palabra o palabra larga respectivamente. Sintaxis: MNEMNICO.N (An)+, OPERANDO_DESTINOy

Registro Direcciones Indirecto con Predecremento: Antes de acceder, el registro de direcciones se decremen ta en 1, 2 o 4 unidades dependiendo del tamao del operando. Despus, se accede al dato en la direccin resultante.

Sintaxis: MNEMNICO.N -(An), OPERANDO_DESTINOy

Registro Direcciones Indirecto con desplazamiento: En este modo se requiere de una palabra de extensin detrs del cdigo de operacin. La direccin del dato es la suma de la direccin contenida en el registro An y la constante de 16 bits, extendida en signo, contenida en la palabra de extensin.

Sintaxis: MNEMNICO.N d16(An),OPERANDO_DESTINOy

Registro Direcciones Indirecto con ndice: En este modo se requiere de una palabra de extensin con el siguiente formato:Pgina 24

Familia Intel y Motorola

Organizacin de computadoras II

Aqu la direccin del operando se obtiene al sumar el conte nido del registro de direcciones con la constante de 8 bits que es dada en la palabra de extensin y el contenido del registro ndice: Sintaxis: MNEMNICO.N d8 (An, X.t), OPERANDO_DESTINO3. Absoluto: En este modo las palabras de extensin contienen la direccin de memoria donde estn los operandos. Existen dos tipos: absoluto largo ( que dispone de dos palabras de extensin que contienen los 24 bits de la direccin de memoria del operando) y Absoluto corto(que dispone de una palabra de extensin, que se extiende en signo para construir los 24 bits de la direccin de memoria del operando).

Sintaxis Absoluto Largo: MNEMNICO.N xxxxxx,OPERANDO_DESTINO Sintaxis Absoluto Corto: MNEMNICO.N xxxx, OPERANDO_DESTINO4. Relativo: En este modo existen dos modalidades: desplazamiento y relativo indexado con desplazamiento.

relativo

con

Es similar a los modos indirectos con desplazamiento e indexado con la salvedad que el registro usado es el PC, tambin permite realizar cdigo reubicable.y

Relativo con Desplazamiento: Su funcin es que al contenido del PC, le suma el desplazamiento de 16 bits extendido en signo.

Sintaxis: MNEMNICO.N d16 (PC), OPERANDO_DESTINOy

Relativo con ndice y Desplazamiento- Relativo con ndice y Desplazamiento: Su funcin es que al contenido del PC, se le suma el desplazamiento de 8 bits extendido en signo y el contenido de un registro ndice que se extiende en signo si el tamao es W.

Sintaxis : MNEMNICO.N d8 (PC,X.t),OPERANDO_DESTINO

Familia Intel y Motorola

Pgina 25

Organizacin de computadoras II EL CONJUNTO DE INSTRUCCIONES

Como se dijo anteriormente el MC68000 tiene 56 instrucciones que, combinadas con los 14 modos de direccionamiento y los cinco formatos de datos, ofrece al programador una herramienta potente para el desarrollo de programas. Dichas instrucciones se dividen en distintos grupos los cuales son:y y y

y y y y y y y

Operaciones de movimiento de datos: MOVE, MOVEA, MOVEM, MOVEQ, EXG, LEA, PEA, SWAP, LINK y UNLNK Operaciones de aritmtica entera: ADD, ADDA, ADDI, ADDQ, ADDX,CLR, CMP, CMPA, CMPI, CMPM, DIVU, DIVS, EXT, MULU, MULS,NEG, NEGX, SUB, SUBA, SUBI, SUBW , SUBX y CMP Operaciones lgicas: AND, ANDI, EOR, EORI, OR, ORI, NOT y TST Operaciones en BCD: ABCD, NBCD y SBCD Operaciones de desplazamiento y rotacin: ASL, ASR, LSL, LSR, ROL, ROR, ROXL, ROXR y SWAP Operaciones de manipulacin de bit s: BTST, BSET, BCLR, BCHG Operaciones de control del programa: BRA, BSR, JMP, JSR, RTR, RTS y NOP. Operaciones de control del sistema: RESET, RTE, STOP, TRAP,

TRAPV, CHK.Modos de direccionamiento

Acepta los siguientes modos de direccionamiento:y y y

y

y

y

Implcito (o inherente). Inmediato. o Inmediato rpido. Absoluto: o Absoluto largo. o Absoluto corto. Directo a registro. o Directo a registro de datos. o Directo a registro de direcciones. Indirecto. o Indirecto con postincremento. o Indirecto con predecremento. o Indirecto con desplazamiento. Indirecto con ndice y desplazamiento. Relativo a PC con desplazamiento. o Relativo a PC con ndice y desplazamiento. Buses: o Bus de direcciones (A1/A23): caracterstica de ponerse en alta impedancia. Solo seales de salida. El bit A0 no sale al exter ior, sino que se desdobla en dos seales: UDS y LDS, ambas activasPgina 26

y

Familia Intel y Motorola

Organizacin de computadoras II

y

y

en baja, para la seleccin de una palabra y de un byte par o impar. o Bus de datos (D0/D15): tambin tiene la caracterstica de alta impedancia, y es bidireccional (tanto entrada como salida). De control: o Control de bus asncrono (AS', R/W', UDS', LDS' y DTACK'). o Control de perifricos (E, VPA' y VMA'): E = CLK / 10. o Control del arbitraje de bus (BR', BG' y BGACK'). o Control de interrupciones (IPL0', IPL1', IPL2' e IPL3'). o Control de espacio de direcciones (FC0, FC1 y FC2). o Control del sistema (RESET, HALT y BERR). Otros: o Reloj (CLK): con un ciclo de trabajo del 50%. o Alimentacin y masa (VCC y GND): VCC GND = 5V. Durante la operacin normal se debe prever un requerimiento instantneo de corriente de hasta 1,5A.

Este microprocesador tiene tres estados: estado normal, estado de parada y estado de excepcin. Saltar al ltimo de ellos al recibir tanto seales externas como internas. Sigue un modelo de excepciones vectorizada, mediante la cual a cada excepcin se le asocia un nmero de vector de 1 byte, fijo para cada excepcin, excepto para las interrupciones exter nas. Este nmero se multiplica por 4 y se obtiene la direccin del vector de excepcin en memoria, que ocupan 32 bits y estn en memoria de datos del supervisor, excepto para el reset, que ocupa el doble (64 bits) y est en memoria de programa de supervisor. Todas se agrupan en una tabla (llamada Tabla de Vectores de Interrupcin), y se sita en el primer kbyte de memoria.y y y

Debida a una seal de RESET, que inicializa el microprocesador. Seal de BERR, que indica un error en el bus y salta a la ISR de gestin de errores en el bus. Interrupciones: peticin de una interrupcin, a travs de los pines IPL0', IPL1', IPL2' e IPL3'. El perifrico para pedir una interrupcin, si es vectorizado, deposita el vector durante el ciclo de reconocimiento de interrupcin. Error de direccin: indica un direccionamiento invlido, como uno impar de palabras (Word). Una instruccin ilegal o no vlido. Una divisin por cero (en el nemnico de divisin DIVU DIVS). Durante la comprobacin de rangos (CHK). Detectando un desbordamiento. En la ejecucin de una instruccin privilegiada en modo usuario. Durante la ejecucin paso a paso. Excepcin incondicional.

y y y y y y y y

MOTOROLA present junto con el microprocesador una gama de perifricos orientados a crear un sistema completo:y

68881: coprocesador matemtico.Pgina 27

Familia Intel y Motorola

Organizacin de computadoras IIy y y y y

68452: controlador de buses. 68454: controlador de disco. 68681: comunicacin en serie. 68451: MMU. 68450: DMA.

La compatibilidad con los perifricos de su antecesor, el MC6800, fue mantenida, como por ejemplo con la VIA6522 (comunicacin en paralelo mediante puertos) y, adems, realiz esfuerzos para mantener la compatibilidad con dispositivos de otros fabricantes y colabor en el protocolo VME de IEEE.[

Apple utiliz los procesadores 68000 en el Lisa y despus en los primeros Macintosh (Macintosh 128, Mac 512, Mac Plus, Mac SE y Classic). Los Macintosh siguientes (serie LC) utilizaron procesadores 68020, posteriormente los Macintosh IIcx, IIci, IIfx, LCIII y SE/30 utilizaron los 68030. Por ltimo, el Quadra y ltimo LC (LC475, LC630) tuvieron procesadores 68040 (estos ltimos LC utilizaban una versin sin unidad de coma flotante denominada 68LC040). Con la llegada de la nueva generacin de Macintosh, conoc idos bajo el nombre de Power Macintosh, Apple dot a sus mquinas de procesadores PowerPC, fabricados por Motorola e IBM. En su gama Atari ST. Los siguientes modelos Atari TT030 y Atari Falcon incorporaban un 68030. Commodore utiliz los procesadores 68000 en el primer modelo de Amiga, el Amiga 1000, y ms tarde en sus sucesores Amiga 500, Amiga 2000 y Amiga 600. Tambin fue utilizado en el CDTV, la incursin de Commodore en el vdeo digital interactivo domstico. Posteriores modelos como el Amiga 3000, Amiga 1200, Amiga 4000 y CD32 utilizaron distintos procesadores de la familia, como el 68020, 68030 y 68040. El Sinclair QL utiliza la variante 68008, con un bus de 8 bits. En sus videoconsolas Mega Drive y Mega CD, como procesador principal, y en la Sega Saturn como procesador de sonido, adems de en toda una gama de placas arcade (Sega System 16, etc) En sus estaciones de trabajo, antes de pasarse a los microprocesadores MIPS. Para la videoconsola Neo Geo.

Familia Intel y Motorola

Pgina 28

Organizacin de computadoras II

Para sus estaciones de trabajo , antes de pasarse a los microprocesador es SPARC. Para sus calculadoras TI-89, TI-89 Titanium, TI-92, TI-92+ y Voyage 200. Las mquinas NeXT utilizaban procesadores 68030 y 680 40. El procesador Dragonball de la primera generacin de PDAs de Palm (y de otros dispositivos bajo PalmOS producidos por Handspring, IBM, Sony, TRGPro, Qualcomm, Symbol...) se deriva del 68000. Los PDAs de Palm ms recientes utilizan procesadores ARM. Motorola ofreci acuerdos de segunda fuente muy asequibles, pon iendo como nica condicin que la otra parte desarrollase algn dispositivo nuevo para la familia, normalmente perifricos. Muchas compaas cumplan este requisito renombrando dispositivos de sus propias familias. Esto contribuy enormemente a la amplia difusin del 68000, llegando a ser un estndar de la industria.

Familia Intel y Motorola

Pgina 29