Tarea1 - PC XT Flores - Lopez - Mendoza
Tarea1 - PC XT Flores - Lopez - Mendoza
Tarea1 - PC XT Flores - Lopez - Mendoza
Turno: B
Título de la Práctica: PC XT
Número de Práctica: 1
Apellidos y Nombres:
Funcionamiento en general 4
8. Modos de direccionamiento 14
Bibliografía 23
3
usando tarjetas de expansión. La segunda revisión de la placa, introducida en 1986, podía
admitir los 640kB enteros en la placa base (en dos bloques de chips de 256kb y dos bloques
de 64kB). Las placas más recientes podían ser adaptadas para las "últimas" especificaciones
después de un par de modificaciones menores. La segunda revisión de la placa tenía además
un IBM BIOS revisado, que incluía soporte para el teclado expandido y reducía el tiempo de
arranque a la mitad.
Los últimos XTs venían con unidades de disquetes de media altura instaladas de fábrica, así
como con la opción para un disco duro de 20MB y para el teclado "expandido". Sin embargo,
en 1985, algunas unidades fueron manufacturadas con solo dos disqueteras de tamaño
completo y sin disco duro.
3. Funcionamiento en general
El 8086 y el 8088 tienen internamente dos componentes, la Unidad de Interfaz del Bus y la
Unidad de ejecución (Bus Interface Unit (BIU) y Execution Unit (EU)).
La Unidad de Ejecución procesa las instrucciones del CPU. Está conformada por los registros
generales, los registros índices y apuntadores, los flags, la unidad aritmética lógica, y la lógica
de control que maneja todo el proceso para ejecutar las instrucciones.
La Unidad de Interfaz del Bus maneja la lectura y escritura desde y hacia la memoria y los
puertos de entrada/salida. Está conformada por los registros de segmento, una cola de 4 bytes
4
para instrucciones en el 8088 y de 6 en el 8086, y lógica para controlar los buses externos del
microprocesador.
La Unidad de Ejecución y la Unidad de Interfaz del Bus están interconectadas mediante un
bus interno.
Al ser inicializado el microprocesador, lo primero que hace es generar la dirección de
memoria 0000h, para el ROM BIOS. Luego activa el pin ALE, para que el los bits bajos de la
dirección (AD0-AD7) queden almacenados en el circuito de Báscula Cerrojo. Luego de ello,
activa el pin RD, con lo que recibe el dato correspondiente al código de operación de la
primera instrucción almacenada el ROM BIOS a través de sus líneas de datos (con ello se
explica la necesidad del circuito báscula cerrojo). Una vez recibido este primer dato, el
microprocesador busca en su tabla de códigos, a qué operación se refiere y según ello, puede
generar una nueva dirección al siguiente dato para completar su operación. Este ciclo se repite
siempre, la variación puede estar en que el periférico direccionado, puede ser ROM, RAM o
un periférico.
En caso que el microprocesador desee escribir en la memoria, se genera primero la dirección,
como en el caso anterior, sólo que esta vez se ponen los datos en el bus de datos y luego se
activa el pin WR.
5
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
6
Los 40 pines del 8088 en modo mínimo tienen las siguientes funciones:
1. GND (Masa)
2. A14 (Bus de direcciones)
3. A13 (Bus de direcciones)
4. A12 (Bus de direcciones)
5. A11 (Bus de direcciones)
6. A10 (Bus de direcciones)
7. A9 (Bus de direcciones)
8. A8 (Bus de direcciones)
9. AD7 (Bus de direcciones y datos)
10. AD6 (Bus de direcciones y datos)
11. AD5 (Bus de direcciones y datos)
12. AD4 (Bus de direcciones y datos)
13. AD3 (Bus de direcciones y datos)
14. AD2 (Bus de direcciones y datos)
15. AD1 (Bus de direcciones y datos)
16. AD0 (Bus de direcciones y datos)
17. NMI (Entrada de interrupción no enmascarable)
18. INTR (Entrada de interrupción enmascarable)
19. CLK (Entrada de reloj generada por el 8284)
20. GND (Masa)
21. RESET (Para inicializar el 8088)
22. READY (Para sincronizar periféricos y memorias lentas)
23. /TEST
24. /INTA (El 8088 indica que reconoció la interrupción)
7
25. ALE (Cuando está uno indica que salen direcciones por AD, en caso contrario, es el bus de datos)
26. /DEN (Data enable: cuando vale cero debe habilitar los transceptores 8286 y 8287 (se conecta al
pin de "output enable"), esto sirve para que no se mezclen los datos y las direcciones).
27. DT/R (Data transmit/receive: se conecta al pin de dirección de los chips recién indicados).
28. IO/M (Si vale 1: operaciones con ports, si vale 0: operaciones con la memoria)
29. /WR (Cuando vale cero hay una escritura)
30. HLDA (Hold Acknowledge: el 8088 reconoce el HOLD)
31. HOLD (Indica que otro integrado quiere adueñarse del control de los buses, generalmente se usa
para DMA o acceso directo a memoria).
32. /RD (Cuando vale cero hay una lectura)
33. MN/MX (Cuando esta entrada está en estado alto, el 8088 está en modo mínimo, en caso contrario
está en modo máximo)
34. /SSO (Junto con IO/M y DT/R esta salida sirve para determinar estados del 8088)
35. A19/S6 (Bus de direcciones/bit de estado)
36. A18/S5 (Bus de direcciones/bit de estado)
37. A17/S4 (Bus de direcciones/bit de estado)
38. A16/S3 (Bus de direcciones/bit de estado)
39. A15 (Bus de direcciones)
40. Vcc (+5V)
8
6. Muestra de una mainboard XT con identificación de dispositivos
9
10
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 ampliado 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 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.
11
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:
Registro 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)
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
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
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
Registros Índice
Los registros SI y DI están disponibles para direccionamiento indexado y para operaciones de cadenas
de caracteres.
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.
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.
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.
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.
Registro BP: El apuntador base de 16 bits facilita la referencia de parámetros dentro de la pila.
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.
- - - - OF DF IF TF SF ZF - AF - PF - CF
12
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.
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.
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.
Registro 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.
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.
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
13
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.
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.
8. Modos de direccionamiento
En el 8086/8088, los parámetros (operadores) de una instrucción pueden ser de tres tipos:
● registros internos de la CPU
● valores inmediatos
● 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.
★ Registros internos: el origen y destino de la operación son los registros internos de la CPU.
★ Valores inmediatos: en este modo, el origen de los datos (y sólo el origen) es un valor
numérico.
★ Valores de memoria: Hay cinco modos de acceso a memoria:
14
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.
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.
Modo directo indexado: Idéntico al anterior pero usando como registro de desplazamiento el
registro SI o el DI.
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.
➔ 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
➢ Base. Un registro base (BX o BP) tienen la dirección de donde se tomará el dato. Ej. MOV
AX, [BX]
➢ Índice. Un registro índice (SI o SI) tienen la dirección de donde se tomará el dato. Ej. MOV
AX, [SI]
➢ 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]
➢ Í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]
➢ 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]
➢ 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]
15
segmentación.
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)
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
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)
16
JNB, JAE salta si no está por debajo (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)
17
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
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
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
18
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 equal
to 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.
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.
19
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.
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 pseudooperaciones (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.
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
20
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.
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.
Sin embargo, note:No hay etiquetas de dirección.Se dan las direcciones en hexadecimal.
21
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.
22
Bibliografía
● Intel, Datasheet 8088 8-bit Hmos Microprocessor 8088/8088-2 , agosto 1990, pag 1-7.
● Lenguaje Ensamblador de los 80XX
● IBM, Technical Reference Pc xt 8088 User Guide, Section Hardware
● Ibm at technical reference. - 1984. 600 páginas.
23