Está en la página 1de 36

Índice

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).

1.- SISTEMAS QUE COMPONEN LA COMPUTADORA XT

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).

 El estándar XT traía de serie 128KB de memoria RAM


 Una disquetera 5 1/4" de doble cara de doble densidad de 360KB de tamaño completo
 Un disco duro Seagate de 10MB (ST-412)
 Un adaptador asíncrono (tarjeta serial)
 Una fuente de alimentación de 130W q suministraba energía eléctrica a todos los
componentes.
 La placa base tenía ocho ranuras de expansión ISA de 8 bits, y un microprocesador Intel
8088 corriendo a 4,77 MHz (con un zócalo para coprocesador matemático Intel 8087).

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.

El PC XT también albergaba una memoria ROM específica como intérprete de BASIC


(lenguajes de programación de alto nivel), lo cual en el IBM PC Original era una operación
realizada por una unidad de casete, que no se encontraba más en el XT. Para acceder a esta
función de intérprete se requería de realizar operaciones auxiliares como desconectar el
disco duro, dejar vacía la disquetera, y otras como acceder manualmente a la BIOS con un
“depurador”.

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.

La tarjeta o placa madre cuenta con un par de conectores de 16 pines provenientes de la


fuente DC (de unos 130W) y de las señales entrantes. Sin embargo también se cuentan con
otros conectores para el teclado y el Speaker. La fuente de alimentación generaba hasta 4
voltajes (+5V, -5V, +12V y -12V) y se encontraba dentro del chasis o case, junto con la
placa madre, las unidades de disco y las tarjetas de expansión.

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.

El siguiente es un resumen de los puntos de interés del 8088:

 Arquitectura interna de 16 bits


 Soporta 1 MB de memoria
 Aritmética con signo y sin signo de 8 y 16 bits, tanto en binario como en decimal,
incluyendo multiplicación y división.
 14 registros de 16 bits.
 Interrupción enmascarable y no enmascarable.
 24 modos de direccionamiento de operandos.
 Acceso directo a memoria
 Soporte para coprocesadores de bus local.
 Soporte para E/S mapeada en memoria.
 Operaciones de cadena.
 

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:

 AD0 – AD7: Las señales de estas patas transmiten información de direcciones de


memoria y E/S en cada ciclo del bus. Estas señales están multiplexadas; llevan los bits
A0 – A7 de dirección al principio del ciclo del bus, después se usan como el bus de datos
del procesador. En la PC, esta información de dirección se asegura (latched) y se
convierte en la dirección del bus del sistema.

 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.

 CLK: Esta línea proporciona la información de temporización para el 8088. En la PC,


esta línea viene del reloj 8284.

 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.

 NMI: Esta línea de entrada genera una interrupción no enmascarable (nonmaskable). En


la PC esta entrada de petición de interrupción se usa para reportar errores de paridad en la
memoria de la tarjeta madre, acepta peticiones de interrupción del enchufe del procesador
auxiliar, y acepta peticiones de dispositivos sobre el bus del sistema.

 INTR: Esta señal de entrada es la de interrupción mascarable. En la PC, se conecta al


controlador de interrupciones 8259A, el cual expande la entrada a 8 entradas de
interrupción al sistema.

 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.

El procesamiento de una instrucción se denomina ciclo de instrucción y se representa en la


figura siguiente. Los dos pasos se denotan como ciclo de búsqueda y ciclo de ejecución. La
ejecución del programa se detiene sólo si la computadora se desconecta, se produce algún
error o se encuentra una instrucción que detiene la computadora.
 

 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:
 

- CPU - Memoria: Deben transferirse datos desde la CPU a la memoria o viceversa.


- CPU - E/S: Deben transferirse datos a o desde el exterior mediante el módulo de E/S.
- Procesamiento de datos: La CPU realizará alguna operación aritmética o lógica con los
datos.
- Control: Una instrucción puede especificar que la secuencia de ejecución se altere por lo
que la CPU debe poner el contador de programa al valor adecuado.
 

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.

Cálculo de la dirección del operando (oac, operand address calculation): Si la instrucción


implica una referencia a un operando en memoria o disponible mediante E/S, determina la
dirección del operando.

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.
 

Los estados de la parte superior de la figura ocasionan intercambio entre la CPU y la


memoria o módulo E/S. Los estados inferiores sólo ocasionan operaciones internas en la
CPU. El estado oac aparece dos veces, porque una instrucción puede ocasionar una lectura,
una escritura o ambas. Obsérvese además la posibilidad de múltiples operandos y resultados
puesto que se necesitan en algunas instrucciones.
4.- SISTEMAS DESCRITOS POR BLOQUES Y POR CIRCUITOS
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
5.- ESQUEMATICO DEL SISTEMA COMPLETO DE APLICACIÓN
De forma esquemática podemos suponer que un procesador se compone de cinco
elementos:

 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

Disco Duro de PC XT y Controlador


Disquetera de PC XT y Controlador
7.- REGISTROS DEL 8088
Los registros del i8086 e i8088 se basaron en el diseño del Intel 8080. El conjunto
de registros también es similar al del i8080, pero ampliados a 16 bits. Tanto el i8086
como el i8088 tienen cuatro registros de propósito general de 16 bits, que también
pueden ser accedidos como ocho registros de 8 bits, y tienen cuatro registros
índices de 16 bits. Los registros de datos se usan a veces de forma implícita por las
instrucciones, haciendo más difícil la organización de los registros para emplearlos con
valores temporales.

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.1Registro AX: El registro AX es el registro acumulador, es utilizado para operaciones


que implican entrada/salida, y multiplicación y división (estas dos últimas en conjunto
con el registro DX)

7.1.2 Registro BX: El registro BX es el registro base, y es el único registro de propósito


general que puede ser un índice para direccionamiento indexado

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.4 Registro DX: El registro DX es el registro de datos. En algunas operaciones se


indica mediante este registro el número de puerto de entrada/salida, y en las
operaciones de multiplicación y división de 16 bits se utiliza junto con el acumulador AX

7.2 Registros Índice


Los registros SI y DI están disponibles para direccionamiento indexado y para
operaciones de cadenas de caracteres.

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 Registros de punteros


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.

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.

7.3.2 Registro BP: El apuntador base de 16 bits facilita la referencia de parámetros


dentro de la pila.

7.4 Registros de Estado


Es un registro de 16 bits, de los cuales nueve sirven para indicar el estado actual de la
máquina y el resultado del procesamiento. Muchas instrucciones aritméticas y de
comparación cambian el estado de las banderas y apoyándose en ellas se pueden
tomar decisiones para determinar la acción subsecuente.

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

Los bits de las banderas son las siguientes:

OF (overflow, desbordamiento): Indica desbordamiento del bit de mayor orden


después de una operación aritmética de números con signo (1=existe overflow; 0=no
existe overflow). Para operaciones sin signo, no se toma en cuenta esta bandera.

DF (dirección): Controla la selección de incremento o decremento de los registros SI y


DI en las operaciones con cadenas de caracteres (1=decremento automático;
0=incremento). La bandera DF se controla con las instrucciones STD y CLD.

IF (interrupción): Indica que una interrupción sea procesada o ignorada (1=habilita las


interrupciones; 0=deshabilita las interrupciones). El estado de la bandera IF se controla
con las instrucciones STI y CLI.

TF (trampa): Permite la operación del procesador en modo de depuración (paso a


paso)

SF (signo): Contiene el signo resultante de una operación aritmética (0=positivo;


1=negativo).

ZF (cero): Indica el resultado de una operación aritmética o de comparación


(0=resultado diferente de cero; 1=resultado igual a cero).
AF (acarreo auxiliar): Contiene el acarreo del bit 3. Esta bandera se prueba con las
instrucciones DAA y DAS para ajustar el valor de AL después de una suma o
resta BCD.

PF (paridad): Indica si el número de bits 1, del byte menos significativos de una


operación, es par (0=número de bits 1 es impar; 1=número de bits 1 es par).

CF (acarreo): Contiene el acarreo del bit de mayor orden después de una operación


aritmética; también almacena el contenido del último bit en una operación de
desplazamiento o de rotación.

7.5 Registros de Segmento


Definen áreas de 64 Kb dentro del espacio de direcciones de 1 Mb del 8086. Estas
áreas pueden solaparse total o parcialmente. No es posible acceder a una posición de
memoria no definida por algún segmento: si es preciso, habrá de moverse alguno.

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.2 Registro DS: La dirección inicial de un segmento de datos de programa es


almacenada en el registro DS. Esta dirección, más un valor de desplazamiento en una
instrucción, genera una referencia a la localidad de un byte específico en el segmento
de datos.

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.

7.5.4 Registro ES: Algunas operaciones con cadenas de caracteres utilizan el registro


extra de segmento para manejar el direccionamiento de memoria. El registro ES está
asociado con el registro DI (Índice). Un programa que requiere el uso del registro ES
puede inicializarlo con una dirección de segmento apropiada.

7.6 Registro Puntero de Instrucciones


El registro IP de 16 bits contiene el desplazamiento de dirección de la siguiente
instrucción que se ejecuta. 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.

8.- MODOS DE DIRECCIONAMIENTO


En el 8086/8088, los parámetros (operadores) de una instrucción pueden ser de tres
tipos:

1. registros internos de la CPU,

2. valores inmediatos,

3. direcciones de memoria, de las que hay cinco tipos diferentes de representación.

En total son siete las clases de parámetros que se pueden utilizar y conjuntamente
forman los llamados siete modos de direccionamiento.

1. Registros internos: el origen y destino de la operación son los registros internos de la


CPU.

2. Valores inmediatos: en este modo, el origen de los datos (y sólo el origen) es un


valor numérico.

3. Valores de memoria. Hay cinco modos de acceso a memoria:

3.1 Modo directo: Se indica la dirección de memoria a la que se quiere acceder.


3.2 Modo indirecto mediante registro: Es similar al modo anterior sólo que el
valor del desplazamiento del operando no se indica directamente sino que se encuentra
en un registro de la CPU.

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.

Los procesadores 8086 y 8088 tenían los siguientes modos de direccionamiento:

 Implícito. El dato está implícito en la propia instruciión. Ej. STC, STD y STI, (Set


Carry, Set Direcction y Set Interrupts) encienden el flag correspondiente indicado
en la propia instrucción. CBW (Convert Byte to Word) extiende el registro AL a
AX. Ni el AL ni el AX son especificados, CBW implícitamente trabaja sobre ellos.
 Inmediato. El dato a operar está inmediatamente después del opcode de la
instrucción. Ej, MOV AX, 5
 Registro. El dato está en un segundo registro. Ej. MOV AX, BX. Aquí, el dato
está en el registro BX
 Directo. La dirección del dato está en el campo de la dirección del opcode.
Ej. MOV AX, [100h]. Aquí se mueve (copia) el contenido de las direcciones 100h
y 101h al registro AX. En este caso se mueven dos bytes puesto que AX es de
16 bits. Si fuera MOV BL, [100h] se movería solo un byte pues BL es un registro
de 8 bits
 Indirecto. El dato es especificado mediante una combinación de registros índice
y base, y puede haber un desplazamiento
o Base. Un registro base (BX o BP) tienen la dirección de donde se tomará
el dato. Ej. MOV AX, [BX]
o Índice. Un registro índice (SI o SI) tienen la dirección de donde se tomará
el dato. Ej. MOV AX, [SI]
o Base + Desplazamiento. El dato se tomará de la dirección apuntada por
la suma de un registro base más un desplazamiento. Ej. MOV AX, [BP +
7]
o Índice + Desplazamiento. El dato se tomará de la dirección apuntada por
la suma de un registro índice más un desplazamiento. Ej. MOV AX, [DI +
7]
o Base + Índice. El dato se tomará de la dirección apuntada por la suma de
un registro base más un registro índice. Ej. MOV AX, [BX + SI]
o Base + Índice + Desplazamiento. El dato se tomará de la dirección
apuntada por la suma de un registro base, más un registro índice, más un
desplazamiento. Ej. MOV AX, [BX + SI + 9]

9.- SET DE INSTRUCCUIONES


Se pueden clasificar en los siguientes grupos:

9.1 Instrucciones de Transferencia de Datos.


Estas instrucciones mueven datos de una parte a otra del sistema; desde y hacia la
memoria principal, de y a los registros de datos, puertos de E/S y registros de
segmentación.

Las instrucciones de transferencia de datos son las siguientes:

MOV transfiere

XCHG intercambia

IN entrada

OUT salida

XLAT traduce usando una tabla

LEA carga la dirección efectiva

LDS carga el segmento de datos

LES carga el segmento extra

LAHF carga los indicadores en AH

SAHF guarda AH en los indicadores

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

Las instrucciones de control de bucles son las siguientes:

INC incrementar

DEC decrementar

LOOP realizar un bucle

LOOPZ,LOOPE realizar un bucle si es cero

LOOPNZ,LOOPNE realizar un bucle si no es cero

JCXZ salta si CX es cero

9.3 Instrucciones de Prueba, Comparación y Saltos.


Este grupo es una continuación del anterior, incluye las siguientes instrucciones:

TEST verifica

CMP compara

JMP salta

JE, JZ salta si es igual a cero

JNE, JNZ salta si no igual a cero

JS salta si signo negativo

JNS salta si signo no negativo

JP, JPE salta si paridad par

JNP, JOP salta si paridad impar

JO salta si hay capacidad excedida

JNO salta si no hay capacidad excedida


JB, JNAE salta si por abajo (no encima o igual)

JNB, JAE salta si no está por abajo (encima o igual)

JBE, JNA salta si por abajo o igual (no encima)

JNBE, JA salta si no por abajo o igual (encima)

JL, JNGE salta si menor que (no mayor o igual)

JNL, JGE salta si no menor que (mayor o igual)

JLE, JNG salta si menor que o igual (no mayor)

JNLE, JG salta si no menor que o igual (mayor)

9.4 Instrucciones de Llamado y Retorno de Subrutinas.


Para que los programas resulten eficientes y legibles tanto en lenguaje ensamblador
como en lenguaje de alto nivel, resultan indispensables las subrutinas:

CALL llamada a subrutina

RET retorno al programa o subrutina que llamó

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

DAA ajuste decimal para la suma

b. Grupo de sustracción:

SUB resta

SBB resta con acarreo negativo

AAS ajuste ASCII para la resta

DAS ajuste decimal para la resta


c. Grupo de multiplicación:

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

CWD pasar palabra a doble palabra

NEG negación

f. Tratamiento de cadenas:

Permiten el movimiento, comparación o búsqueda rápida en bloques de datos:

MOVC transferir carácter de una cadena

MOVW transferir palabra de una cadena

CMPC comparar carácter de una cadena

CMPW comparar palabra de una cadena

SCAC buscar carácter de una cadena

SCAW buscar palabra de una cadena

LODC cargar carácter de una cadena

LODW cargar palabra de una cadena

STOC guardar carácter de una cadena

STOW guardar palabra de una cadena

REP repetir
CLD poner a 0 el indicador de dirección

STD poner a 1 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

9.7 Instrucciones de Desplazamiento, Rotación y Adeudos.


Básicamente permiten multiplicar y dividir por potencias de 2

SHL, SAL desplazar a la izquierda (desplazamiento aritmético)

SHR desplazar a la derecha

SAR desplazamiento aritmético a la derecha

ROL rotación a la izquierda

ROR rotación a la derecha

RCL rotación con acarreo a la izquierda

RCR rotación con acarreo a la derecha

CLC borrar acarreo

STC poner acarreo a 1

9.8 Instrucciones de Pila.


Una de las funciones de la pila del sistema es la de salvaguardar (conservar) datos (la
otra es la de salvaguardar las direcciones de retorno de las llamadas a subrutinas):

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

9.11 Instrucciones de Interrupción.


STI poner a 1 el indicador de interrupción

CLI borrar el indicador de interrupción

INT interrupción

INTO interrupción por capacidad excedida (desbordamiento)

IRET retorno de interrupción

Las instrucciones de transferencia condicional del control del programa se pueden


clasificar en 3 grupos:

1. Instrucciones usadas para comparar dos enteros sin signo:

a. JA o JNBE. Salta si está arriba o salta si no está abajo o si no es igual (jump


if above o jump if not below or equal) El salto se efectúa si la bandera ce CF = 0 o si la
bandera de ZF = 0

b. JAE o JNB. Salta si está arriba o es igual o salta si no está abajo (jump if above or


equal o jump if not below) El salto se efectúa si CF = 0.

c. JB o JNAE. Salta si está abajo o salta si no está arriba o si no es igual (jump if below


or equal o jump if not above or equal) El salto se efectúa si CF=1.

d. JBE o JNA. Salta si está abajo o si es igual o salta si no está arriba (jump if below or


equa o jump if not above) El salto se efectúa si CF = 1.

e. JE o JZ. Salta si es igual o salta si es cero (jump equal o jump if zero) El salto se


efectúa si ZF = 1 (también se aplica a comparaciones de enteros con signo)
f. JNE o JNZ. Salta si no es igual o salta si no es cero (jump if not equal o jump if not
zero) El salto se efectúa si ZF = 0 (también se aplica a comparaciones de enteros con
signo)

2. Instrucciones usadas para comparar dos enteros con signo:

a. JG o JNLE. Salta si es más grande o salta si no es menor o igual (jump if


greater o jump if not less or equal) El salto se efectúa si ZF = 0 oOF = SF.

b. JGE o JNL. Salta si es más grande o igual o salta si no es menor que (jump if


greater or equal o jump if not less) El salto se efectúa si SF = OF.

c. JL o JNGE. Salta si es menor que o salta si no es mayor o igual (jump if less o jump


if not greater or equal) El salto se efectúa si SF = OF.

d. JLE o JNG. Salta si es menor o igual o salta si no es más grande (jump if less or


equal o jump if not greater) El salto se efectúa si ZF = 1 o SF = OF.

3. Instrucciones usadas según el estado de banderas:

a. JC Salta si hay acarreo (jump if carry) El salto se efectúa si CF = 1.

b. JNC Salta si no hay acarreo (jump if not carry) El salto se efectúa si CF = 0.

c. JNO Salta si no hay desbordamiento (jump if not overflow) El salto se efectúa


si OF = 0.

d. JNP o JPO Salta si no hay paridad o salta si la paridad en non. El salto se efectúa


si PF= 0.

e. JNS Salta si el signo está apagado (jump if not sign) El salto se efectúa si SF = 0.

f. JO Salta si hay desbordamiento El salto se efectúa si OF= 1.

g. JP o JPE Salta si hay paridad o salta si la paridad es par (jump if parity o jump if


parity even) El salto se efectúa si PF = 1.

h. JS Salta si el signo está prendido El salto se efectúa si SF = 1.

10.- LENGUAJE DE MAQUINA, MACROENSANBLADOR DEL 8088


El lenguaje de máquina está compuesto por una serie de instrucciones,  que son las
únicas que pueden ser  reconocidas y ejecutadas por el microprocesador. Este
lenguaje es un conjunto de números que  representan las operaciones que realiza el
microprocesador a través de su circuitería interna. Estas instrucciones, por decirlo así,
están grabadas o "alambradas" en el hardware y no pueden ser cambiadas. El nivel
más bajo al que podemos aspirar a llegar en el control de un microprocesador es
precisamente el del lenguaje de máquina.

    Ahora bien, siendo el lenguaje de máquina un conjunto de números, ¿cómo es capaz


el microprocesador de saber cuándo un número representa una instrucción y cuándo
un dato? El secreto de esto reside en la dirección de inicio de un programa y en
el estado del microprocesador. La dirección de inicio nos indica en qué localidad de
memoria comienza un programa, y en consecuencia  que datos deberemos considerar
como instrucciones. El estado del microprocesador nos permite saber cuándo éste
espera una instrucción y cuándo éste espera un dato.

Obviamente, el lenguaje de máquina de un microprocesador  no puede ser ejecutado


por otro microprocesador de arquitectura distinta, a menos que  haya cierto tipo de
compatibilidad prevista. Por ejemplo, un 80486 es capaz de ejecutar lenguaje de
máquina propio y soporta el código generado para microprocesadores anteriores de la
misma serie (desde un 8086 hasta un 80386). Por otra parte, un PowerPC es capaz de
ejecutar instrucciones de los microprocesadores Motorola 68xxx y de los Intel
80xx/80x86. En ambos casos, el diseño de los microprocesadores se hizo tratando de
mantener cierto nivel de compatibilidad con los desarrollados anteriormente. En el
segundo caso, este nivel de compatibilidad se extendió a los de otra marca. Sin
embargo, un 8088 no puede ejecutar código de un 80186 o superiores, ya que los
procesadores más avanzados poseen juegos de instrucciones y registros nuevos no
contenidos por un 8088. Un caso similar es la serie 68xxx, pero de ninguna manera
podemos esperar que un Intel ejecute código de un Motorola y viceversa. Y esto no
tiene nada que ver con la compañía, ya que Intel desarrolla otros tipos de
microprocesadores como el 80860 y el iWARP, los cuales no pueden compartir código
ni entre ellos ni entre los 80xx/80xxx.

 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.

Lenguaje de máquina es el sistema de códigos directamente interpretable por un


circuito microprogramable, como el microprocesador de una computadora o
el microcontrolador de un autómata. Este lenguaje está compuesto por un conjunto de
instrucciones que determinan acciones a ser tomadas por la máquina.
Un programa consiste en una cadena de estas instrucciones de lenguaje de máquina
(más los datos). Estas instrucciones son normalmente ejecutadas en secuencia, con
eventuales cambios de flujo causados por el propio programa o eventos externos. El
lenguaje de máquina es específico de cada máquina o arquitectura de la máquina,
aunque el conjunto de instrucciones disponibles pueda ser similar entre ellas.

Los circuitos microprogramables son sistemas digitales, lo que significa que trabajan


con dos únicos niveles de tensión. Dichos niveles, por abstracción, se simbolizan con el
cero, 0, y el uno, 1, por eso el lenguaje de máquina sólo utiliza dichos signos. Esto
permite el empleo de las teorías del álgebra booleana y del sistema binario en el diseño
de este tipo de circuitos y en su programación.

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.

11.- DEBUGER Y SIMULADORES DEL 8088


Usamos el DEBUG para ejecutar el programa en lenguaje de máquina
DEBUG.EXE (o DEBUG.COM) es un programa DOS que permite a los programas de
16 bits que se ejecute una instrucción a la vez con pausas para buscar en los registros
y la memoria.

Ejecutarlo desde la línea de comandos MS-DOS como:

DEBUG name.EXE

Donde nombre es el nombre del archivo ejecutable.

DEBUG tiene una interfaz de usuario de línea de comandos.

Cada línea comienza con una letra clave posiblemente seguida de otra información.

Todos los números están en hexadecimal.

Por lo general, puede omitir los espacios en blanco - a veces es necesario hacerlo.

El "mini-lenguaje ensamblador" en adelante sólo entiende un código op y números


hexadecimales y registrar los nombres - que no entiende las etiquetas del programa.

A continuación se muestra un resumen de comandos. Las piezas que comienzan


con / / son las explicaciones no parte de los comandos. La notación xxxx representa un
número hexadecimal arbitrario (podría ser menos dígitos).

q / / quit DEBUG

r / / buscar en los registros y la siguiente instrucción a ser ejecutada

/ u / o desmontaje del lenguaje de máquina de nuevo en asamblea. 

Sin embargo, note:No hay etiquetas de dirección.Se dan las direcciones en


hexadecimal.

u xxxx / / desmonte a partir de la dirección xxxx

d xxxx / / volcado de memoria en formato hexadecimal y ASCII a partir de la dirección


xxxx

t / / Ejecutar una sola instrucción

p / / Trace través de una llamada procedimiento o instrucción int.

g xxxx / / Ejecutar las instrucciones hasta que llegue a la instrucción en la dirección


xxxx. Si la ejecución falla que las instrucciones de su programa puede salirse de
control.
g / / Ejecuta el programa hasta que sale (o nunca). Los valores de registro se muestran
no son los que dan al final de la ejecución de su programa.

r nn / / Donde nn es un nombre de registro. Muestra el valor actual del registro y luego


a: Puede escribir un nuevo valor para el registro y, a continuación, presione
ENTRAR. O simplemente se presiona Enter para salir del valor anterior sin cambios.

a / xxxx / Empieza a traducir las líneas de lenguaje ensamblador en ML y poner la


instrucción ML por primera vez en la dirección xxxx. Las líneas siguientes de AL irán a
las direcciones de la máquina posterior. Al pulsar Intro en una línea vacía AL saldrá de
este "mini-ensamblador modo".

e xxxx / / Inicia el examen de bytes individuales a partir de la uno a la dirección xxxx. Si


escribe un espacio que pasa a la siguiente byte. Si escribe un número hexadecimal, se
cambia el byte de edad en lo que ha escrito. Si se pulsa enter, sale este "examinar" el
modo.

NSSS / / ¿Dónde sss es uno o más caracteres ASCII dando un nombre de


archivo. Este sss registros como el nombre de archivo predeterminado .

l / / Esta es la carta de ell, NO la de un dígito. Esto carga el archivo con el nombre de


archivo predeterminado en la memoria. Si se trata de un archivo. Exe, que se carga
correctamente y establece las SS, CS e IP para el inicio del programa.

w / / Graba la memoria en el archivo con el nombre de archivo predeterminado . El


número de bytes escritos está dada por la división de entero de 32 bits entre los
registros BX y CX. BX es el más alto en 15 bits, CX es el más bajo en 15 bits. Esto
presenta problemas para crear un programa ejecutable.. Se puede utilizar para crear un
programa. Com.
Utilizando el emulador de un microprocesador 
Si desea cargar el código en el emulador, haga clic en Emular   . 
Pero también se puede utilizar para cargar ejecutables emulador incluso si usted no
tiene el código fuente original. Seleccione Mostrar emulador desde el menú del
emulador. 

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

También podría gustarte