Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1.- INTRODUCCION.................................................................................................................................3
1.- SISTEMAS QUE COMPONEN LA COMPUTADORA XT................................................................4
3.-FUNCIONAMIENTO EN GENERAL...................................................................................................8
4.- SISTEMAS DESCRITOS POR BLOQUES Y POR CIRCUITOS......................................................10
5.- ESQUEMATICO DEL SISTEMA COMPLETO DE APLICACIÓN..................................................12
6.- MUESTRA DE UNA MAINBOARD XT CON IDENTIFICACION DE DISPOSITIVOS................13
7.- REGISTROS DEL 8088......................................................................................................................16
7.1- Registros de Propósito General......................................................................................................17
7.1.1Registro AX...............................................................................................................................17
7.1.2 Registro BX:.............................................................................................................................17
7.1.3 Registro CX.............................................................................................................................17
7.1.4 Registro DX..............................................................................................................................17
7.2 Registros Índice...............................................................................................................................17
7.1.1 Registro SI................................................................................................................................17
7.1.2 Registro DI:.............................................................................................................................17
7.3 Registros de punteros......................................................................................................................17
7.3.1 Registro SP:..............................................................................................................................17
7.3.2 Registro BP...............................................................................................................................18
7.4 Registros de Estado..........................................................................................................................18
7.5 Registros de Segmento....................................................................................................................19
7.5.1 Registro CS...............................................................................................................................19
7.5.2 Registro DS...............................................................................................................................19
7.5.3 Registro SS...............................................................................................................................19
7.5.4 Registro ES..............................................................................................................................19
7.6 Registro Puntero de Instrucciones....................................................................................................19
8.- MODOS DE DIRECCIONAMIENTO................................................................................................20
9.- SET DE INSTRUCCUIONES.............................................................................................................22
9.1 Instrucciones de Transferencia de Datos..........................................................................................22
9.2 Control de Bucles (instrucciones simples).......................................................................................22
9.3 Instrucciones de Prueba, Comparación y Saltos...............................................................................23
9.4 Instrucciones de Llamado y Retorno de Subrutinas.........................................................................24
9.5 Instrucciones Aritméticas................................................................................................................24
9.6 Instrucciones Lógicas......................................................................................................................25
9.7 Instrucciones de Desplazamiento, Rotación y Adeudos...................................................................26
9.8 Instrucciones de Pila........................................................................................................................26
9.10 Instrucciones de Control del microprocesador...............................................................................26
9.11 Instrucciones de Interrupción.........................................................................................................27
10.- LENGUAJE DE MAQUINA, MACROENSANBLADOR DEL 8088..............................................28
11.- DEBUGER Y SIMULADORES DEL 8088.......................................................................................30
BIBLIOGRAFIA.......................................................................................................................................33
REFERENCIAS........................................................................................................................................33
ARQUITECTURA DE COMPUTADORAS
TEMA 1: HARDWARE COMPUTADORA PERSONAL PC XT 8088 – 8086
1.- INTRODUCCION
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 microcomputadora basada en el 8085 llamada "Intellec Microcomputer
Development System". Los programas incluían ensambladores cruzados (éstos son programas
que se ejecutan en un microprocesador y generan código de máquina que se ejecuta en otro),
compiladores de PL/M, Fortran y Pascal y varios programas de ayuda. Además había un
programa traductor llamado CON V86 que convertía código fuente 8080/8085 a código fuente
8086/8088. Si se observan de cerca ambos conjuntos de instrucciones, queda claro que la
transformación 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 más largo (en cantidad de bytes) y
a veces más lento de correr que en su antecesor 8085. Este programa de conversión sólo servía
para no tener que volver a escribir los programas en una primera etapa. Luego debería
reescribirse el código fuente en assembler para poder obtener las ventajas de velocidad ofrecidas
por el 8088. Luego debía 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 3 (también de California) desarrolló una placa donde estaban el 8085 y el 8088,
donde se utilizaba un ensamblador cruzado provisto por la compañía Microsoft. Bajo control de
software, podían conmutarse los microprocesadores. El sistema operativo utilizado era el CP/M
(de Digital Research).
El desarrollo más notable para la familia 8086/8088 fue la elección 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 más correcto: "Computadora
Personal IBM", con un precio inicial entre 1260 dólares y 3830 dólares según la configuración
(con 48KB de memoria RAM y una unidad de discos flexibles con capacidad de 160KB costaba
2235 dólares). Esta computadora entró en competencia directa con las ofrecidas por Apple
(basado en el 6502) y por Radio Shack (basado en el Z-80).
Fue puesto a la venta como IBM número de producto 5160 el 8 de marzo de 1983. XT son las
siglas de eXtended Technology (Tecnología eXtendida). El XT son las siglas de
eXtended Technology (Tecnología eXtendida).
La PC XT contaba además con una serie de 128 KB de memoria RAM en la tarjeta madre
que posteriormente pasarían a ser 256 KB debido a propósitos de estandarización. La placa
base daba lugar a 8 ranuras o slots de expansión del tipo ISA de 8 bits. Se llegaron a tener
hasta 2 versiones de la placa base del XT, donde la original podía admitir hasta 256 KB en la
misma placa (4 bancos de chips de 64KB), capacidad que llegaría hasta los 640 KB con las
tarjetas de expansión. La segunda versión vendría hasta el año 1986 en que se podía admitir
hasta 640KB enteros en la placa madre gracias a dos bancos de chips de 256KB y los dos de
64KB. Algo que se incluyó en esta segunda versión fue el empleo de un IBM ROM BIOS,
IBM BIOS o ROM BIOS que incluía soporte para el teclado expandido.
La placa madre también contaba con chips de soporte. Así se tenían: un oscilador o
generador de señales de reloj 8284A, un controlador de interrupciones 8259A, un
controlador de bus 8288, un controlador DMA 8237ª (DMA o Acceso Directo a Memoria),
un timer 8253, una interfaz programable de periféricos 8255A, todos de Intel, más lógica
discreta adicional implementada con circuitos TTL usados como lógica de pegamento.
Otro componente del PC XT era el teclado, el cual al igual que en el caso de su predecesor,
el PC Original no era compatible con aquellos de los equipos más modernos (el AT o
superior). Una dificultad al respecto era el uso de diferentes códigos de escaneo, además de
la interfaz eléctrica algo diferente de los teclados PC/AT (Uso de adaptadores de señal). El
teclado tenía incorporado un procesador 8048 de Intel.
No podemos olvidar los 8 slots o sockets de 16 pines para las tarjetas que irán montadas en la
placa. Estos slots o ranuras de expansión alojaban a todo tipo de circuitos con diversas
finalidades: Ampliación de Memoria, el controlador de las unidades de disco, el controlador de
video, tanto para la tarjeta monocromática (MDA), como para la tarjeta gráfica de color (CGA),
el cual era el 6845 de Motorola. No podemos dejar de lado los canales: Serie RS-232 como para
periféricos como el ratón, y el Paralelo para las Impresoras.2.- CARACTERISTICAS DEL
PROCESADOR 8088/8086
El microprocesador 8088 es una derivación del 8086; la diferencia es el ancho del bus de
datos. El 8086 tiene tanto el bus interno como externo de datos de 16 bits, mientras que el
8088 tiene una ruta de datos interna de 16 bits pero la interface a memoria de solo 8 bits. El
código escrito para uno se ejecutará en el otro sin cambios.
La diferencia en el ancho del bus no hace que el 8086 sea el doble de rápido que el 8088. El
8088 ejecuta sus instrucciones desde una cola interna la cual se llena tan pronto como hay
una localidad vacía; así, es posible que se traslapen los ciclos de ejecución y búsqueda. Con
tal de que las instrucciones se ejecuten de la cola interna y no tengan que esperar un ciclo del
bus, su ejecución es tan rápida como pudiera ser en el 8086. Si los ciclos de datos son para
16 bits, tomaran dos ciclos de memoria; mientras que en el 8086 sólo tomará uno.
Una manera de aprender acerca del 8088 es conocer las funciones de sus pines. La figura
que se mostrará a continuación, muestra un diagrama funcional a bloques (Functional Block
Diagram) y un diagrama de la definición de las patitas (Pin Diagram) del 8088:
A8 – A15: Estas líneas son la salida de los bits A8 – A15 de dirección para memoria y
E/S en cada ciclo del bus. No están multiplexadas y permanecen estables durante el ciclo
del bus. En la PC, esta información de dirección se asegura (latched) y se convierte en los
bits A8 – A15 de dirección del bus del sistema.
A16/S3 – A19/S6: Al inicio de cada ciclo del bus para memoria, estas señales llevan los
bits A16 – A19 de dirección de memoria. Durante el resto del ciclo, presentan el estado
interno del 8088. Cuando S6 es bajo, S5 da el estado de habilitación de la bandera de
interrupción, y S4 y S3 se codifican para decir cual registro de segmento se está usando.
En la PC no se usa esta información de estado. Estas líneas se aseguran y se convierten en
los bits A16 – A19 de dirección del bus del sistema.
RQ/GT0: Es una señal bidireccional usada por otros maestros de bus local para solicitar
el uso del bus local. En la PC, esta línea se conecta a un enchufe de procesador auxiliar,
compatible con el coprocesador numérico 8087.
RQ/GT1: Realiza la misma función que RQ/GT0, pero tiene un nivel de prioridad más
bajo. En la PC no se usa.
LOCK: Se activa por una instrucción de seguro (lock) y permanece activa hasta el final
de la siguiente instrucción. Se usa para indicar a otros maestros de bus que no deben
intentar ganar el control del bus. Debido a que el diseño de la PC no es de bus
multimaestro, esta línea no se usa.
READY: Esta línea de entrada se usa para insertar estados de espera en los ciclos del bus
del 8088 y, así, extender la longitud del ciclo. En la PC, esta línea viene del reloj 8284A,
el cual lo sincroniza con el reloj del sistema. La PC usa la función READY para insertar
un estado de espera en todos los accesos de puerto de E/S y DMA, y proporciona una
función de generación de estados de espera en el bus del sistema.
RESET: Se usa para detener al microprocesador. En la PC, esta señal viene del reloj
8284A, el cual recibe su entrada de la fuente de energía del sistema. La fuente del sistema
genera una señal llamada energía buena, la cual indica que los niveles de energía están en
niveles adecuados y el RESET se puede remover del 8088.
QS0 y QS1: Estas líneas de salida dan el estado de la cola de instrucción interna. En la
PC, estas líneas están alambradas con el enchufe del procesador auxiliar de tal manera
que puede seguir el estado de la cola del 8088.
TEST: Este pin de entrada se prueba por la instrucción espera de prueba. Si está en bajo,
la ejecución continua; si está en alto, el 8088 espera en un estado de ocioso hasta que la
pata va a bajo. En la PC, se alambra con la salida BUSY del 8087.
S0, S1 y S2: Estas salidas presentan información del estado que pertenece al tipo de ciclo
de bus que será ejecutado. En la PC, estos bits se alambran al controlador de bus 8288,
donde se decodifican. Las salidas decodificadas del 8088 se convierten en las líneas de
control del bus del sistema.
El procesador opera a 4.77 MHz, frecuencia que es derivada del cristal de 14.31818 MHz la
cual es dividida por tres por el reloj del procesador; y por cuatro se obtiene 3.58 MHz (la
señal requerida para los televisores de color). El procesador es respaldado por el set de
funciones provistas por cuatro canales de 20 bits de acceso directo a memoria o DMA, tres
grupos de canales del Timer de 16 bits y ocho niveles de interrupciones. Tres de los cuatro
canales de DMA están disponibles en el bus de Entrada/Salida y hay una alta velocidad para
transferencia de datos entre las memorias y los canales de Entrada/Salida sin intervención de
la memoria del procesador. El cuarto canal es programado para refrescar el sistema dinámico
de memoria, esto está hecho para el programa del Timer-contador e informe periódicamente
de la transferencia DMA.
3.-FUNCIONAMIENTO EN GENERAL
La función básica de una computadora es ejecutar programas, los cuales están compuesto de
un conjunto de instrucciones almacenadas en memoria. La CPU es la encargada de ejecutar
las instrucciones específicas del programa. Para comprender esta función debe considerarse
el detalle del proceso de ejecución del programa. Desde el punto de vista más simple, se
considera el procesamiento de una instrucción en dos etapas: la CPU lee (busca, trae; “fetch”
en inglés) la instrucción de memoria y la ejecuta. La ejecución del programa consiste en la
repetición del proceso de traer y ejecutar la instrucción.
Buscar una instrucción es una operación común a todas las instrucciones, y consiste en la
lectura de la instrucción de una localidad de memoria. La ejecución de la instrucción puede
suponer varias operaciones y depende de la naturaleza de la instrucción.
Al principio de cada ciclo de instrucción, la CPU busca o trae una instrucción de memoria.
En una CPU típica, se utiliza un registro llamado contador de programa (PC program
counter) para apuntar a la instrucción que debe traerse a continuación. A no ser que se
indique otra cosa, la CPU siempre incrementa el PC después de traer una instrucción para
determinar de dónde traer la siguiente instrucción de la secuencia (siguiente dirección de
memoria).
La instrucción traída se almacena en un registro de la CPU conocido como registro de
instrucción (IR instruction register). La CPU interpreta la instrucción y realiza la acción
requerida. En general, ésta puede ser de cuatro tipos:
El ciclo de ejecución de una instrucción puede ocasionar más de una referencia a memoria, o
en su lugar, puede especificar una operación de E/S. Con estas consideraciones en mente, la
figura 5 proporciona una visión más detallada el ciclo de instrucción. Para un ciclo de
instrucción dado, algunos estados pueden no darse y otros pueden visitarse más de una vez.
Los estados se describen a continuación:
Cálculo de la dirección de instrucción (iac, instruction address calculation): Determina la
dirección de la siguiente instrucción a ejecutar.
Búsqueda de instrucción (if, instruction fetch): La CPU lee la instrucción desde su
posición de memoria.
Decodificación de la operación indicada en la instrucción (iod, instruction operation
decoding): Analiza la instrucción para determinar el tipo de operación a realizar y el (los)
operando(s) a utilizar.
Búsqueda de operando (of, operand fetch): Trae el operando desde la memoria o se lee
desde el dispositivo de E/S.
Operación con los datos (do, data operation): realiza la operación indicada en la
instrucción.
Almacenamiento de operando (os, operand store): Escribe el resultado en memoria o lo
saca a través de un dispositivo de E/S.
Memoria
Unidad Artimético-Lógica ALU ("Arithmetic and Logic Unit" )
Unidad de Control CU ("Control Unit" )
Bus interno
Conexiones con el exterior
6.- MUESTRA DE UNA MAINBOARD XT CON IDENTIFICACION DE
DISPOSITIVOS
Mainboard de PC XT con ID de dispositivos
Los registros del procesador, se usan para contener los datos con que se está
trabajando ya que el acceso a los registros es mucho más rápido que los accesos a
memoria. Se pueden realizar operaciones aritméticas y lógicas, comparaciones, entre
otras. Se pueden hacer estas operaciones con todos los registros excepto los de
segmento, el IP, y los flags.
7.1- Registros de Propósito General
Los registros de propósito general son el AX, BX, CX, y DX, de 16 bits. Cada uno de
ellos se divide en dos registros de 8 bits, llamados AH y AL, BH y BL, CH y CL, y, DH y
DL, H significando Hight (alto) y L significando Low (bajo), indicando la parte alta o la
parte baja del registro correspondiente de 16 bits (ver esquema). Un programa podía
usar tanto los registros de 16 bits como los registros de 8 bits. 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:
7.1.3 Registro CX: El registro CX es conocido como el registro contador. Puede contener
un valor para controlar el número de veces que un ciclo se repite o un valor para
corrimiento de bits
7.1.1 Registro SI: El registro índice fuente de 16 bits es requerido por algunas
operaciones con cadenas de caracteres. El SI está asociado con el segmento DS.
7.1.2 Registro DI: El registro índice destino también es requerido por algunas
operaciones con cadenas de caracteres. El DI está asociado con el segmento ES.
7.3.1 Registro SP: El apuntador de pila de 16 bits está asociado con el segmento SS y
proporciona un valor de desplazamiento que se refiere a la palabra actual que está
siendo procesada en la pila. El sistema maneja de manera automática este registro,
aunque el programa puede hacer ciertas manipulaciones con él.
La tabla contiene 16 posiciones (de 0 a 15), que son los 16 bits del registro de
banderas, numeradas de derecha a izquierda. La posición 0 la encontraremos a la
derecha y la posición 15 a la izquierda.
O D I T S Z A P C
- - - - - - -
F F F F F F F F F
7.5.1 Registro CS: El DOS almacena la dirección inicial del segmento de código de un
programa en el registro CS. Esta dirección de segmento, más un valor de
desplazamiento en el registro apuntador de instrucción (IP), indica la dirección de una
instrucción que es buscada para su ejecución. Para propósitos de programación
normal, no se necesita referenciar el registro CS.
7.5.3 Registro SS: El registro SS permite la colocación en memoria de una pila, para
almacenamiento temporal de direcciones y datos. El DOS almacena la dirección de
inicio del segmento de pila de un programa en el registro SS. Esta dirección de
segmento, más un valor de desplazamiento en el registro del apuntador de la pila (SP),
indica la palabra actual en la pila que está siendo direccionada. Para propósitos de
programación normal, no se necesita referenciar el registro SS.
2. valores inmediatos,
En total son siete las clases de parámetros que se pueden utilizar y conjuntamente
forman los llamados siete modos de direccionamiento.
3.3 Modo relativo a base: Es unir los dos modos anteriores. Consiste en indicar
la posición del operando utilizando como desplazamiento el valor de un registro
sumado con una cantidad constante.
3.4 Modo directo indexado: Idéntico al anterior pero usando como registro de
desplazamiento el registro SI o el DI.
3.5 Modo indexado a base: Este es el modo más complejo, y se podría decir que
es el resultado de unir los cuatro anteriores. En este modo, el desplazamiento del
operando se compone a partir de un registro que hace de base, un registro índice y un
valor inmediato que se les suma.
MOV transfiere
XCHG intercambia
IN entrada
OUT salida
PUSH FUENTE (sp) fuente
POP DESTINO destino (sp)
9.2 Control de Bucles (instrucciones simples)
Estas posibilitan el grupo de control más elemental de nuestros programas. Un bucle es
un bloque de código que se ejecuta varias veces. Hay4 tipos de bucles básicos:
Bucles sin fin
Bucles por conteo
Bucles hasta
Bucles mientras
INC incrementar
DEC decrementar
LOOP realizar un bucle
JCXZ salta si CX es cero
TEST verifica
CMP compara
JMP salta
JS salta si signo negativo
JNS salta si signo no negativo
JP, JPE salta si paridad par
JNP, JOP salta si paridad impar
9.5 Instrucciones Aritméticas.
Estas instrucciones son las que realiza directamente el 8086/8088
a. Grupo de adición:
ADD suma
ADC suma con acarreo
AAA ajuste ASCII para la suma
b. Grupo de sustracción:
SUB resta
AAS ajuste ASCII para la resta
MUL multiplicación
IMUL multiplicación entera
AAM ajuste ASCII para la multiplicación
d. Grupo de división:
DIV división
IDIV división entera
AAD ajuste ASCII para la división
e. Conversiones:
CBW pasar octeto a palabra
NEG negación
f. Tratamiento de cadenas:
REP repetir
CLD poner a 0 el indicador de dirección
9.6 Instrucciones Lógicas.
Son operaciones bit a bit que trabajan sobre octetos o palabras completas:
NOT negación
AND producto lógico
OR suma lógica
XOR suma lógica exclusiva
SHR desplazar a la derecha
SAR desplazamiento aritmético a la derecha
ROL rotación a la izquierda
ROR rotación a la derecha
CLC borrar acarreo
STC poner acarreo a 1
PUSH introducir
POP extraer
PUSHF introducir indicadores
POPF extraer indicadores
9.10 Instrucciones de Control del microprocesador.
Hay varias instrucciones para el control de la CPU, ya sea a ella sola, o en conjunción
con otros procesadores:
NOP no operación
HLT parada
WAIT espera
LOCK bloquea
ESC escape
INT interrupción
IRET retorno de interrupción
Ahora bien, mientras que con el lenguaje de máquina, nosotros obtenemos un control
total del microprocesador, la programación en este lenguaje resulta muy difícil y fácil
para cometer errores. No tanto por el hecho de que las instrucciones son sólo números,
sino porque se debe calcular y trabajar con las direcciones de memoria de los datos,
los saltos y las direcciones de llamadas a subrutinas, además de que para poder hacer
ejecutable un programa, se deben enlazar las rutinas de run-time y servicios del
sistema operativo. Este proceso es al que se le denomina ensamblado de código. Para
facilitar la elaboración de programas a este nivel, se desarrollaron los Ensambladores y
el Lenguaje Ensamblador.
Existe una correspondencia 1 a 1 entre las instrucciones del lenguaje de máquina y las
del lenguaje ensamblador. Cada uno de los valores numéricos del lenguaje de máquina
tiene una representación simbólica de 3 a 5 letras como instrucción del lenguaje
ensamblador. Adicionalmente, este lenguaje proporciona un conjunto de pseudo-
operaciones (también conocidas como directivas del ensamblador) que sirven para
definir datos, rutinas y todo tipo de información para que el programa ejecutable sea
creado de determinada forma y en determinado lugar.
DEBUG name.EXE
Cada línea comienza con una letra clave posiblemente seguida de otra información.
Por lo general, puede omitir los espacios en blanco - a veces es necesario hacerlo.
q / / quit DEBUG
BIBLIOGRAFIA
Intel, Datasheet 8088 8-bit Hmos Microprocessor 8088/8088-2 , agosto 1990,
pag 1-7.
Ibm corp.
Ibm at technical reference. - 1984. 600 páginas.
IBM, Technical Reference Pc xt 8088 User Guide, Section Hardware
Ralf Brown.
Lenguaje Ensamblador de los 80XX
REFERENCIAS
http://www.configurarequipos.com/doc585.html
http://www.monografias.com/
http://www.alpertron.com.ar/8088.HTM
http://www.wikilearning.com/
http://atc.ugr.es/docencia/udigital/
http://www.emu8086.com/
http://www.datasheetcatalog.org/datasheet/Intel/mXrysuv.pdf
Esta dirección es un ensamblador para los 80xx: msx88.zip