El Intel 8085 (" ochenta y ocho y cinco ") es un microprocesador de 8 bits producido por Intel y presentado en marzo de 1976. [2] Es el último microprocesador de 8 bits desarrollado por Intel.
Es compatible a nivel binario con el más famoso Intel 8080 , con solo dos instrucciones menores oficialmente (existen 10 instrucciones más sin documentar, consulte las instrucciones sin documentar) agregadas para respaldar sus funciones de interrupción y entrada/salida en serie. Sin embargo, requiere menos circuitos de soporte, lo que permite construir sistemas de microcomputadoras más simples y menos costosos.
El "5" en el número de pieza resaltaba el hecho de que el 8085 utiliza una única fuente de alimentación de +5 voltios (V) mediante el uso de transistores de modo de agotamiento , en lugar de requerir las fuentes de alimentación de +5 V, −5 V y +12 V que necesitaba el 8080. Esta capacidad coincidía con la del competidor Z80 , una popular CPU derivada del 8080 presentada el año anterior. Estos procesadores podían utilizarse en ordenadores que ejecutasen el sistema operativo CP/M .
El 8085 se suministra en un encapsulado DIP de 40 pines . Para maximizar las funciones en los pines disponibles, el 8085 utiliza un bus de dirección/datos multiplexado (AD 0 - AD 7 ). Sin embargo, un circuito 8085 requiere un pestillo de dirección de 8 bits, por lo que Intel fabricó varios chips de soporte con un pestillo de dirección incorporado. Estos incluyen el 8755, con un pestillo de dirección, 2 KB de EPROM y 16 pines de E/S, y el 8155 con 256 bytes de RAM , 22 pines de E/S y un temporizador/contador programable de 14 bits. El bus de dirección/datos multiplexado redujo la cantidad de pistas de PCB entre el 8085 y dichos chips de memoria y E/S.
Tanto el 8080 como el 8085 fueron eclipsados por el Zilog Z80 para computadoras de escritorio, que se apoderó de la mayor parte del mercado de computadoras CP/M , así como de una parte del floreciente mercado de computadoras hogareñas a principios y mediados de los años 1980.
El 8085 tuvo una larga vida como controlador, sin duda gracias a su E/S serial integrada y a sus cinco interrupciones priorizadas, posiblemente características propias de un microcontrolador que la CPU Z80 no tenía. Una vez diseñado para productos como el controlador DECtape II y el terminal de video VT102 a fines de la década de 1970, el 8085 sirvió para la nueva producción durante toda la vida útil de esos productos. Esta era, por lo general, más larga que la vida útil de los productos de las computadoras de escritorio.
El 8085 es un diseño de von Neumann convencional basado en el Intel 8080. A diferencia del 8080, no multiplexa las señales de estado en el bus de datos, sino que el bus de datos de 8 bits se multiplexa con los ocho bits inferiores del bus de direcciones de 16 bits para limitar el número de pines a 40. Las señales de estado se proporcionan mediante pines de señal de control de bus dedicados y dos pines de identificación de estado de bus dedicados denominados S0 y S1. El pin 40 se utiliza para la fuente de alimentación (+5 V) y el pin 20 para la conexión a tierra. El pin 39 se utiliza como pin de retención.
El procesador Intel 8085 fue diseñado utilizando circuitos nMOS , con versiones "H" posteriores implementadas en el proceso nMOS mejorado de Intel conocido como HMOS II ("High-performance MOS"), que fue desarrollado originalmente para productos de RAM estática rápida. [3] A diferencia del 8080, el 8085 requiere solo una fuente de alimentación de 5 voltios, similar a sus procesadores de la competencia. El 8085 contiene aproximadamente 6.500 transistores . [4]
El 8085 incorpora las funciones del 8224 (generador de reloj) y del 8228 (controlador del sistema) en el chip, lo que aumenta el nivel de integración. Una desventaja en comparación con diseños contemporáneos similares (como el Z80) es el hecho de que los buses requieren demultiplexación; sin embargo, los pestillos de dirección en los chips de memoria Intel 8155, 8355 y 8755 permiten una interfaz directa, por lo que un 8085 junto con estos chips es casi un sistema completo.
El 8085 tiene extensiones para soportar nuevas interrupciones , con tres interrupciones vectorizadas enmascarables (RST 7.5, RST 6.5 y RST 5.5), una interrupción no enmascarable (TRAP) y una interrupción con servicio externo (INTR). Cada una de estas cinco interrupciones tiene un pin separado en el procesador, una característica que permite que los sistemas simples eviten el costo de un controlador de interrupciones separado. La interrupción RST 7.5 se activa por flanco (enclavada), mientras que RST 5.5 y 6.5 son sensibles al nivel. Todas las interrupciones excepto TRAP se habilitan mediante la instrucción EI y se deshabilitan mediante la instrucción DI. Además, las instrucciones SIM (Set Interrupt Mask) y RIM (Read Interrupt Mask), las únicas instrucciones oficiales del 8085 que no son del diseño del 8080, permiten que cada una de las tres interrupciones RST enmascarables se enmascare individualmente. Las tres se enmascaran después de un reinicio normal de la CPU. SIM y RIM también permiten leer el estado de máscara de interrupción global y los tres estados de máscara de interrupción RST independientes, leer los estados de interrupción pendiente de esas mismas tres interrupciones, restablecer el flip-flop de disparo-pestillo RST 7.5 (cancelando la interrupción pendiente sin repararla) y enviar y recibir datos en serie a través de los pines SOD y SID, respectivamente, todo bajo el control del programa e independientemente uno del otro.
SIM y RIM se ejecutan cada uno en cuatro ciclos de reloj (estados T), lo que hace posible muestrear SID y/o alternar SOD considerablemente más rápido de lo que es posible alternar o muestrear una señal a través de cualquier puerto de E/S o asignado a la memoria, por ejemplo, uno de los puertos de un 8155. (De esta manera, SID se puede comparar con el pin SO ["Set Overflow"] de la CPU 6502 contemporánea al 8085).
Al igual que el 8080, el 8085 puede alojar memorias más lentas mediante estados de espera generados externamente (pin 35, READY) y tiene disposiciones para el acceso directo a memoria (DMA) mediante señales HOLD y HLDA (pines 39 y 38). Una mejora con respecto al 8080 es que el 8085 puede controlar por sí mismo un cristal piezoeléctrico conectado directamente a él, y un generador de reloj integrado genera las señales de reloj internas de dos fases y alta amplitud a la mitad de la frecuencia del cristal (un cristal de 6,14 MHz produciría un reloj de 3,07 MHz, por ejemplo). El reloj interno está disponible en un pin de salida, para controlar dispositivos periféricos u otras CPU en sincronía de paso de bloqueo con la CPU desde la que se emite la señal. El 8085 también puede ser sincronizado por un oscilador externo (lo que hace posible utilizar el 8085 en sistemas multiprocesador sincrónicos utilizando un reloj común para todo el sistema para todas las CPU, o para sincronizar la CPU con una referencia de tiempo externa como la de una fuente de video o una referencia de tiempo de alta precisión).
El 8085 es una continuación compatible binariamente del 8080. Admite el conjunto completo de instrucciones del 8080, con exactamente el mismo comportamiento de instrucción, incluidos todos los efectos en los indicadores de la CPU (excepto la operación AND/ANI, que establece el indicador AC de forma diferente). [5] Esto significa que la gran mayoría del código objeto (cualquier imagen de programa en ROM o RAM) que se ejecuta correctamente en el 8080 puede ejecutarse directamente en el 8085 sin traducción ni modificación. (Las excepciones incluyen código crítico para el tiempo y código que es sensible a la diferencia antes mencionada en la configuración del indicador AC o diferencias en el comportamiento no documentado de la CPU). Los tiempos de instrucción del 8085 difieren ligeramente de los del 8080: algunas operaciones de 8 bits, incluidas INR, DCR y la instrucción MOV r,r' muy utilizada, son un ciclo de reloj más rápidas, pero las instrucciones que involucran operaciones de 16 bits, incluidas las operaciones de pila (que incrementan o decrementan el registro SP de 16 bits) generalmente son un ciclo más lentas. Por supuesto, es posible que el 8080 y/o el 8085 reales difieran de las especificaciones publicadas, especialmente en detalles sutiles. (No ocurre lo mismo con el Z80). Como ya se mencionó, solo se agregaron oficialmente las instrucciones SIM y RIM (consulte las instrucciones no documentadas) al 8085. [nb 1]
El procesador tiene siete registros de 8 bits a los que puede acceder el programador, denominados A, B, C, D, E, H y L, donde A también se conoce como acumulador. Los otros seis registros se pueden utilizar como registros de bytes independientes o como tres pares de registros de 16 bits, BC, DE y HL (o B, D, H, como se hace referencia a ellos en los documentos de Intel), según la instrucción en particular.
Algunas instrucciones utilizan HL como un acumulador (limitado) de 16 bits. Al igual que en el 8080, se puede acceder al contenido de la dirección de memoria a la que apunta HL como pseudoregistro M. También tiene un contador de programa de 16 bits y un puntero de pila de 16 bits a la memoria (que reemplaza la pila interna del 8008 ). Las instrucciones como PUSH PSW, POP PSW afectan a la palabra de estado del programa (acumulador y banderas). El acumulador almacena los resultados de las operaciones aritméticas y lógicas, y los bits del registro de banderas (signo, cero, acarreo auxiliar, paridad y banderas de acarreo) se activan o borran de acuerdo con los resultados de estas operaciones. La bandera de signo se activa si el resultado tiene un signo negativo (es decir, se activa si el bit 7 del acumulador está activado). La bandera de acarreo auxiliar o medio se activa si se produjo un acarreo del bit 3 al bit 4. El indicador de paridad se establece en 1 si la paridad (número de bits 1) del acumulador es par; si es impar, se pone a cero. El indicador de cero se establece si el resultado de la operación fue 0. Por último, el indicador de acarreo se establece si se produjo un acarreo desde el bit 7 del acumulador (el MSB).
Como en muchos otros procesadores de 8 bits, todas las instrucciones se codifican en un solo byte (incluidos los números de registro, pero excluyendo los datos inmediatos), para simplificar. Algunas de ellas van seguidas de uno o dos bytes de datos, que pueden ser un operando inmediato, una dirección de memoria o un número de puerto. Existe una instrucción NOP de "no operación", pero no modifica ninguno de los registros o indicadores. Al igual que los procesadores más grandes, tiene instrucciones CALL y RET para llamadas y retornos de procedimientos de varios niveles (que se pueden ejecutar condicionalmente, como saltos) e instrucciones para guardar y restaurar cualquier par de registros de 16 bits en la pila de la máquina. También hay ocho instrucciones de llamada de un byte (RST) para subrutinas ubicadas en las direcciones fijas 00h, 08h, 10h,...,38h. Estas están destinadas a ser suministradas por hardware externo para invocar una rutina de servicio de interrupción correspondiente, pero también se emplean a menudo como llamadas rápidas del sistema. Una instrucción sofisticada es XTHL, que se utiliza para intercambiar el par de registros HL con el valor almacenado en la dirección indicada por el puntero de la pila.
Todas las operaciones aritméticas y lógicas (ALU) de 8 bits con dos operandos funcionan en el acumulador de 8 bits (el registro A). Para las operaciones de 8 bits con dos operandos, el otro operando puede ser un valor inmediato, otro registro de 8 bits o una celda de memoria direccionada por el par de registros de 16 bits HL. Las únicas operaciones ALU de 8 bits que pueden tener un destino distinto del acumulador son las instrucciones de incremento o decremento unario, que pueden operar en cualquier registro de 8 bits o en la memoria direccionada por HL, al igual que para las operaciones de 8 bits con dos operandos. Se admite la copia directa entre dos registros de 8 bits cualesquiera y entre cualquier registro de 8 bits y una celda de memoria direccionada por HL, utilizando la instrucción MOV. Un valor inmediato también se puede mover a cualquiera de los destinos anteriores, utilizando la instrucción MVI. Debido a la codificación regular de la instrucción MOV (que utiliza casi una cuarta parte de todo el espacio del código de operación), hay códigos redundantes para copiar un registro en sí mismo ( MOV B,B , por ejemplo), que son de poca utilidad, excepto para los retrasos. [nb 2] Sin embargo, lo que hubiera sido una copia de la celda direccionada HL en sí misma (es decir, MOV M,M ) en cambio codifica la instrucción HLT , deteniendo la ejecución hasta que se produzca un reinicio externo o una interrupción desenmascarada. [nb 3]
Aunque el 8085 es un procesador de 8 bits, tiene algunas operaciones de 16 bits. Cualquiera de los tres pares de registros de 16 bits (BC, DE, HL) o SP se puede cargar con un valor inmediato de 16 bits (usando LXI), incrementar o decrementar (usando INX y DCX), o agregar a HL (usando DAD). LHLD carga HL desde la memoria direccionada directamente y SHLD almacena HL de la misma manera. La operación XCHG intercambia los valores de HL y DE. XTHL intercambia el último elemento insertado en la pila con HL. Agregar HL a sí mismo realiza un desplazamiento aritmético a la izquierda de 16 bits con una instrucción. La única instrucción de 16 bits que afecta a cualquier indicador es DAD (agregar BC, DE, HL o SP a HL), que actualiza el indicador de acarreo para facilitar adiciones de 24 bits o más y desplazamientos a la izquierda. Agregar el puntero de pila a HL es útil para indexar variables en marcos de pila (recursivos). Se puede asignar un marco de pila utilizando DAD SP y SPHL, y se puede realizar una bifurcación a un puntero calculado con PCHL. Estas capacidades hacen posible compilar lenguajes como PL/M , Pascal o C con variables de 16 bits y producir código de máquina 8085. La resta y las operaciones lógicas bit a bit en 16 bits se realizan en pasos de 8 bits. Las operaciones que deben implementarse mediante código de programa (bibliotecas de subrutinas) incluyen comparaciones de números enteros con signo, así como multiplicación y división.
Dos ingenieros de software, Wolfgang Dehnhardt y Villy M. Sorensen, descubrieron una serie de instrucciones y banderas no documentadas durante el proceso de desarrollo de un ensamblador 8085. Estas instrucciones utilizan operandos de 16 bits e incluyen la carga y el almacenamiento indirectos de una palabra, una resta, un desplazamiento, una rotación y operaciones de desplazamiento. [6]
Cuando se diseñó el 8085, pero aún no se anunció, muchos diseñadores lo consideraron inferior a los productos de la competencia que ya estaban en el mercado. Ya se estaba desarrollando una CPU 8086 de próxima generación. Intel tomó la decisión de último momento de dejar 10 de las 12 nuevas instrucciones del 8085 sin documentar para acelerar y simplificar el diseño de la futura CPU 8086. [7]
El 8085 admite tanto E/S asignadas a puerto como asignadas a memoria . Admite hasta 256 puertos de entrada/salida (E/S) a través de instrucciones de entrada/salida dedicadas, con direcciones de puerto como operandos. La E/S asignada a puerto puede ser una ventaja en procesadores con espacio de direcciones limitado. Durante un ciclo de bus de E/S asignado a puerto, la CPU envía la dirección de E/S de 8 bits tanto en la mitad inferior como en la superior del bus de direcciones de 16 bits.
También se puede acceder a los dispositivos diseñados para E/S mapeadas en memoria mediante las instrucciones LDA (cargar acumulador desde una dirección de 16 bits) y STA (almacenar acumulador en una dirección de 16 bits especificada), o cualquier otra instrucción que tenga operandos de memoria. Un ciclo de transferencia de E/S mapeado en memoria aparece en el bus como un ciclo de acceso a memoria normal.
Intel produjo una serie de sistemas de desarrollo para el 8080 y el 8085, conocidos como el Sistema de Microprocesador MDS-80. El sistema de desarrollo original tenía un procesador 8080. Más tarde se agregó soporte para el 8085 y el 8086, incluidos los ICE ( emuladores en circuito ). Es una caja de escritorio grande y pesada, de aproximadamente un cubo de 20" (en el color azul corporativo de Intel) que incluye una CPU, un monitor y una sola unidad de disquete de 8 pulgadas. Más tarde, se lanzó una caja externa con dos unidades de disquete más. Ejecuta el sistema operativo ISIS y también puede operar un pod emulador y un programador EPROM externo . Esta unidad usa la caja de tarjetas Multibus que estaba destinada solo para el sistema de desarrollo. Se vendieron una cantidad sorprendente de cajas de tarjetas y procesadores de repuesto, lo que llevó al desarrollo del Multibus como un producto separado.
El último iPDS es una unidad portátil, de aproximadamente 8" × 16" × 20", con un asa. Tiene una pequeña pantalla verde, un teclado integrado en la parte superior, una unidad de disquete de 5¼ pulgadas y ejecuta el sistema operativo ISIS-II. También puede aceptar un segundo procesador 8085, lo que permite una forma limitada de operación multiprocesador donde ambos procesadores funcionan simultáneamente e independientemente. La pantalla y el teclado se pueden cambiar entre ellos, lo que permite ensamblar programas en un procesador (los programas grandes tardaban un poco) mientras se editan archivos en el otro. Tiene una opción de memoria de burbuja y varios módulos de programación, incluidos EPROM y módulos de programación Intel 8048 y 8051 que se conectan al costado, reemplazando a los programadores de dispositivos independientes. Además de un ensamblador 8080/8085, Intel produjo una serie de compiladores, incluidos los de PL/M-80 y Pascal , y un conjunto de herramientas para vincular y ubicar estáticamente programas para permitir que se graben en EPROM. y se utiliza en sistemas integrados .
Una placa "MCS-85 System Design Kit" (SDK-85) de menor costo contiene una CPU 8085, una ROM 8355 que contiene un programa de monitorización de depuración, una RAM 8155 y 22 puertos de E/S, un teclado hexadecimal 8279 y un LED de 7 segmentos de 8 dígitos y un TTY (teletipo).Interfaz serial de bucle de corriente de 20 mA . Hay almohadillas disponibles para una EPROM 8755 2K×8 más y otraSe puede agregar opcionalmente un temporizador/contador de E/S de 256 bytes de RAM y 8155. Todas las señales de datos, control y dirección están disponibles en conectores de pines dobles y se proporciona una amplia área de creación de prototipos.
El procesador 8085 se utilizó en algunas de las primeras computadoras personales, por ejemplo, la línea TRS-80 Modelo 100 utilizó un 80C85 fabricado por OKI (MSM80C85ARS). La versión CMOS 80C85 del procesador NMOS/HMOS 8085 tiene varios fabricantes. En la Unión Soviética , se desarrolló un clon 80C85 bajo la designación IM1821VM85A ( en ruso : ИМ1821ВМ85А [ru] ) que en [actualizar]2016 todavía estaba en producción. [11] Algunos fabricantes proporcionan variantes con funciones adicionales, como instrucciones adicionales. [ cita requerida ]
La versión reforzada con radiación del 8085 ha estado en procesadores de datos de instrumentos a bordo para varias misiones de física espacial de la NASA y la ESA en la década de 1990 y principios de la década de 2000, incluidas CRRES , Polar , FAST, Cluster, HESSI , el rover marciano Sojourner , [12] y THEMIS . La empresa suiza SAIA utilizó el 8085 y el 8085–2 como CPU de su línea PCA1 de controladores lógicos programables durante la década de 1980.
Pro-Log Corp. colocó el 8085 y el hardware de soporte en una tarjeta con formato STD Bus que contenía CPU, RAM, conectores para ROM/EPROM, E/S e interfaces de bus externo. La tarjeta de referencia del conjunto de instrucciones incluida utiliza mnemónicos completamente diferentes para la CPU Intel 8085. El producto era un competidor directo de las ofertas de tarjetas Multibus de Intel.
La CPU 8085 forma parte de una familia de chips desarrollados por Intel para construir un sistema completo. Muchos de estos chips de soporte también se utilizaron con otros procesadores. El IBM PC original basado en el procesador Intel 8088 utilizaba varios de estos chips; las funciones equivalentes las proporcionan hoy los chips VLSI , es decir, los chips " Southbridge ".
En muchas escuelas de ingeniería, el procesador 8085 se utiliza en cursos introductorios de microprocesadores. Varias empresas ofrecen kits de capacitación compuestos por una placa de circuito impreso, el 8085 y el hardware de soporte. Estos kits suelen incluir documentación completa que permite al estudiante pasar de la soldadura a la programación en lenguaje ensamblador en un solo curso. Además, la arquitectura y el conjunto de instrucciones del 8085 son fáciles de entender para el estudiante. Las versiones de proyectos compartidos de computadoras de placa única basadas en el 8085 para uso educativo y recreativo se indican a continuación en la sección Enlaces externos de este artículo.
Hay simuladores de software disponibles para el microprocesador 8085, que permiten la ejecución simulada de códigos de operación en un entorno gráfico.
La CPU 8085A es 100 % compatible en software con la CPU Intel 8080A.
Simuladores:
Tableros: