Intel 8086 y 8088

Comercializado como compatible a nivel de código fuente, el 8086 fue diseñado de modo que el lenguaje ensamblador para el 8008, 8080, o el 8085 pudiera ser convertido automáticamente en (subóptimo) código fuente equivalente del 8086, con poca o ninguna edición a mano.También fueron agregadas nuevas clases de instrucciones, compatibilidad para enteros con signo, direccionamiento de base + offset, y las operaciones auto-repetidas fueron semejantes a las del diseño del Z80,[4]​ pero todas fueron hechas levemente más generales en el 8086.[6]​ El 8086 tomó un poco más de dos años desde la idea hasta el producto trabajando, lo que fue considerado algo rápido para un complejo diseño en 1976-1978.[9]​ El chip original midió 33 mm² y el mínimo tamaño fue de 3.2 µm.La arquitectura fue definida por Stephen P. Morse con cierta ayuda y asistencia de Bruce Ravenel (el arquitecto del 8087) en refinar las revisiones finales.El conjunto de registros también es similar al del i8080, pero ampliados a 16 bits.Se pueden hacer estas operaciones con todos los registros excepto los de segmento, el IP, y los flags.Aparte del uso general de los registros para hacer cálculos aritméticos y lógicos, existen instrucciones que usan estos registros con un uso particular especializado, como se indica a continuación: Los registros SI y DI están disponibles para direccionamiento indexado y para operaciones de cadenas de caracteres.Los registros SP (apuntador de pila) y BP (apuntador base) están asociados con el registro SS y permiten al sistema acceder a datos en el segmento de la pila.El IP está asociado con el registro CS en el sentido de que el IP indica la instrucción actual dentro del segmento de código que se está ejecutando actualmente en la memoria.Por el contrario, provoca confusión cuando se hace un uso extensivo de los punteros (como en el lenguaje C), debido a que es posible que dos punteros con diferentes valores apunten a la misma dirección de memoria.Consecuentemente, cada dirección externa podía ser referida por 212 = 4096 diferentes pares segmento:offset.Los modelos minúsculo (tiny) (64K máximo), pequeño (small) (128K máximo), compacto (compact) (datos > 64K), medio (medium) (código > 64K), grande (large) (código y datos > 64K), y enorme (huge) (arreglos individuales > 64K), cubrían las combinaciones de punteros near.El modelo tiny significaba que el código y los datos estaban compartidos en un solo segmento, justo como en la mayoría de los procesadores basados en 8 bits, y podía ser usado para construir archivos .com por ejemplo.Las bibliotecas precompiladas vinieron a menudo en varias versiones compiladas para diversos modelos de memoria.Sin embargo, pues que esto habría forzado a los segmentos comenzar límites de 256 bytes, y, alrededor de 1976, 1 MB era considerado muy grande para un microprocesador, la idea fue descartada.Los pequeños programas podían ignorar la segmentación y solo usar la dirección plana de 16 bits.Esto era importante cuando el 8086/8088 y el MS-DOS eran nuevos, porque permitió que muchas aplicaciones existentes de CP/M (y otros) hacerse rápidamente disponibles, facilitando grandemente la aceptación de la nueva plataforma.En el 8086 se ven los pines del 2 al 16 y los pines 35 al 39 con doble funcionalidad, en un momento determinado transporta la dirección y en otro momento entran o salen los datos (o sale información de algunas líneas del bus de control).Además del bus externo de datos, que se reduce a 8 bits, la diferencia con el 8086 es mínima.Igualmente se tenía un mejor desempeño con las operaciones lógicas de 16 bits.Los computadores con el 8086/8088, generalmente tenían un socket de 40 pines en donde se podía enchufar un coprocesador matemático opcional para tener capacidad de coma flotante mucho más rápida basada en hardware/microcódigo.El Intel 8087 era el coprocesador matemático estándar para el 8086 y el 8088, operando internamente en números de 80 bits.Las versiones de HMOS-III y CMOS fueron fabricadas durante mucho tiempo (por lo menos un tiempo en los años 1990) para los sistemas empotrados, aunque sus sucesores, los 80186/80188 (que incluye algunos periféricos en el chip), han sido más populares para el uso empotrado.Tales procesadores en CMOS, relativamente simples y de baja potencia, compatibles con el 8086/8088, todavía se usan en sistemas empotrados.Algunos de los ingenieros y otros empleados de IBM quisieron usar el procesador IBM 801, algunos hubieran preferido el nuevo Motorola 68000,[15]​ mientras que otros argumentaron por un pequeño y simple microprocesador similar al que había sido usado en ordenadores personales anteriores (tales como el TRS-80 o el Apple II).Esto incluyó los ICs previstos originalmente para soporte y funciones periféricas alrededor del 8085 y procesadores similares (no exclusivamente de Intel) que ya eran bien conocidos por muchos ingenieros, reduciendo adicionalmente los costos.Los descendientes del 8088 incluyen el 80188, 80186, 80286, 80386, 80486, Pentium, y los posteriores procesadores compatibles en software, que están en uso hasta hoy.La mayoría de los clones del IBM PC y XT usaron el Intel 8088 corriendo a 4.77 o más MHz.
Lenguaje de máquina del Intel 8088 . El código de máquina en hexadecimal se resalta en rojo, el equivalente en lenguaje ensamblador en magenta, y las direcciones de memoria donde se encuentra el código, en azul. Abajo se ve un texto en hexadecimal y ASCII .
Diagrama de bloque de los microprocesadores Intel 8086 y 8088.
1 Bloque de registros de propósito general
2 Bloque de registros de segmento y registro IP
3 Sumador de direcciones
4 Bus de direcciones interno
5 Cola de instrucciones (4 bytes para el 8088 y 6 bytes para el 8086)
6 Unidad de control (muy simplificada)
7 Interfaz del bus
8 Bus de datos interno
9 Unidad aritmético lógica (ALU)
10, 11, 12 Bus de direcciones , datos y control externos
Cálculo de la dirección efectiva mediante el uso de un segmento y un offset. El segmento (de 16 bits) se desplaza 4 bits a la izquierda (se multiplica por 16), y se le suma el registro de direccionamiento (de 16 bits), dando por resultado una dirección lineal de 20 bits.
El clon soviético KP1810BM86.
El QFP-56 M80C86A de OKI