You are on page 1of 65

INDICE

INTRODUCCIN
ESTRUCTURA BASICA DE LAS COMPUTADORAS
1. CPU
2. UNIDAD DE ALMACENAMIENTO PRINCIPAL
3. DISPOSITIVOS DE ENTRADA Y SALIDA
4. BUSES
MICROPROCESADOR HMOS 8088
ESTRUCTURA DE LA PC XT

1
2
2
2
3
4
6

2.1.-MICROPROCESADOR HMOS 8088


2.1.1.- DESCRIPCIN
2.1.2.- LNEAS COMUNES AL MODO MXIMO Y MNIMO
2.1.3.- LNEAS EXCLUSIVAS DEL MODO MNIMO DEL 8088
2.1.4.- LNEAS EXCLUSIVAS DEL MODO MXIMO DEL 8088
2.1.5.- REGISTROS DE USO GENERAL DEL 8086/8088
FUNCIONAMIENTO GENERAL DEL PC-XT
1.- PROCESADOR CENTRAL 8088 Y CHIPSET
2.- MEMORIA DE UN 8088
2.1.-SECCION DE LA MEMORIA ROM
2.2.-SECCION DE MEMORIA RAM
2.3.- ROM BIOS
3.- TAMAOS Y TIEMPOS DE EJECUCIN DE LAS INSTRUCCIONES
4.-SECCION DE CONTROL DE PERIFRICOS
4.1.- CONTADOR TEMPORIZADOR PTI 8253
4.2.- ADAPTADOR DE PERIFRICOS PARALELO, PPI 8255
4.3.- DECODIFICADOR DEL MAPA DE E/S
4.4.- ADAPTADOR DE TECLADO
4.5.- MICRORUPTORES PARA LA CONFIGURACION DEL SIS
4.6.- SECCION DMA
5.-SECCION DE EXPANSIONES
6.-SECCION DE CONTROL EXTERNO
7.-SECCIN DE FUENTE DE ALIMENTACIN
PERIFRICOS
4.1.-EL TECLADO
4.2.-SONIDO
4.3.- VIDEO
4.4.- IMPRESORAS
4.5.-DISCO RIGIDO
4.6.-CINTAS PARA BACKUP
4.7.- DISKETTES
4.8.- MODEM
5.- PUERTOS
6.- APLICACIONES GENERALES DE LA FAMILIA 8088
7.-ESQUEMATICOS DE SISTEMAS PC-XT.
PENTIUM IV
MICROCONTROLADORES
BIBLIOGRAFA

10
11
11
12
12
13
14
14
16
19
19
21
39
46
46
47

48
48
49
49
50
52
52
54
55
55
56
56
57
57
57
57
58
59
60
61
66
78

1.- INTRODUCCIN
El cambio de estrategia de IBM, a principios de la dcada de los 80s, incorporndose al campo
de los microcomputadores personales, mediante la comercializacin del modelo PC, supuso un
acceso al pblico en general a sistemas lgicos tpicos de grandes sistemas.
El corazn del PC-XT es el microprocesador 8088, que acta como CPU (unidad central de
proceso por sus siglas en ingles Central Processing Unit)
El procesador Intel 8088, elegido por IBM para su primer modelo de PC era una versin
"simplificada" de un procesador ms potente, el 8086, que tena registros y bus de datos de 16
bits. Sin embargo, se eligi el 8088, con registros de 16 bits, pero bus de datos de 8 (el de
direcciones es de 20 bits), coincidente con el bus de datos la placa-base, que era tambin de 8
bits, por razones de simplificacin y economa. No solo el ancho del bus, otros muchos detalles
de diseo han hecho especular largamente acerca de que nadie en IBM pareca tener mucha fe
en el futuro del recin nacido.
Los fits horizontales del system board sistema mnimo estn en la base de la unidad del
sistema y son aproximadamente 8-1/2 a 12 pulgadas. Es una singular multicapa por canal en
planos de diseo, con tierra o ground provista.
La fuente DC y sus seales entran a travs de un par de conectores de 16 pines. Otros
conectores en el board son para el teclado y el speaker. Hay ocho grupos (sockets) o tarjetas
de 62 pi nes montadas en la placa (board).
El canal de I/O es direccionado a travs de esos 8 slots, J8 es ligeramente diferente de los
otros.
El Dip Switch de 8 canales montado puede configurarse para leer un programa de control. Este
provee la informacin del software al manipular las operaciones en el modo deseado con los
switches.
El sistema mnimo consiste de 5 reas funcionales:
El subsistema procesador y los elementos de soporte, la ROM, la memoria de (R/W)
adaptadores de I/O y el canal de I/O.
El corazn del sistema es el MP8088, este es una versin de 8 bits (bus externo) de Intel de
16 bits, el software es compatible con el 8086 que tiene operaciones de 16 bits incluyendo
multiplicacin y divisin y 20 bits direccionables (1Mb de almacenaje).
El procesador opera a 4.77 Mhz, esta frecuencia 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 seal
requerida para los televisores de color).

Los 4.77 Mhz del reloj, los ciclos del bus del 8088 son cuatro relojes de 210 ns 840 ns, los
ciclos de I/O toman 5*210 ns 1.05 us.
El procesador es respaldado por el set de funciones provistas por cuatro canales de 20 bits de
acceso directo a memoria (DMA), tres grupos de canales del Timer de 16 bits y ocho niveles de
interrupciones.
Tres de los cuatro canales de DMA estn disponibles en el bus de I/O y hay una alta velocidad
para transferencia de datos entre las memorias y los canales de I/O sin intervencin de la
memoria del procesador.
El cuarto canal es programado para refrescar el sistema dinmico de memoria, esto esta hecho
para el programa del Timer-contador e informe peridicamente de la transferencia DMA.
La accin anterior crea un ciclo de lectura de la memoria disponible para el refresco del
almacenaje (both) en el sistema y en los slots de expansin.
Todos los datos del DMA excepto el canal de refresco toman 5 ciclos de reloj 1.05 s; si una
lnea de la lectura del procesador no esta deshabilitada. Los ciclos de refresco de DMA toman
4 ciclos 840 ns. El tercer Timer programable es usado como se muestra.
El canal cero es usado en un propsito general del Timer provee un tiempo base constante para
implementar el time-of-delay. El canal uno es usado para el tiempo de pregunta y refresco del
ciclo de DMA; el canal 2 es usado para el respaldo de la generacin de tonos de audio del
speaker. El otro canal tiene un tiempo mnimo de resolucin de 1.05 us.
De las ocho interrupciones, 6 son direccionadas a los slots de expansin para el uso de las
tarjetas, dos son usadas en el sistema mnimo. Las mas altas prioridades estn en el nivel cero
del Timer-contador y proveen interrupciones peridicas. El nivel uno esta asignado al teclado,
circuitos y receptores de interrupcin para otros cdigos; la interrupcin no enmascarable del
8088 es usada para el reporte de errores de paridad de la memoria.
El sistema mnimo esta respaldado por la ROM y memoria R/W, tiene un espacio de 64 Kbits
por 8 de ROM o de EPROM. Dos sockets (mdulos) de los provistos pueden aceptar artificios
de 32K 8K. Un socket tiene 32K por 8 de ROM, el otro tiene 8K por 8 bits. La ROM contiene
el power-on-self-test, I/O drivers de patrones para 128 caracteres en el modo grafico y un
cargador bootstrap de diskette. La ROM es un encapsulado (modulo) de 28 pines y tiene un
tiempo de acceso y un ciclo de 250 ns.
El system board tambin tuvo 128K por 9 a 256K por 9 de memoria de lectura/escritura. Un
sistema mnimo tendra 128K de memoria con mdulos (sockets ) para un adicional de 128K.
Una gran memoria de un mximo del sistema mnimo de 256K es obtenida por adicin de
tarjetas de memoria en los slots de expansin. La memoria consiste de 64K dinmicos por un
chip por un tiempo de acceso de 200 ns y un tiempo de ciclo de 345 ns. Toda la memoria de
lectura/escritura es de paridad chequeada.
El system board contiene un adaptador para circuitos para juntar una interface serial desde el
teclado. Esos circuitos generan una interrupcin al procesador cuando se completa la bsqueda
del cdigo o es recepcionado. Esta interface puede preguntar la ejecucin del diagnostico
(test) en el teclado. La interface del teclado es un conector DIN de 5 pines en la placa que se
extiende a travs del panel de la unidad.

Fabricantes del 8086/8088

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 (matemtico) 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 diseo,
fabricacin 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 mayora de ventas son a otras empresas, las cuales usan estos
chips en aparatos electrnicos, diseados, fabricados y comercializados por ellas mismas. A
estas empresas se las llama "fabricantes de equipo original", o en ingls, 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 prdidas por millones de dlares. Adems 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 estndares.
De esta manera la empresa Intel haba desarrollado una serie completa de software que se
ejecutaba en una microcomputadora basada en el 8085 llamada "Intellec Microcomputer
Development System". Los programas incluan ensambladores cruzados (stos son programas
que se ejecutan en un microprocesador y generan cdigo de mquina que se ejecuta en otro),
compiladores de PL/M, Fortran y Pascal y varios programas de ayuda. Adems haba un
programa traductor llamado CON V86 que converta cdigo fuente 8080/8085 a cdigo fuente
8086/8088. Si se observan de cerca ambos conjuntos de instrucciones, queda claro que la
transformacin 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 ms
largo (en cantidad de bytes) y a veces ms lento de correr que en su antecesor 8085. Este
programa de conversin slo serva para no tener que volver a escribir los programas en una
primera etapa. Luego debera reescribirse el cdigo fuente en assembler para poder obtener
las ventajas de velocidad ofrecidas por el 8088. Luego deba 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 (tambin de California) desarroll una
placa donde estaban el 8085 y el 8088, donde se utilizaba un ensamblador cruzado provisto
por la compaa Microsoft. Bajo control de software, podan conmutarse los
microprocesadores. El sistema operativo utilizado era el CP/M (de Digital Research).

El desarrollo ms notable para la familia 8086/8088 fue la eleccin 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 ms
correcto: "Computadora Personal IBM", con un precio inicial entre 1260 dlares y 3830 dlares
segn la configuracin (con 48KB de memoria RAM y una unidad de discos flexibles con
capacidad de 160KB costaba 2235 dlares). Esta computadora entr en competencia directa
con las ofrecidas por Apple (basado en el 6502) y por Radio Shack (basado en el Z-80).

2.- ESTRUCTURA DE LA PC XT
La estructura fsica fundamental del los microcomputadores personales PC, consta de 3
elementos:
-

Monitor
Teclado
Unidad central

En el interior del armario, chasis o case de la unidad central se aloja la fuente de alimentacin,
la placa madre (mainboard), las unidades de discos y las tarjetas de ampliacin necesarias para
el desarrollo del trabajo especifico al que se dedica la PC
En la figura siguiente se ofrece la organizacin general de la unidad central bsica, que esta
formada por una fuente de alimentacin que general 4 voltajes (+5v,-5v,+12 v y 12 v) y la
mainboard que soporta las siguientes secciones:
-

Procesador central
Oscilador o generador de las seales de reloj
4 canales de Acceso directo a memoria (DMA)
Memoria ROM
Memoria RAM
Controlador de interrupciones
Controlador de diskette
Controlador de altavoz
Controlador de teclado
Zcalos o ranuras para la expansin del sistema

Las ranuras de expansin, proporcionan las lneas de buses de la CPU a todo tipo de circuitos
que se alojan en ellas con diversas finalidades, entre las que destacan:
-

Ampliacin de memoria de la placa principal


Controlador de pantalla monocromo
Controlador de pantalla color / grficos
Controlador de discos flexibles o duros

Canal serie RS-232, propio de ciertos perifricos tal como el raton


Canal paralelo, propio de las impresoras

La configuracin mnima de la PC incluye 64 Kb de Ram, 40 k de ROM, en donde estn


grabados los programas bsicos para el funcionamiento del sistema, junto con las rutinas de
control de E/S (BIOS) y en ciertos casos el interprete del lenguaje BASIC; solo hay una
unidad de discos de 5 ; un monito monocromo de 12, con una resolucin de 25 filas por 80
columnas en modo texto y 640 x 200 en modo grafico y finalmente, un teclado independiente,
con 83 teclas.
En cuanto al software se incluye una versin del sistema operativo DOS y el lenguaje
interprete BASIC, grabado en la ROM.
La configuracin mnima indicada admite todo tipo de ampliaciones, como:
-

Memoria
Coprocesador matemtico 8087
Disco Duro

Pantallas de color y grficos


Impresoras
Otros sistemas operativos, como el CPM/86
Otros lenguajes (ensamblador,compiladores, BASIC, PASCAL, FORTRAN,COBOL,etc)

En la figura de la pagina siguiente se ofrece un primer esquema de introduccin al equipo fsico


del microcomputador para, a groso modo, ubicar los principales componentes del sistema.

La versin XT dispone de 8 zcalos para tarjetas de expansin y 8 micro ruptores para


configurar el sistema., tal como se apreci en la figura anterior.

En la figura a continuacin, se muestra el mapa de memoria del PC, que se halla dividido en dos
partes, una dedicada a la memoria principal y otra a las E/S.

2.1.-MICROPROCESADOR HMOS 8088


2.1.1.- Descripcin
Primer microprocesador de propsito general cuyas principales caractersticas son:
- Bus de datos de 8 bits.
- Arquitectura interna de 16 bits
- Capacidad de direccionamiento de memoria hasta 1 Mbyte.
- Compatibilidad de software con 8086
- Dos relojes para opresin: 5 Mhz para 8088, 8 Mhz para 8088-2.
- Operaciones a nivel de byte, palabra y bloque
- 24 modos de direccionamiento a memoria
El 8088 puede trabajar en dos modos: mnimo (pequeas aplicaciones) y mximo
(sistemas multiprocesador). Los requerimientos de conexin con el exterior cambian en
funcin del modo que se decida emplear, aunque una parte de las seales es comn en
ambos.

Consta de una unidad de ejecucin (EU: Execution Unit) y una unidad interfaz del bus
(BIU: Bus Interface Unit). La unidad de ejecucin es la encargada de realizar todas las
operaciones mientras que la unidad de interfaz del bus es la encargada de acceder a
datos e instrucciones del mundo exterior, como se aprecia en le diagrama de bloques
siguiente.
Hay tres clases de interrupcin: por hardware, por software e internas (a las dos
ltimas tambin se las llama "excepciones").

Estructura interna del 8088. Pines del IC 8088

2.1.2.- Lneas comunes al modo mximo y mnimo del 8088.

AD7..0:

Address Data Bus. Son lneas multiplexadas, que pueden actuar


como bus de datos o de direcciones, evidentemente en tiempos
distintos.

A15..8:

Address Bus. En todo momento almacenan la parte media del bus


de direcciones.

A19..16/
S6..3:

Address/Status. Parte alta del bus de direcciones, multiplexada:


cuando no salen direcciones, la lnea S5 indica el estado del
bandern de interrupciones; las lneas S4:S3 informan del
registro de segmento empleado para realizar el acceso a memoria:
00-ES, 01-SS, 10-CS, 11-DS; S6 no se usa.

-RD:

Read. Indica una lectura de memoria o de un dispositivo de


entrada/salida.

READY:

Ready. Lnea de entrada que indica el final de la operacin de


memoria o E/S.

INTR:

Interrupt Request. Lnea de peticin de interrupciones


enmascarables; el 8088 la observa peridicamente.

-TEST:

Test. En respuesta a la instruccin mquina WAIT (no TEST!), el


8088 se para a comprobar esta lnea hasta que se ponga a 0.

NMI:

Non-maskable Interrupt. Lnea de peticin de la interrupcin de


tipo 2, que no puede ser enmascarada.

RESET:

Provoca una inicializacin interna que culmina saltando a FFFF:0.

MN/MX:

Esta lnea indica si se trata de un sistema mnimo o mximo.

2.1.3.- Lneas exclusivas del modo mnimo del 8088


IO/-M:

Status Line. Indica si se trata de un acceso a memoria o a un puerto


de entrada/salida. No es vlida todo el tiempo (solo a ratos).

-wr:

Write. Indica una escritura en memoria o en un dispositivo de


entrada/salida (segn el estado de IO/-M).

-INTA:

Interrupt Acknowledge. Es la seal de reconocimiento


interrupcin (solicitada a travs de INTR o NMI).

ALE:

Address Latch Enable. Indica al exterior que las lneas de direccin


contienen una direccin vlida, con objeto de que la circuitera
externa la almacene en una pequea memoria (latch).

de

DT/-R:

Data Transmit/Receive. Seal necesaria para emplear un transceiver


8286/8287 en el bus, con objeto de controlar el flujo de datos a
travs del mismo (si se recibe/transmite).

-DEN:

Data Enable. Necesario tambin para emplear el transceiver: sirve


como entrada de habilitacin para el mismo.

HOLD:

Hold. Lnea de entrada para solicitar al 8088 que se desconecte de


los buses. Empleada por los controladores de DMA.

HLDA:

Hold Acknowledge. Lnea complementaria de HOLD: el 8088 enva


una seal de reconocimiento cuando se desconecta del bus.

-SS0:

Status Line. Lnea de apoyo que, junto con IO/-M y DT/-R, permite
determinar con precisin el estado del bus:

2.1.4.- Lneas exclusivas del modo mximo del 8088.


-RQ/GT0..1:

Request/Grant. Estas patillas bidireccionales permiten a los dems


procesadores conectados al bus forzar al 8088 a que libere el bus al
final del ciclo en curso.

-LOCK:

Lock. Lnea que sirve al 8088 para prohibir el acceso al bus a otros
procesadores (se activa tras la instruccin mquina LOCK y dura
mientras se ejecuta la siguiente instruccin -la que sigue a LOCK, que
es realmente un prefijo-). Tambin se activa automticamente en los
momentos crticos de un ciclo de interrupcin.

QS1/QS0:

Queue Status. Permite determinar el estado de la cola de instruc del


8088.

2.1.5.- Registros de uso general del 8086/8088


Para ayudar al funcionamiento de las instrucciones, para poder manejar variables en memoria y
para su propio funcionamiento, el microprocesador dispone de una serie de variables internas
de nombres fijos que son los registros internos. En total hay 14 de estos registros, como se
puede observar en la figura 1.3, cada uno de los cuales est pensado principalmente para alguna
funcin concreta.
A continuacin se detallan cada uno de estos registros, divididos segn reas de funcionalidad:
Registros de almacenamiento temporal
- AX (registro Acumulador): Este registro es usado, sobre todo, en operaciones aritmticas
como primer operando y tambin como registro de propsito general a disposicin del
programador.
- BX (registro Base): Se usa principalmente para indicar posiciones de memoria (offset).
- CX (registro Contador): Este registro se usa siempre que se necesite un contador en
operaciones repetitivas y bucles.

- DX (registro Dato): Se usa como registro auxiliar en operaciones aritmticas y como


contenedor de datos a la hora de usar instrucciones de comunicacin de puertos.
Estos cuatro registros, como todos los restantes, son de 16 bits, pero para permitir la
realizacin de operaciones de tipo byte (8 bits) cada uno de estos cuatro registros est
dividido en dos subregistros de 8 bits a los que se puede acceder de forma independiente
(como se observa en la figura 1.2) . As, por ejemplo, los 8 bits inferiores de AX se llaman AL
(L de low, bajo) y los 8 superiores AH (H de high, alto). En consecuencia, BX, CX y DX se
dividen en BH/BL, CH/CL y DH/DL respectivamente. De esta forma se tiene que todas las
instrucciones ensamblador pueden operar con datos de 8 y 16 bits segn lo que se precise. En
los dems registros esta subdivisin no es posible.
Registros de segmento
Son cuatro registros de 16 bits usados para indicar direcciones de memoria (los conceptos de
segmento y desplazamiento se explicarn en el apartado siguiente):
- CS (Code Segment): Este registro es usado por el procesador, junto con el registro IP, para
conocer dnde est la instruccin actual que est siendo ejecutada.
- DS (Data Segment): Se usa para indicar dnde estn todos los datos del programa en
ejecucin.
- SS (Stack Segment): En este registro se indica al procesador dnde est la zona de memoria
que se usa como segmento de pila.
- ES (Extra Segment): Es el registro que referencia al segmento extra, y se usa como
apuntador de memoria auxiliar en operaciones complejas donde se necesitan dos punteros de
datos simultneos.
Registros de la pila
La pila es un rea de memoria importante. Tiene, en vez de uno, dos registros que se usan como
desplazamiento (offset) para apuntar su contenido. Se usan como complemento al registro SS
y son:
- SP (Stack Pointer): Es el registro que se reserva el procesador para uso propio en
instrucciones de manipulacin de la pila.
- BP (Base Pointer): Se usa como registro auxiliar.
Registros ndices.
Se utilizan como desplazamientos complementarios para DS y ES a la hora de indicar la
posicin donde se encuentran los datos a los que se desea acceder. Son:
- SI (Source index): Se usa como puntero origen en operaciones de desplazamiento de datos
entre dos zonas de memoria.
- DI (Destination index). Se usa como destino en operaciones de desplazamiento de datos.
Registros de instruccin:
Slo hay uno, el registro IP ( Instruction Pointer), es usado por la CPU para conocer la posicin
relativa a la base CS donde se encuentra la instruccin que se est ejecutando actualmente.
Este registro no puede ser modificado directamente por parte del programador. Este puntero
cambia su contenido automticamente cada vez que se ejecuta una instruccin o cuando se
salta a otro punto del programa mediante una instruccin de salto.

Registro de Banderas:
Este registro es usado para tener el control de estado y control de las operaciones. La mayora
de sus 16 bits se utiliza para representar un estado concreto:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
CF -- PF -- AF -- ZF SF TF IF DF OF -- -- -- -.
- Bit 0 - CF (Carry Flag): Es la bandera de acarreo. Se pone a 1 cuando se produce un
resultado con acarreo tras una operacin aritmtica.
- Bit 1: No usado.
- Bit 2 - PF (Parity Flag): Cuando est a 1, indica que hay un nmero par de bits activos.
- Bit 3: No usado.
- Bit 4 - AF (Auxiliar Flag): Se usa como bandera auxiliar. Se pone a 1 cuando hay necesidad
de realizar ajustes tras una operacin de tipo BCD.
- Bit 5: No usado.
- Bit 6 - ZF (Zero Flag): Indica si se ha producido un resultado cero o una comparacin con
operadores iguales.
- Bit 7 - SF (Sign Flag): Indica si se ha producido un resultado negativo o comparacin menor.
- Bit 8 - TF (Trap Flag): Es la bandera de atrape, usada en procesos de depuracin de cdigo.
- Bit 9 - IF (Interrupt Flag): Si est a 1, indica que est permitida la generacin de
interrupciones hardware que generan algunos perifricos, como la que realiza el teclado cada
vez que una tecla es pulsada.
- Bit 10 - DF (Direction Flag): Indica a la CPU hacia donde se desplazan los punteros relativos
en operaciones repetitivas de cadenas de datos.
- Bit 11 - OF (Overflow Flag): Indica si se ha producido un desbordamiento aritmtico.
- Bit 12 al 15: No usados.

Figura. Estructura del registro de banderas


3.- FUNCIONAMIENTO GENERAL DEL PC-XT
Dada la complejidad del esquema completo de la placa principal del microcomputador XT, se
procede a su descripcin dividindolo en las siguientes secciones fundamentales:
3.1.- PROCESADOR CENTRAL 8088 Y CHIPSET
Este bloque acta como controlador general del sistema y esta basado en la CPU 8088,
trabajando a 8 Mhz. Se configura alrededor de 9 circuitos integrados, que son:
-CPU: microprocesador 8088
-Coprocesador matemtico 8087 (opcional)
-Generador de seales de reloj 8284
-Controlador de bus 8288
-Basculas de direcciones 74LS373 (2) y 74LS244
-Buffer bidireccional para los datos 74LS245
-Controlador de interrupciones 8259
El 8088 comparte con el coprocesador matemtico 8087 un bus local por el que pasan las
instrucciones que ha de ejecutar este ultimo, asi como los resultados que este produce y se
dirigen a la memoria.
El procesador de datos numrico aumenta el juego de instrucciones del 8086/8088 mejorando
su capacidad de tratamiento de nmeros. Se utiliza como procesador paralelo junto al 8088
aadiendo 8 registros de coma flotante de 80 bits as como instrucciones adicionales. Utiliza

su propia cola de instrucciones para controlar el flujo de instrucciones del 8088, ejecutando
slo aquellas instrucciones que le corresponden, e ignorando las destinadas a la CPU 8088. Las
instrucciones del 8087 incluyen un juego completo de funciones aritmticas as como un
potente ncleo de funciones exponenciales, logartmicas y trigonomtricas
Mediante las basculas de direcciones, el buffer de datos y el controlador de bus, se obtienen
los buses normalizados de datos, direcciones y control, que conforman el bus del sistema. El
controlador de interrupciones 8259 recibe las peticiones de interrupcin procedentes de los
perifricos y las gestiona, teniendo en cuenta las prioridades, transmitindoselas a la CPU
(linea INT).
El 8259 puede controlar hasta 8 interrupciones vectorizadas. Adems, a un 8259 se le pueden
conectar en cascada un mximo de 8 chips 8259 adicionales, lo que permite gestionar sistemas
con hasta 64 interrupciones
Cuando la CPU reconoce la interrupcin, enva la seal -INTA. Nada ms recibida la seal
-INTA de la CPU, el 8259 activa el bit correspondiente a la interrupcin de mayor prioridad (la
que va a ser procesada) La instruccin CALL provoca que la CPU enve dos pulsos -INTA. El
8259 utiliza estos dos pulsos -INTA para depositar en el bus de datos, sucesivamente, la parte
baja y alta de la direccin de memoria del ordenador de la rutina de servicio de la interrupcin
(16 bits).

Bloques que configuran a la seccin del procesador central, junto a los circuitos integrados que
se usan.

3.2.- MEMORIA DE UN 8088


La memoria RAM de un ordenador es utilizada para almacenar programas o datos con
los que el procesador trabaja. Todos los ordenadores necesitan memoria para almacenar
programas e informacin, as como para cargar y ejecutar los programas. Por lo general,
cuanto ms compleja es la tarea que se desea realizar, ms memoria necesita el ordenador.

Direccionamiento de la memoria
Todos los programas y datos se cargan en localidades de memoria especficas determinadas
por sus direcciones. Esa informacin es almacenada como una secuencia de bytes de manera
que cada uno de ellos tiene un nmero asociado correspondiente al lugar que ocupan. A ese
nmero se lo denomina direccin de memoria.
Dado que el 8086/8088 tiene una longitud de palabra de direcciones de 20-bits es
posible direccionar hasta 1.048.576 (= 210) localidades distintas de memoria, es decir,
podemos almacenar hasta 1Mbyte de informacin. Sin embargo, la CPU slo procesa palabras
de 16 bits en sus registros de direcciones, como ya se ha visto en los apartados anteriores, y
las direcciones de memoria son de 20 bits, por lo que una direccin no cabe en un registro.
Por lo tanto, en principio, tericamente slo se podra acceder hasta el byte nmero 65.535
(216, el nmero mayor posible de 16 bits) contando a partir del inicio, que es el byte 0.
Para solucionar este inconveniente, se ide el dividir la direccin de un byte en dos
partes, denominadas segmento (o Base) y desplazamiento (u offset), ambos de 16 bits.
Adoptada dicha medida, la direccin real de un byte en la memoria es:
Direccin real = Valor base x 16 + valor desplazamiento3
De esta forma, se pueden direccionar el milln de bytes y se tiene acceso a toda la
memoria del PC (a cada uno de los 1024 Kbytes).
La notacin ms empleada para indicar la direccin de un par segmento
desplazamiento consiste en separar esos dos valores con dos puntos, utilizando notacin
hexadecimal (por ejemplo: 123h:12h4, representa la direccin con segmento 123h y
desplazamiento 12h).
Esta forma de direccionar la memoria present un pequeo problema que ha
entorpecido la elaboracin de grandes programas, y no es otro que ste: como ya se ha visto se
accede a memoria dando un valor de segmento y otro de desplazamiento; pues bien, si se
mantiene el valor del segmento fijo (lo que ocurre en los programas) y se vara nicamente el
valor del desplazamiento slo es posible acceder a 65535 bytes (64 Kbytes), que es el valor
mximo alcanzable con los 16 bits del registro de desplazamiento. Con esto, la informacin
mxima que se puede almacenar en la memoria, modificando nicamente el desplazamiento, es
de 64 Kb. A esta cantidad de almacenamiento se le denomina segmento de memoria.
De este modo, un segmento es un rea continua de memoria que puede tener 64K-bytes,
que debe comenzar en una localidad de memoria cuya direccin sea lmite de 16 bytes
(cantidad denominada prrafo) y que puede solaparse con otros segmentos. As, por ejemplo, la
direccin AB00:0012, (es decir, 43776:8 con valores decimales), tiene la misma direccin real
que AB01:0002 (es decir, 43777:2 con valores decimales), pues ambas equivalen a la direccin
real 700.434 (valor que se obtiene al aplicar la frmula anterior).

Segmentos de memoria de un programa


Por lo general, los programas ejecutables disponen de cuatro segmentos (4 zonas de 64
Kbytes):
- El segmento de cdigo (tiene como base el contenido del registro CS). En este
segmento se encuentran las instrucciones que forman el programa. Para acceder a
los datos contenidos en l, se usa el registro IP como desplazamiento.
3 Para obtener 20 bits de direcciones a partir de dos registros de 16, lo que se hace es
desplazar uno de ellos (el segmento) 4 bits a la izquierda, aadiendo para ello 4 ceros por la
derecha (lo que equivale a multiplicar por 16). Se obtiene as un valor de 20 bits (16 iniciales +
4 ceros aadidos) que no es ms que la direccin de inicio del segmento. Para acceder a los
datos del segmento, habr que sumar una cantidad a esa direccin (dicha cantidad es el
desplazamiento). Es as como se obtiene la frmula en cuestin.
- El segmento de datos (que tiene como base el registro DS). Contiene los datos que utiliza el
programa (variables, etc.) Para acceder a los datos contenidos en l, se suele utilizar los
registros SI y DI como desplazamiento.
- El segmento de pila5 (con SS como base). En l se desarrolla la pila del programa, utilizada
para trasvases temporales de datos, llamadas a funciones, etc. Debe estar presente en todos
los programas EXE de forma obligada. Se utiliza el registro SP para acceder a los datos de
este segmento.
- El segmento extra (con ES como base). Su uso es opcional, y en l se encuentra un segmento
definido por el usuario y que, regularmente, contiene datos adicionales.
Al igual que ocurre con el segmento de datos, para acceder a los datos contenidos en l, se
suelen utilizar los registros SI y DI.
El hecho de que haya ms de un registro de segmento hace posible crear programas que
controlen varios bloques de memoria simultneos de hasta 64 Kbytes cada uno.
Mapa de Memoria
En los 8086/8088, el espacio de direcciones de 1 MB de memoria se encuentra divido en varias
reas funcionales, como se observa en la figura:

Parte del diseo del mapa de memoria del PC y PS/2 es consecuencia del diseo del
microprocesador 8086/8088. Por ejemplo, el 8086/8088 mantiene siempre una lista de
vectores de interrupcin (direcciones de las rutinas de gestin de interrupciones) en los
primeros 1024 bytes de RAM. De la misma forma, todos los ordenadores basados en el
8086/8088 tienen la memoria ROM en lo ms alto del megabyte de memoria, debido a
que,cuando el 8086/8088 se enciende, ejecuta el programa que comienza en la direccin
FFFF0h.
Los primeros 64 Kbytes contienen la memoria de acceso aleatorio (RAM). Parte de esta
memoria es utilizada por el DOS y el BIOS6 para retener los vectores de interrupcin y los
datos. Los siguientes 192 Kb estn reservados para aplicaciones adicionales del usuario.
El resto del mapa de memoria sigue la divisin general entre la RAM, en la parte baja, y la ROM
en la parte alta. Puede haber un mximo de 640 KB de RAM entre las direcciones 00000h y
9FFFFh. Los siguientes bloques de memoria se reservan para la RAM de vdeo (de A0000h a
BFFFFh), mdulos de ROM instalables (de C0000h a DFFFFh) y ROM permanente (de E0000h
a FFFFFh).

Divisiones de la memoria
Existen varias zonas de memoria RAM en los ordenadores personales:
Memoria Baja: Es la zona en la parte ms baja de la memoria base, en donde normalmente
se carga el sistema operativo y los controladores de dispositivos.
Memoria Convencional (llamada a veces memoria base) son los primeros 640 Kbytes de
memoria del ordenador e incluye a la memoria baja. En esta zona se carga el sistema operativo
y los programas de aplicacin y sus datos. Con el sistema operativo DOS, los programas de
aplicaciones se ejecutan slo en la memoria convencional. Esta limitacin se conoce a veces
como barrera de los 640 Kbytes. Las otras zonas de memoria se utilizan de forma limitada,
pero slo con ciertos tipos de hardware
Memoria superior: es toda la memoria direccionada entre los 640 Kbytes y el megabyte.
La memoria superior tiene un tamao de 384 Kbytes. Algunas secciones de la memoria superior
se reservan para ser utilizadas por diferentes partes del hardware del ordenador, como el
adaptador de vdeo o la ROM BIOS. El hardware del ordenador puede permitir la utilizacin de
algunos de los controladores de gestin de memoria del DOS (EMM386.SYS y HIDOS.SYS).
En este caso, se puede utilizar la memoria superior para cargar controladores de dispositivo
(como los necesarios para trabajar con un ratn o con una tarjeta de red) que habitualmente
se cargan en memoria convencional, dejando as un mayor espacio disponible para los programas
de aplicaciones. Es posible tambin mover a
la memoria superior el ncleo del sistema operativo principal.
6 BIOS = Basic Input Output System . Es un conjunto de rutinas bsicas grabadas que
permiten acceder y manipular los diferentes perifricos de entrada y salida conectados al
ordenador. Estas rutinas se encuentran almacenadas en memoria ROM (memoria no voltil).
Adems de sa , tiene como funcin la de iniciar las comprobaciones y cargas del sistema
operativo del
ordenador cuando ste se conecta.
3.2.1.-SECCION DE LA MEMORIA ROM

La seccin de memoria no voltil contiene integrados 2764 o 2932, de 8kb que guardan los
siguientes programas:
BIOS, encargado de guardar las rutinas de arranque del sistema y las que permiten el
funcionamiento con los perifricos comunes. Ocupa 8 Kb.
PROGRAMAS DE USUARIO, que pueden guardarse en IC 2764 y opcionalmente, colocarse en
un zcalo que existe pata este fin
Las posiciones de la ROM ocupan las direcciones mas altas del mapa de memoria.
Para seleccionar el chip ROM que se va a leer se emplea un decodificador de 3 a 8 (74LS138)
de cuyas 8 salidas, 6 se emplean para activar el pin /CS de seleccin de chip de c/u de las
memorias ROM
3.2.2.-SECCION DE MEMORIA RAM
Los Ics mas comunes son los 4164, de 64K bits. Tambin se emplean pastillas DRAM de mayor
capacidad, compatibles con el patillaje de la 4164.
Los 9 pines de cada fila trabajan en paralelo y cada 4164 proporciona o recibe un bit del bus de
datos, quedando el noveno bit destinado a la paridad de los otros 8. El bit de paridad se enva o
recibe desde el 74LS280, generador/ detector de paridad.
Las memorias dinmicas tienen como seales auxiliares: la /RAS (direccionamiento de fila de la
matriz) y /CAS (direccionamiento de columna).
Para controlar 64k celdas de 1 bit c/u, se necesitaran 16 lineas de direccionamiento, para
disminuir el numero de pines, se estructura la memoria en una matriz de 128 filas y 512
columnas, pudindose multiplexar con 8 lneas la informacin necesaria para determinar la fila
y la columna (/RAS y /CAS)
Esta memoria DRAM precisa un ciclo de refresco cada 4 ms, se controla mediante el contador
1 del PTI 8253, el cual genera una onda cuadrada de 2ms. Con cada flanco ascendente, se carga
un flop flop D , solicitando atencin al canal 0 del circuito de Acceso Directo a Memoria (DMA
8237) . Entonces el DMA inhabilita los tres decodificadores de la memoria y toma el control de
las buses del sistema . El DMA genera todas las combinaciones posibles por las lneas MA0MA6 que direccionan las 128 filas, sucesivamente, dando lugar al refresco de las celdas.
Existen 3 multiplexores 74LS158, con los que se multiplexan las direcciones XA0-XA17,
produciendo 8 lneas de direccionado que entran a las patillas del 4164. El multiplexado de las
filas se produce con la seal /RAS activa, y el de las columnas con /CAS activa.
Para decodificar el estado de las 4 lneas de mas peso del bus de direcciones (A16-A19) se usa
el circuito TBS24S10, cuyas salidas proporcionan la seal para la seleccin de la seccin DRAM
(/DRAMCS) y una serie de seales que se aplican a los decodificadores 74LS138 que generan
las seales /RAS y /CAS.
El tranceptor del bus de datos 74LS245 se encarga de aislar la DRAM del bus del sistema

3.2.3.- ROM BIOS


La mayora de personas piensa que el DOS es el que controla el IBM PC, y aunque bsicamente
esto es cierto, no tiene en cuenta la asistencia de la ROM BIOS de IBM (Basic Input/Output
System), sistema bsico de entrada / salida que realiza una gran parte del trabajo necesario
para el PC DOS. Muchas de las rutinas de utilidad que aparecen es este libro dependen de
llamadas al PC DOS o a la ROM BIOS. En ambos casos, estas llamadas se consiguen mediante
interrupciones software. En esta breve seccin se da un repaso al concepto de interrupcin
Software y a como se materializa este concepto mediante el procesador 8088.
Una interrupcin es una llamada de atencin a la CPU, indicndole que debe prestar cuidado a
algo ahora. Los mecanismos de interrupcin siempre han formado parte de los sistemas
microprocesadores. Hasta el desarrollo del 80886 y el 8088, todas las interrupciones se
realizaban mediante Hardware.
El funcionamiento de una interrupcin por hardware es el siguiente: una seal elctrica sobre
una patilla de chip de la CPU provoca que la lgica interna de ste circuito guarde el contador
de programas, los registros de indicadores y el registro de segmento de cdigo (CS). La CPU
queda entonces libre para prestar servicio a la peticin recibida desde el exterior ejecutando
una determinada seccin de cdigo independiente de la tarea que estaba llevando a cabo. Una
vez satisfecha la peticin de servicio, la CPU recupera los registros grabados y continua con la
tarea que haba dejado suspendida como si nada hubiera pasado.

Con la arquitectura de la familia 8086, Intel present el concepto de interrupcin por


software. Este tipo de interrupciones funciona exactamente igual que las interrupciones por
hardware. Excepto en que la condicin que dispara la peticin es una instruccin mquina
(software) en vez de una seal elctrica sobre un corrector de la CPU (Hardware).
Exista un cierto numero de razones para adoptar esta filosofa. Ya que la nica diferencia es
de las interrupciones por hardware y por software es la forma mediante la que se dispara la
peticin, es posible comprar el servicio prestado por una interrupcin hardware antes de
disponer del hardware que provoca dicha interrupcin, utilizando software para simular el
dispositivo hardware externo del que se carece.
Una utilizacin mucho ms importante de las interrupciones software consiste en el diseo de
un mecanismo de puntos de entrada estndar para un sistema software. Cuando se produce
cualquier tipo de interrupcin, la CPU guarda primero los registros esenciales y despus realiza
un gran salto a la posicin de la rutina de servicio de la interrupcin, que se encuentra en
alguna parte de la memoria.
La forma en que la CPU localiza esta rutina de servicio de la interrupcin es crtica. Las 256
interrupciones de 8088 estn numeradas, del 0 al 255. Cuando se produce una interrupcin, la
CPU debe recibir de alguna forma el nmero de la interrupcin requerida. Para interrupciones
hardware, ste nmero procede de un circuito externo a la CPU: el controlador de prioridad
de interrupcin software, el nmero de interrupcin que provoca la interrupcin. Por ejemplo:
la instruccin del 8088 disparar la interrupcin software nmero $21.
Los primeros 1024 bytes del mapa de memoria del 8088 estn reservados para los vectores
de interrupcin. Vectores que en este caso son punteros, precisamente son los que ocupan
estos 1024 bytes de memoria. Cada una de las 256 interrupciones diferentes tiene su propia
regin de 4 bytes dentro de ese bloque de memoria (256x4=1024). Esta regin de cuatro
bytes contiene un puntero de 32 bits a la primera instruccin de la rutina de servicio de la
interrupcin.
Los primeros 4 bytes del mapa de memoria del 8088 contienen el vector de la interrupcin 0.
Los siguientes 4 bytes contienen el vector interrupcin 1 y as sucesivamente hasta llegar a
255. Evidentemente si la CPU conoce el nmero de la interrupcin, puede multiplicarlo por
cuatro para saber inmediatamente la direccin de servicio de cualquier interrupcin que se
produzca. Los dos primeros bytes del vector de interrupcin forman el valor del contador de
programa para el comienzo de la rutina de servicio y los dos segundos bytes son el valor del
segmento de cdigo en el que se encuentra dicha rutina de servicio. La CPU solamente necesita
cargar el valor del segmento de cdigo en el registro CS y el valor del contador de programa en
el registro correspondiente para poder empezar a ejecutar la rutina de servicio.
El hecho importante aqu es que el cdigo que pretenda utilizar una interrupcin software como
rutina de servicio no necesita conocer en que parte de la memoria se encuentra dicha rutina.
Solamente necesita el nmero de interrupcin. De hecho, la posicin real de la rutina de
servicio puede cambiar a lo largo del tiempo, cuando sea modificada o ampliada. Mientras el

cdigo de iniciacin del ordenador grabe los vectores de interrupcin correctos en las 1024
posiciones ms bajas de la memoria, las rutinas de servicio soportadas por interrupciones
software pueden ser utilizadas por los programas de aplicacin desde cualquier punto rpida y
fcilmente.
Esta es la filosofa de la ROM BIOS del IBM PC. El BIOS es una coleccin de rutinas de
servicio soportadas por interrupciones software grabadas en una ROM (Read Only Memory)
en la parte superior del espacio de direccionamiento de memoria del 8088. Los nmeros de
interrupcin se asignan de acuerdo a la funcin general realizada por la rutina de servicio de la
interrupcin. Por ejemplo, la interrupcin 166 ($10) controla los servicios de video del PC. La
interrupcin 22 ($16) controla el acceso al teclado.
No todas las interrupciones software estn reservadas para su utilizacin por parte de la ROM
BIOS. EL PC BIOS. EL PC DOS emplea unas pocas y la mayora de ellas no las utiliza el
sistema. El controlador de ratn de Microsoft hace uso de una interrupcin software. De
hecho, la mayora de los programas de gestin de perifricos las utilizan. El IBM PC, tal y
como se le conoce habra sido imposible sin ellas.

Arranque del Sistema

Secuencia de Arranque del Procesador


Despus de encender o resetear el PC, ste inicializa los bits necesarios de la cache, los
buffers y los registros a un valor conocido. El procesador arranca en Modo-Real (ver [1] ). Se
inicializan los registros EIP a 0000FFF0h y CS a F000h, lo que hace apuntar a una direccin
base FFFF0000h.
De esta forma se comienza a ejecutar en la direccin FFFFFFF0h, a 16 bytes del lmite de la
memoria fsica, en una EPROM. La EPROM est normalmente localizada en una direccin fsica
mucho menor, pero se 'mapea' a una direccin mucho mayor por el chipset del sistema
(por ejemplo el Intel 430HX).
Normalmente, en un PC, esta EPROM inicializa una IDT (Interrupt Descriptor Table) del
Modo-Real, y salta a la rutina de la BIOS. Entonces comienza lo que denominamos secuencia de
arranque:
La BIOS realiza el POST (Power On Self Test), consistente en la inicializacin
comprobacin del hardware. Luego inicializa sus datos:
o
o

Tabla de interrupciones BIOS ( 10h-1Ah)


Zona de Datos BIOS (40h:0)

Despus comienza a buscar un sector de arranque. La secuencia de bsqueda ms usual (en el


SETUP de la BIOS se puede configurar otra secuencia) es mirar primero en el 'floppy', en su
primer sector. Si lo encuentra, lo carga en memoria y comienza a ejecutarlo. Si no lo encuentra
en el 'floppy' lo intenta en el disco duro primario (su primer sector se conoce como MBR :
Master Boot Record). Si lo encuentra lo carga y ejecuta. Si no lo encuentra sale con un error.
(NOTA: La secuencia de arranque desde un disco duro suele ser algo distinta. El MBR se carga
en la direccin 0000h:7C00h, que al ejecutarse, normalmente (no hay un estndar), mueve su
cdigo a la direccin 0000h:0600h y sigue ejecutndose desde ah. Procede entonces a
escanear la tabla de particiones buscando una que sea de arranque, para cargar su primer
sector
en
la
direccin
0000h:7C00h. )

Por lo tanto el sector de arranque debe colocarse en el Sector 1, cilindro 0 y cabeza 0 de la


unidad desde la que se desea arrancar.
La BIOS carga el sector de arranque en la direccin de memoria 7C00h y comienza a
ejecutarlo desde esa direccin. Para ello coloca los siguientes valores: CS = 0, EIP =7C00h.
Adems en DL coloca un valor indicativo de la unidad desde la que se ha cargado el sector de
arranque:
1h
=
floppy
1,
80h = disco duro primario.
El sector de arranque cargado por la BIOS toma el control. Puede hacer muchas cosas. Para
nuestros propsitos bastara con inicializar lo que sea necesario , hacer comprobaciones y
luego pasar el control al SOTR.
Este sector lo llamaremos cargador primario. Normalmente este cargador primario se
encargara de mirar la tabla de particiones, buscando una que fuese ejecutable (con un SO).
La eleccin se puede hacer mediante un men en el caso de que hubiese varias. Una vez elegida
la particin la carga en memoria, normalmente se trata de un cargador secundario, que ser el
que cargue en memoria el kernel elegido. Si el kernel es mayor de 512k o 640k, deber pasar
del modo real (donde se pueden usar las llamadas a la BIOS) al Modo-Protegido desde el cual
se puede acceder a toda la memoria.

El Sector de Arranque
El sector de arranque o cargador primario, ser lo nico que necesitemos para poder pasar el
control a nuestro SOTR.
Las caractersticas del sector de arranque son:
o
o

Tiene un tamao de 512 bytes


En la posicin 1FEh (510 en decimal) debe tener la palabra AA55h

Tambin debe tenerse en cuenta que la BIOS lo carga en la posicin de memoria 7C00h, de
forma
que a la hora de programarlo hay que tener cuidado con las referencias a memoria. En la
prctica
esto puede hacerse de varias formas:
o Mediante la directiva del ensamblador ORG 7C00h (no vlido para GAS).

Inicializar los registros de segmento de forma que apunten al comienzo del sector
de arranque. En ensamblador:
(NOTA: Debe tenerse en cuenta que en Modo Real, se desplaza el registro correspondiente
4 bits a la izquierda antes de sumarlo al 'offset' para obtener la direccin fsica de
memoria.)
mov ax,0x7C0
mov ds,ax
mov es,ax
mov fs,ax
mov gs,ax

Usar la pila para igualar el registro DS al registro CS. En ensamblador:


push cs
pop ds

Sumar 7C00h a todas las referencias a memoria.

FUNCIONES DE LA BIOS
Las funciones de la BIOS se invocan, desde los programas de usuario, ejecutando una
interrupcin software con un cierto valor inicial en los registros. La BIOS emplea un cierto
rango de interrupciones, cada una encargada de una tarea especfica:
INT 10h:
Servicios de Vdeo (texto y grficos).
INT_10: STI
; Video bios services
CLD
; ...strings auto-increment
PUSH BP
PUSH ES
PUSH DS
PUSH SI
PUSH DI
PUSH DX
PUSH CX
PUSH BX
PUSH AX
MOV BX,40h
MOV DS,BX
MOV BL,DS:10h
; Get equipment
AND BL,30h
CMP BL,30h
; Check for monochrome card
MOV BX,0B800h

JNZ
MOV

C_01
BX,0B000h

; ...not there, BX --> CGA


; Else
BX --> MONO

INT 11h:
Informe sobre la configuracin del equipo.
INT_11: STI
; Equipment present
PUSH DS
MOV AX,40h
MOV DS,AX
MOV AX,DS:10h
; AX = equipment byte contents
POP DS
IRET
ENTRY 0F859h

INT
12h:
Informe
INT_12: STI
PUSH DS
MOV AX,40h
MOV DS,AX
MOV AX,DS:13h
POP DS
IRET
ENTRY 0F84Dh

; IBM entry for cassette int.

sobre

el
tamao
de
la
memoria
; Kbytes of memory present

convencional.

; AX = memory size byte

; IBM entry for equipment check

INT 13h:
Servicios de disco (muy elementales: pistas,
INT_13: STI
; Floppy disk services
PUSH BP
PUSH SI
PUSH DI
PUSH DS
PUSH ES
PUSH BX
MOV DI,AX
; Request type in DI, for index
XOR AX,AX
MOV DS,AX
LES SI,DWord ptr DS:78h
; Get disk parameter table
MOV AX,40h
MOV DS,AX
MOV BX,5
MOV AX,ES:[BX+SI]
; Get (Gap Length, DTL) in AX

sectores,

etc.).

PUSH AX
DEC BX
DEC BX
MOV AX,ES:[BX+SI]
PUSH AX
XCHG CL,DH
XCHG DL,CL
PUSH DX
PUSH CX
PUSH DI
MOV BP,SP
ifdef SLOW_FLOPPY
CALL FD_SPD
else
CALL FD_XQT
endif
MOV AH,ES:[SI+2]
MOV DS:40h,AH
MOV AH,DS:41h
CMP AH,1
CMC
POP BX
POP CX
POP DX
XCHG DL,CL
XCHG CL,DH
POP BX
POP BX
POP BX
POP ES
POP DS
POP DI
POP SI
POP BP
RETF 2

; ...save it

; Get (Bytes/sector,EOT) in AX
; ...save it

; Push (Head,Drive) swapped

; Mark bottom of stack frame


; ...execute request lo speed
; ...execute at current speed
; Get new motor count
; ...and save it
; Get completion status
; ...check for write protect
; ...was write protect error

; Clean
; ...up
; ...stack

INT 14h:

Comunicaciones en serie.

INT_14: STI
PUSH DS
PUSH DX
PUSH SI
PUSH DI

; Serial com. bios services

PUSH
PUSH
MOV
MOV
MOV
MOV
SHL
MOV
OR
JZ
OR
JZ
DEC
JZ
DEC
JZ
DEC
JZ

CX
BX
BX,40h
DS,BX
DI,DX
BX,DX
BX,1
DX,[BX]
DX,DX
COM_ND
AH,AH
COMINI
AH
COMSND
AH
COMGET
AH
COMSTS

; Get com i/o port number


; ...if it exists
; ...none, exit
; Init on AH=0

; Send on AH=1
; Rcvd on AH=2
; Stat on AH=3

INT 15h:
Funciones casette (PC) y servicios especiales del sistema (AT).
INT_15: STC
; Cassette service (error ret)
MOV AH,86h
RETF 2
ENTRY 0F85Fh

INT
INT_16: STI
PUSH DS
PUSH BX
MOV BX,40h
MOV DS,BX
OR
AH,AH
JZ
KPD_RD
DEC AH
JZ
KPD_WT
DEC AH
JZ
KPD_SH

; IBM non-maskable int. entry

16h:

Servicios
de
; Keyboard bios services

; Load work segment


; Read keyboard buffer, AH=0
; Set Z if char ready, AH=1
; Return shift in AL , AH=2

INT 17h:

Servicios de impresora.

teclado.

INT_17: STI
PUSH DS
PUSH BX
PUSH CX
PUSH DX
MOV BX,40h
MOV DS,BX
MOV BX,DX
SHL BX,1
MOV DX,[BX+8]
OR
DX,DX
JZ
LP_01
OR
AH,AH
JZ
LP_02
DEC AH
JZ
LP_INI
DEC AH
JZ
LP_04

; Parallel printer services

; DX is printer index (0 - 3)
; ...word index
; Load printer port
; Goes to black hole
; Function is print, AH=0
; Function is init , AH=1
; Get the status , AH=2

INT

18h:

INT 19h:

Llamar

la

ROM

del

BASIC

(slo

Reinicializacin del sistema.

INT_19: JMP

IPL

ENTRY 0E729h
BAUD DW
0417h
DW
0300h
DW
0180h
DW
00C0h
DW
0060h
DW
0030h
DW
0018h
DW
000Ch

INT 1Ah:

; Warm boot
; IBM entry point for INT 14h
; 110 baud clock divisor
; 150 baud clock divisor
; 300 baud clock divisor
; 600 baud clock divisor
; 1200 baud clock divisor
; 2400 baud clock divisor
; 4800 baud clock divisor
; 9600 baud clock divisor

Servicios horarios.

INT_1A: STI

; User time_of_day bios service

mquinas

IBM).

PUSH
PUSH
MOV
MOV
POP
CLI
OR
JZ
DEC
JNZ
MOV
MOV
MOV
JMP

DS
AX
AX,40h
DS,AX
AX
AH,AH
TD_01
AH
TD_02
DS:6Ch,DX
DS:6Eh,CX
Byte ptr DS:70h,0
SHORT TD_02

; Get request type


; ...freeze clock
; Read time, AH=0
; ...invalid request
; Set time, AH=1
; ...set time hi
; ...not a new day

INT 1Fh:

Apunta a la tabla de los caracteres ASCII 128-255 (8x8 puntos).

La mayora de las interrupciones se invocan solicitando una funcin determinada (que se indica
en el registro AH al llamar) y se limitan a devolver un resultado en ciertos registros,
realizando la tarea solicitada. En general, slo resultan modificados los registros que devuelven
algo, aunque BP es corrompido en los servicios de vdeo de las mquinas ms obsoletas.

LA BIOS Y LOS DISQUETES.


Resulta interesante conocer el comportamiento de la BIOS en relacin a los disquetes, ya que
las aplicaciones desarrolladas bajo DOS de una u otra manera habrn de cooperar con la BIOS
por razones de compatibilidad (o al menos respetar ciertas especificaciones). El
funcionamiento del disquete se controla a travs de funciones de la INT 13h, aunque esta
interrupcin por lo general acaba llamando a la INT 40h que es quien realmente gestiona el
disco en las BIOS modernas de AT. Las funciones soportadas por esta interrupcin son: reset
del sistema de disco (reset del controlador de disquetes, envo del comando specify y
recalibramiento del cabezal), consulta del estado del disco (obtener resultado de la ltima
operacin), lectura, escritura y verificacin de sectores, formateo de pistas, obtencin de
informacin del disco y las disqueteras, deteccin del cambio de disco, establecimiento del tipo
de soporte para formateo... algunas de estas ltimas funciones no estn disponibles en las
mquinas PC/XT. La BIOS se apoya en varias variables ubicadas en el segmento 40h de la
memoria. Estas variables son las siguientes (para ms informacin, consultar el apndice al
final del libro):

Estado de recalibramiento del disquete. Esta variable indica varias cosas: si se ha


Byte 40h:3Eh producido una interrupcin de disquete, o si es preciso recalibrar alguna disquetera
debido a un reset anterior.
Estado de los motores. En esta variable se indica, adems del estado de los
Byte 40h:3Fh motores de las 4 posibles disqueteras (si estn encendidos o no), la ltima unidad
que fue seleccionada y la operacin en curso sobre la misma.
Cuenta para la detencin del motor. Este byte es decrementado por la interrupcin
peridica del temporizador; cuando llega a 0 todos los motores de las disqueteras
Byte 40h:40h (realmente, el nico que estaba girando) son detenidos. Dejar el motor girando unos
segundos tras la ltima operacin evita tener que esperar a que el motor acelere
antes de la siguiente (si esta llega poco despus).
Byte 40h:41h

Estado de la ltima operacin: se actualiza tras cada acceso al disco, indicando los
errores producidos (0 = ninguno).

A partir de esta direccin, 7 bytes almacenan el resultado de la ltima operacin de


Bytes 40h:42h disquete o disco duro. Se trata de los 7 bytes que devuelve el NEC765 tras los
principales comandos.
Byte 40h:8Bh

Control del soporte (AT). Esta variable almacena, entre otros, la ltima velocidad
de transferencia seleccionada.

Byte 40h:8Fh

Informacin del controlador de disquete (AT). Se indica si la unidad soporta 80


cilindros (pues s, la verdad) y si soporta varias velocidades de transferencia.

Estado del soporte en la unidad A. Se indica la velocidad de transferencia a


emplear en el disquete introducido en esta unidad, si precisa o no saltos dobles del
Byte 40h:90h cabezal (caso de los disquetes de 40 cilindros en unidades de 80), y el resultado de
los intentos de la BIOS (la velocidad puede ser correcta o no, segn se haya
logrado determinar el tipo de soporte).
Byte 40h:91h Lo mismo que el byte anterior, pero para la unidad B.
Byte 40h:92h Estado del soporte en la unidad A al inicio de la operacin.
Byte 40h:93h Estado del soporte en la unidad B al inicio de la operacin.
Byte 40h:94h Nmero de cilindro en curso en la unidad A.
Byte 40h:95h Nmero de cilindro en curso en la unidad B.
Adems de estas variables, la BIOS utiliza tambin una tabla de parmetros apuntada por la
INT 1Eh. Los valores para programar ciertas caractersticas del FDC segn el tipo de disco
pueden variar, aunque algunos son comunes. Esta tabla determina las principales
caractersticas de operacin del disco. Dicha tabla est inicialmente en la ROM, en la posicin
0F000h:0EFC7h de todas las BIOS compatibles (prcticamente el 100%), aunque el DOS suele
desviarla a la RAM para poder actualizarla. El formato de la misma es:

Se corresponde con el byte 1 del comando 'Specify' del 765, que indica el step rate (el
byte 0: tiempo de acceso cilindro-cilindro, a menudo es 0Dh = 3 6 ms) y el head unload time
(normalmente, 0Fh = 240 480 ms).

byte 1:

Es el byte 2 del comando 'Specify': los bits 7..1 indican el head load time (normalmente
01h = 2 4 ms) y el bit 0 suele estar a 0 para indicar modo DMA.

byte 2:

Tics de reloj (pulsos de la interrupcin 8) que transcurren tras el acceso hasta que se
para el motor.

byte 3: Bytes por sector (0=128, 1=256, 2=512, 3=1024).


byte 4: Sectores por pista.
byte 5:

Longitud del GAP entre sectores (normalmente 2Ah en unidades de 5 y 1Bh en las de
3).

byte 6: Longitud de sector (ignorado si el byte 3 no es 0).


byte 7: Longitud del GAP 3 al formatear (80 en 5 y 3-DD, 84 en 5-HD y 108 en 3-HD).
byte 8: Byte de relleno al formatear (normalmente 0F6h).
byte 9: Tiempo de estabilizacin del cabezal en ms.
byte 10: Tiempo de aceleracin del motor (en unidades de 1/8 de segundo).
El tiempo de estabilizacin del cabezal es el tiempo que hay que esperar tras mover el cabezal
al cilindro adecuado, hasta que ste se asiente, con objeto de garantizar el xito de las
operaciones futuras; esta breve pausa es establecida en 25 milisegundos en la BIOS del PC
original, aunque otras BIOS y el propio DOS suelen bajarlo a 15. Del mismo modo, el tiempo de
aceleracin del motor (byte 10) es el tiempo que se espera a que el motor adquiera la velocidad
de rotacin correcta, nada ms ponerlo en marcha. En cualquier caso, es norma general
intentar tres veces el acceso a disco (con resets de por medio) hasta considerar que un error
es real. En general, pese a estos valores usuales, la flexibilidad del sistema de disco es
extraordinaria y suele responder favorablemente con unos altsimos niveles de tolerancia en
las temporizaciones. Una excepcin quiz la constituye el valor de GAP empleado al formatear,
al ser un parmetro demasiado importante.

TABLA DE VARIABLES DE LA BIOS

La siguiente informacin procede del fichero MEMORY.LST de Robin Walker, incluido en el


mismo paquete del INTERRUP.LST. La informacin est actualizada mayoritariamente al
24/8/92. Se han eliminado aspectos demasiado tcnicos sobre las tarjetas EGA/VGA y alguna
informacin
sobre
hardware
no
estndar.
Las variables de la BIOS comienzan en el segmento de memoria 40h, justo despus de la
tabla de vectores de interrupcin. Son empleadas por los programas de control ubicados en las
memorias ROM del ordenador. En general, siempre es preferible utilizar una funcin de la
BIOS que modificar directamente sus variables, aunque a veces ello no es posible o puede no
resultar conveniente. Los campos colocados entre llaves ('{' y '}') no estn documentados por
IBM y podran cambiar en el futuro. Los cdigos entre corchetes indican a qu mquinas o
configuraciones, en exclusiva, se aplica la informacin.
Offset Tamao Descripcin

00h
02h
04h
06h

08h
0Ah
0Ch
0Eh

10h

12h
13h
15h
16h
17h

WORD
Direccin E/S base del primer puerto serie (0 si no instalado)
WORD
Direccin E/S base del segundo puerto serie (0 si no instalado)
WORD
Direccin E/S base del tercer puerto serie (0 si no instalado)
WORD
Direccin E/S base del cuarto puerto serie (0 si no instalado)
Nota: Los campos de arriba son rellenados en estricto orden por
el programa POST de la BIOS que inicializa el sistema, sin
dejar huecos. Los puertos serie del DOS y de la BIOS pueden
redefinirse modificando estos campos.
WORD
Direccin E/S base del primer puerto paralelo (0 si no instalado)
WORD
Direccin E/S base del segundo puerto paralelo (0 si no instalado)
WORD
Direccin E/S base del tercer puerto paralelo (0 si no instalado)
WORD
[Mquinas no PS]:
Direccin E/S base del cuarto puerto paralelo (0 si no instalado)
[Mquinas PS]:
Segmento del rea de datos extendida de la BIOS
Nota: Los campos de arriba son rellenados en estricto orden por
el programa POST de la BIOS que inicializa el sistema, sin
dejar huecos. Los puertos paralelo del DOS y de la BIOS
pueden redefinirse modificando estos campos.
WORD
Hardware instalado:
bits 15-14: nmero de puertos paralelos
bit 13: [PC Convertible] = 1 si hay modem interno
bit 12: reservado
bits 11- 9: nmero de puertos serie
bit
8: reservado
bits 7- 6: nmero de disqueteras - 1
bits 5- 4: modo de vdeo inicial
00b = EGA,VGA,PGA
01b = 40 x 25 color
10b = 80 x 25 color
11b = 80 x 25 mono
bit
3: reservado
bit
2: [mquinas PS] = 1 si hay dispositivo apuntador
[mquinas no PS] reservado
bit
1: = 1 si hay coprocesador
bit
0: = 1 si hay disquete disponible para arrancar
BYTE
[PC Convertible] estado del POST
[AT] {Banderines de inicializacin de los test de fabricacin}
WORD
Tamao de memoria convencional en kbytes (0-640)
BYTE
[AT] {Usado en los test de fabricacin}
BYTE
[AT] {Usado en los test de fabricacin}
[PS/2 Mod 30] Banderines de control de la BIOS
BYTE
Banderines de estado del teclado 1:
bit 7 =1 INSert activo

18h

19h
1Ah
1Ch
1Eh
3Eh

3Fh

40h
41h

bit 6 =1 Caps Lock activo


bit 5 =1 Num Lock activo
bit 4 =1 Scroll Lock activo
bit 3 =1 cualquier Alt pulsado
bit 2 =1 cualquier Ctrl pulsado
bit 1 =1 Shift izquierdo pulsado
bit 0 =1 Shift derecho pulsado
BYTE
Banderines de estado del teclado 2:
bit 7 = 1 INSert pulsado
bit 6 = 1 Caps Lock pulsado
bit 5 = 1 Num Lock pulsado
bit 4 = 1 Scroll Lock pulsado
bit 3 = 1 Estado de pausa activo
bit 2 = 1 Sys Req pulsada
bit 1 = 1 Alt izquierdo pulsado
bit 0 = 1 Ctrl izquierdo pulsado
BYTE
Teclado: Area de trabajo para Alt-nnn (nnn=teclado numrico)
WORD
Teclado: puntero al prximo carcter en el buffer
WORD
Teclado: puntero a la primera entrada vaca en el buffer
16 WORDs Buffer del teclado (cola circular, ver offsets 80h y 82h para moverlo)
BYTE
Estado de recalibracin del disquete:
bit 7 = 1 Se ha producido interrupcin hardware del disquete
bits 6-4 reservados
bit 3 = 1 Recalibrada disquetera 3
bit 2 = 1 Recalibrada disquetera 2
bit 1 = 1 Recalibrada disquetera 1
bit 0 = 1 Recalibrada disquetera 0
BYTE
Estado del motor del disquete:
bit 7 = 1 la operacin en curso es escritura o formateo
= 0 la operacin en curso es lectura o verificacin
bit 6 reservado
bits 5-4 nmero de disquetera seleccionada (0-3)
bit 3 = 1 motor de la disquetera 3 en marcha
bit 2 = 1 motor de la disquetera 2 en marcha
bit 1 = 1 motor de la disquetera 1 en marcha
bit 0 = 1 motor de la disquetera 0 en marcha
BYTE
Contador de tics de reloj que faltan para parar motor de la disquetera
BYTE
Estado de la ltima operacin de disco (0 = correcta)
bit 7 = 1 unidad no preparada
bit 6 = 1 error de posicionamiento del cabezal
bit 5 = 1 fallo general del controlador
bits 4-0:
00h no hay error
01h solicitud incorrecta

42h
49h
4Ah
4Ch
4Eh
50h
60h
62h
63h
65h
66h
67h
6Bh
6Ch
70h
71h
72h

74h

02h no encontrada la marca de direcciones


03h error de proteccin contra escritura
04h sector no encontrado
06h lnea de disco cambiado activa
08h el DMA se ha desbordado
09h el DMA ha cruzado una frontera de 64k
0Ch medio fsico desconocido
10h fallo de CRC al leer
7 BYTEs Bytes de estado/comandos de la Disquetera/Disco fijo
BYTE
Modo de vdeo activo
WORD
Nmero de columnas en pantalla
WORD
Tamao del buffer de vdeo de la pgina activa en bytes
WORD
Desplazamiento sobre la memoria de pantalla de la pgina activa
16 BYTEs Posicin del cursor (columna, fila) para las 8 pginas
WORD
Tipo de cursor, compatible 6845, byte alto=lnea inicial, bajo=final
BYTE
Pgina activa
WORD
Direccin E/S base del controlador de vdeo: color=03D4h, mono=03B4h
BYTE
Valor actual del registro de seleccin de modo 03D8h/03B8h
BYTE
Valor actual almacenado en el registro de paleta de la CGA 03D9h
DWORD Punto de retorno al modo real tras ciertos resets del POST
BYTE
Ultima interrupcin no esperada por el POST
DWORD Tics de reloj (1/18,2 segundos) ocurridos desde medianoche
BYTE
Flag de medianoche, <> 0 si el contador pasa de las 23:59:59.99
BYTE
Bandern de Ctrl-Break: bit 7=1
WORD
Bandern de reset del POST:
= 1234h si no realizar chequeo de memoria (arranque caliente)
= 4321h [solo PS/2 MCA] si preservar la memoria al arrancar
= 5678h [PC Convertible] sistema detenido
= 9ABCh [PC Convertible] test de fabricacin
= ABCDh [PC Convertible] bucle del POST
= 64h modo Burn-in
BYTE
Estado de la ltima operacin del disco fijo: {salvo unidades ESDI}
00h no hubo error
01h funcin solicitada incorrecta
02h no encontrada marca de direcciones
03h error de proteccin contra escritura
04h sector no encontrado
05h fallo en el reset
07h fallo en la actividad de los parmetros del disco
08h el DMA se ha desbordado
09h alineamiento de datos incorrecto para el DMA
0Ah detectado bandern de sector errneo
0Bh detectada pista errnea
0Dh nmero incorrecto de sectores para el formateo

75h
76h
77h
78h
7Bh
7Ch
80h
82h

0Eh detectada marca de direcciones de control


0Fh nivel de arbitrio del DMA fuera de rango
10h error ECC o CRC incorregible
11h error de datos ECC corregido
20h fallo general del controlador
40h fallo en el posicionamiento del cabezal
80h fuera de tiempo, no responde
AAh disco no preparado
BBh error indefinido
CCh fallo de escritura en el disco seleccionado
E0h el registro de errores es cero
FFh fallo de sentido
BYTE
Disco fijo: nmero de discos fijos
BYTE
Disco fijo: byte de control {IBM lo documenta slo en el XT}
BYTE
Disco fijo: offset del puerto E/S {IBM lo documenta slo en el XT}
3 BYTEs Contadores de time-out para los puertos paralelos 1-3
BYTE
Contador time-out para puerto paralelo 4 [mquinas no PS]
bit 5 = 1 si especificacin de DMA virtual soportada [PS] (ver INT 4B)
4 BYTEs Contadores de time-out para los puertos serie 1-4
WORD
Offset de inicio del buffer del teclado respecto al segmento 40h
(normalmente 1Eh)
WORD
Offset del fin del buffer del teclado+1 respecto al segmento 40h
(normalmente 3Eh)
[La BIOS del XT con fecha 8/11/82 acaba aqu]

84h
85h
87h
88h
89h
8Ah
8Bh

8Ch
8Dh
8Eh
8Fh

BYTE
Vdeo: lneas en pantalla menos 1 en EGA/MCGA/VGA
WORD
Video: altura del carcter, en pixels, en EGA/MCGA/VGA
BYTE
Vdeo: control de EGA/VGA.
bit 7: = 1 si no limpiar RAM (ver INT 10h, AH=0)
BYTE
Vdeo: switches EGA/VGA [MCGA: reservado]
BYTE
Vdeo: MCGA/VGA opcin de control del modo
BYTE
Vdeo [MCGA/VGA]: ndice en tabla Cdigos de Combinaciones de Pantalla
BYTE
Control del medio fsico del disco [no XT]:
bits 7-6: Ultima tasa de transferencia fijada por el controlador:
00=500kbps, 01=300kbps, 10=250kbps, 11=1Mbps
bits 5-4: Ultimo step rate seleccionado en el disquete:
00-0Ch, 01=0Dh, 10=0Eh, 11=0Ah
bits 3-2: {Tasa de transferencia al inicio de la operacin}
bits 1-0: reservado
BYTE
Estado del controlador del disco fijo [no XT]
BYTE
Estado de error del controlador de disco fijo [no XT]
BYTE
Control de interrupciones del disco fijo [no XT]
BYTE
Informacin del controlador de disquete [no XT]:

90h
91h

BYTE
BYTE

92h
93h
94h
95h
96h

BYTE
BYTE
BYTE
BYTE
BYTE

97h

BYTE

bit 7: reservado
bit 6: = 1 si disco 1 determinado
bit 5: = 1 si disco 1 es multi-ratio, vlido si disco determinado
bit 4: = 1 si disco 1 soporta 80 pistas, siempre vlido
bit 3: reservado
bit 2: = 1 si disco 0 determinado
bit 1: = 1 si disco 0 es multi-ratio, vlido si disco determinado
bit 0: = 1 si disco 0 soporta 80 pistas, siempre vlido
Estado fsico de la disquetera 0
Estado fsico de la disquetera 1
bits 7-6: tasa de transferencia a disquete: 00=500kbps, 01=300kbps,
10=250kbps, 11=1Mbps
bit 5: = 1 si doble salto de pista requerido (e.g. 360Kb en 1.2Mb)
bit 4: = 1 si superficie ya determinada
bit 3: reservado
bits 2-0: a la salida de la BIOS, contiene:
000 intentando 360Kb en 360Kb
001 intentado 360Kb en 1.2Mb
010 intentando 1.2MB en 1.2Mb
011 determinado 360Kb en 360Kb
100 determinado 360Kb en 1.2Mb
101 determinado 1.2Mb en 1.2Mb (contina en pg siguiente)
110 reservado
111 todos los dems formatos
Estado fsico de la disquetera 0 al inicio de la operacin
Estado fsico de la disquetera 1 al inicio de la operacin
Nmero de pista en curso de la disquetera 0
Nmero de pista en curso de la disquetera 1
Estado del teclado, byte 1
bit 7 = 1 proceso de lectura de ID en marcha
bit 6 = 1 el ltimo cdigo ledo fue el primero de dos cdigos ID
bit 5 = 1 forzar Num Lock si se lee el ID y es un teclado expandido
bit 4 = 1 teclado expandido instalado
bit 3 = 1 Alt derecho pulsado
bit 2 = 1 Ctrl derecho pulsado
bit 1 = 1 ltimo cdigo ledo fue E0h
bit 0 = 1 ltimo cdigo ledo fue E1h
Estado del teclado, byte 2
bit 7 = 1 error de transmisin del teclado
bit 6 = 1 actualizacin de LEDs en curso
bit 5 = 1 cdigo RESEND recibido del teclado
bit 4 = 1 cdigo ACK recibido del teclado
bit 3 reservado, debe ser cero
bit 2 LED de Caps Lock

bit 1 LED de Num Lock


bit 0 LED de Scroll Lock
98h
DWORD Timer2: [AT, PS excepto Mod 30] puntero al bandern de espera de
usuario completada (ver INT 15, AX=8300h)
9Ch
DWORD Timer2: [AT, PS exc Mod 30] contador de espera del usuario (microseg.)
A0h
BYTE
Timer2: [AT, PS exc Mod 30] bandern de espera activa:
bit 7 = 1 tiempo de espera transcurrido
bits 6-1 reservados
bit 0 = 1 INT 15h, AH=86h ha sucedido
A1h 7 BYTEs Reservado para adaptadores de red local (ser verdad?)
A4h
DWORD [PS/2 Mod 30] Vector de la interrupcin del disco duro preservada
A8h
DWORD Video: En EGA/MCGA/VGA, puntero al Video Save Pointer Table
ACh-AFh
Reservados
B0h
BYTE
(Phoenix 386 BIOS 1.10 10a) contador para retardo LOOP cuando se pita
ante un buffer de teclado lleno
B0h
DWORD Puntero al controlador de disco ptico 3363.
B4h
WORD
Reservado
B6h 3 BYTEs Reservado para el POST?
B9h 7 BYTEs ???
C0h 14 BYTEs Reservado
CEh
WORD
Cuenta de das desde el ltimo arranque???
D0h-EFh
Reservado
D0h-DCh
Usado por Digiboard MV/4
F0h-FFh
Reservado para el usuario
100h
BYTE
Byte de estado de Print Screen
10Eh
BYTE
Estado de BREAK al inicio de la ejecucin de BASICA.COM
10Fh
BYTE
Bandern: 02h si BASICA v2.10 est ejecutndose
116h
DWORD INT 1Bh al inicio de la ejecucin de BASICA.COM
11Ah
DWORD INT 24h al inicio de la ejecucin de BASICA.COM

3.3.- TAMAOS Y TIEMPOS DE EJECUCIN DE LAS INSTRUCCIONES


En la tabla de esta pgina se listan las instrucciones del ensamblador por orden alfabtico, indicndose el nmero de
bytes consumidos al ser ensambladas as como los tiempos tericos de ejecucin en 8088, 286, 386 y 486. Estos
tiempos son tericos y no deberan ser utilizados para temporizaciones exactas. Por otra parte son diferentes de un
procesador a otro. Los tiempos se expresan en estados de mquina (1 MHz equivale a 1.000.000 de estados o ciclos
de reloj) estando la capacidad de ejecucin de instrucciones lgicamente en funcin de los MHz del equipo que se
trate. Estos tiempos se aplican suponiendo que se cumplen las siguientes hiptesis:
La instruccin ya ha sido extrada de la memoria y decodificada.
Los datos, si los hay, estn alineados (a palabra o doble palabra).
No hay estados de espera en la placa principal del ordenador.
Nadie ha sustraido el control del bus a la CPU (el DMA no debe estar actuando y no han de producirse
ciclos de refresco de la memoria).
No se produce ninguna interrupcin o excepcin durante la ejecucin.
Evidentemente, es casi imposible que los tiempos tericos sean los reales, teniendo en cuenta todos estos
factores. Cuanto menos potente es la mquina, mucho ms lentos son los tiempos reales; por el contrario, en

ordenadores con cach y procesador avanzado los tiempos efectivos pueden ser en ocasiones mejores que los
tericos!. Por ejemplo, el 486 emplea ya la tecnologa pipeline, lo que le permite simultanear la ejecucin de una
instruccin con la decodificacin de la siguiente y la lectura de memoria de la posterior as como almacenar el
resultado de la anterior. Esto, con las lgicas limitaciones de un procesador CISC, permite en la prctica ejecutar
un alto nmero de instrucciones en un solo ciclo (cada una de ellas, claro). Por tanto, para lo que s sirven las tablas
es para decidir qu instrucciones emplear en ciertos procesos en que el tiempo de ejecucin o la memoria consumida
son crticos, especialmente en las mquinas menos potentes. Como muestra de lo sumamente tericos que son estos
tiempos, a continuacin se listan dos rutinas con las que he probado experimentalmente los tiempos de ejecucin en
diversos microprocesadores. Ambas rutinas constan de un bucle que se repite cierto nmero de veces; mientras
tanto las interrupciones estn inhibidas, por lo que se cronometran a mano:

Ciclos tericos
8088

286

386

486

RutinaA: CLI
MOV AX,1000h
bucle:
XOR CX,CX
3
2
2
1
repite: LOOP repite
17 5
8+m 4 (m=2) 11+m (m=2) 6 2
DEC AX
2
2
2
1
JNZ bucle
16 4
7+m 3 (m=2) 7+m 3 (m=2) 3 1
STI
RutinaB: CLI
XOR CX,CX
bucle1:
MOV AX,BX
2
2
2
1
bucle2:
MOV AX,BX
2
2
2
1
...
.
.
.
.
bucle16384: MOV AX,BX
2
2
2
.
DEC CX
2
2
2
1
JNZ fin
16 4
7+m 3
7+m 3 (m=1) 3 1
JMP bucle1
15
7+m
7+m (m=2)
3
fin:
STI
Por ejemplo, la rutina B ejecuta 16384 instrucciones del tipo MOV AX,BX (2 ciclos cada una) as como un
decremento (2 ciclos) un salto que no se realiza -salvo al final del todo- (4 ciclos en 8088) y otro salto absoluto (15
ciclos en 8088). Se emplea este rodeo ya que los saltos condicionales, como conocer el lector, slo pueden desviar
algo ms de 100 bytes el flujo del programa (y este bucle ocupa nada menos que 32 Kb). En total, 32787 ciclos que,
repetidos 65536 veces, suponen
2.148.728.832 ciclos. Con un 8088 corriendo a 8 MHz (8 millones de ciclos) cabra esperar una demora de 268,59
segundos. Sin embargo, mi reloj de pulsera dice que son nada menos que 1194!, unas 4,44 veces ms de lo que los
tiempos tericos de Intel sugieren. De hecho, esto implica que cada MOV tarda casi 9 ciclos reales en un 8088, y no
2. Sin embargo, en el caso de la rutina A apenas hay diferencia entre el tiempo terico y el real: el tiempo que
emplea la instruccin LOOP es bastante alto en comparacin con lo que se tarda en traer dicha instruccin de la
memoria, por lo que la diferencia porcentual se reduce notablemente.

RUTINA A

RUTINA B

Terico Efectivo Terico Efectivo


8088-4.77 956,71 1014,00 450,47 1946,00

V20-8

570,43 623,30

268,59 1194,00

286-12

223,70 254,00

179,02 188,25

386-25*

139,59 135,20

85,93

93,50

486-25*

64,42

42,96

69,10

(*)
El
386
careca
slo posea los 8 Kb de cach incluidos en el chip.

75,50

de

memoria

cach

el

PAUTAS PARA INTERPRETAR LA TABLA DE INSTRUCCIONES.


El 8088, bastante menos potente que el 286, vara enormemente la velocidad de ejecucin de las instrucciones
en funcin del modo de direccionamiento, hay que aadir adems dos ciclos de reloj en este procesador cuando se
usa un prefijo de registro de segmento. En la siguiente tabla se indica el nmero de ciclos de reloj adicionales que
deben considerarse en el 8086/8088 para calcular la direccin de memoria efectiva (EA, Efective Address) en la
tabla de tiempos, segn el tipo de direccionamiento:

Componentes

Operandos

valor EA

(a) Base o ndice

[BX], [BP], [SI], [DI]

(b) Desplazamiento

desp

(c1) Base + ndice

[BX+SI], [BX+DI]

(c2) Base + ndice

[BP+SI], [BP+DI]

(d) Desplaz.+ base/ndice

[BX+desp], [BP+desp], [DI+desp], [SI+desp] 9

(e) Desplaz.+ base + ndice [BX+SI+desp], [BX+DI+desp]

11

Los datos entre parntesis en el 8088 indican el tiempo empleado por las palabras de 16 bits, fuera del
parntesis hacen referencia a 8 bits (los 8086 y superiores no son ms lentos con datos de 16 que con los de 8 bits,
siempre lgicamente que stos estn en una posicin de memoria par). Aunque el 286 y 386 no penalizan tanto los
modos de direccionamiento complejos, a los tiempos marcados con (#) hay que aadir un ciclo si en el offset
participan tres elementos (ej., BP+DI+desp). La letra {m} se refiere al nmero de bytes totales de la siguiente
instruccin que se va a ejecutar. Cuando aparecen dos opciones en las instrucciones de salto condicional, el menor
tiempo de ejecucin se verifica cuando el salto no se realiza. Todas las instrucciones especficas de 386 ocupan,
bajo DOS, un byte ms de lo que indican las tablas debido a que se utiliza un prefijo para forzar el modo 32 bit en
segmentos de 16. En los tiempos del 386, los datos entre parntesis se aplican cuando la CPU est en modo virtual
86; en general, los tiempos de ejecucin corresponden al modo real (en modo protegido, podran variar).
Inst. Operandos
Bytes Ciclos 8088 Ciclos 286 Ciclos 386 Ciclos 486
------ ----------------------------------- ------- --------------- ------------ ------------ -----------AAA
1
8
3
4
3
AAD
2
60
14
19
14
AAM
2
83
16
17
15
AAS
1
8
3
4
3
ADC
registro, registro
2
3
2
2
1
ADC
registro, memoria
2-4
9(13)+EA
7#
6
2
ADC
memoria, registro
2-4
16(24)+EA
7#
7
3
ADC
registro, inmediato
3-4
4
3
2
1
ADC
memoria, inmediato
3-6
17(25)+EA
7#
7
3
ADC
acumulador, inmediato
2-3
4
3
2
1
ADD
registro, registro
2
3
2
2
1
ADD
registro, memoria
2-4
9(13)+EA
7#
6
2
ADD
memoria, registro
2-4
16(24)+EA
7#
7
3
ADD
registro, inmediato
3-4
4
3
2
1
ADD
memoria, inmediato
3-6
17(25)+EA
7#
7
3

486

ADD
acumulador, inmediato
2-3
4
3
2
1
AND
registro, registro
2
3
2
2
1
AND
registro, memoria
2-4
9(13)+EA
7#
6
2
AND
memoria, registro
2-4
16(24)+EA
7#
7
3
AND
registro, inmediato
3-4
4
3
2
1
AND
memoria, inmediato
3-6
17(25)+EA
7#
7
3
AND
acumulador, inmediato
2-3
4
3
2
1
BOUND registro16, memoria16
2-4 (no existe)
13 #
10
7
BOUND registro32, memoria32
2-6 (no existe) (no existe)
10
7
BSF registro16, registro16
3
(no existe) (no existe) 10+3*n
6-42
BSF registro16, memoria16
5-7 (no existe) (no existe) 10+3*n
7-43
BSF registro32, registro32
3
(no existe) (no existe) 10+3*n
6-42
BSF registro32, memoria32
5-7 (no existe) (no existe) 10+3*n
7-43
BSR
registro16, registro16
3
(no existe) (no existe) 10+3*n
6-42
BSR
registro16, memoria16
5-7 (no existe) (no existe) 10+3*n
7-43
BSR
registro32, registro32
3
(no existe) (no existe) 10+3*n
6-42
BSR
registro32, memoria32
5-7 (no existe) (no existe) 10+3*n
7-43
BT
registro16, registro16
3
(no existe) (no existe)
3
3
BT
memoria16, registro16
5-7 (no existe) (no existe)
12
8
BT
registro32, registro32
3
(no existe) (no existe)
3
3
BT
memoria32, registro32
5-7 (no existe) (no existe)
12
8
BT
registro16, inmediato8
4
(no existe) (no existe)
3
3
BT
memoria16, inmediato8
6-8 (no existe) (no existe)
6
3
BT
registro32, inmediato8
4
(no existe) (no existe)
3
3
BT
memoria32, inmediato8
6-8 (no existe) (no existe)
6
3
BTC
registro16, registro16
3
(no existe) (no existe)
6
6
BTC
memoria16, registro16
5-7 (no existe) (no existe)
13
13
BTC
registro32, registro32
3
(no existe) (no existe)
6
6
BTC
memoria32, registro32
5-7 (no existe) (no existe)
13
13
BTC
registro16, inmediato8
4
(no existe) (no existe)
6
6
BTC
memoria16, inmediato8
6-8 (no existe) (no existe)
8
8
BTC
registro32, inmediato8
4
(no existe) (no existe)
6
6
BTC
memoria32, inmediato8
6-8 (no existe) (no existe)
8
8
BTR
registro16, registro16
3
(no existe) (no existe)
6
6
BTR
memoria16, registro16
5-7 (no existe) (no existe)
13
13
BTR
registro32, registro32
3
(no existe) (no existe)
6
6
BTR
memoria32, registro32
5-7 (no existe) (no existe)
13
13
BTR
registro16, inmediato8
4
(no existe) (no existe)
6
6
BTR
memoria16, inmediato8
6-8 (no existe) (no existe)
8
8
BTR
registro32, inmediato8
4
(no existe) (no existe)
6
6
BTR
memoria32, inmediato8
6-8 (no existe) (no existe)
8
8
BTS
registro16, registro16
3
(no existe) (no existe)
6
6
BTS
memoria16, registro16
5-7 (no existe) (no existe)
13
13
BTS
registro32, registro32
3
(no existe) (no existe)
6
6
BTS
memoria32, registro32
5-7 (no existe) (no existe)
13
13
BTS
registro16, inmediato8
4
(no existe) (no existe)
6
6
BTS
memoria16, inmediato8
6-8 (no existe) (no existe)
8
8
BTS
registro32, inmediato8
4
(no existe) (no existe)
6
6
BTS
memoria32, inmediato8
6-8 (no existe) (no existe)
8
8
CALL procedimiento near (intrasegmento) 3
23
7+m
7+m
3
CALL procedimiento far (intersegmento) 5
36
13+m
17+m
18
CALL intrasegmento indirecto a memoria 2-4
29+EA
11+m
10+m
5
CALL intrasegmento indirecto a registro 2
24
7+m
7+m
5
CALL intersegmento indirecto a memoria 2-4
57+EA
16+m
22+m
17
CBW
1
2
2
3
3
CDQ
1
(no existe) (no existe)
2
3
CLC
1
2
2
2
2
CLD
1
2
2
2
2
CLI
1
2
3
3
5
CMC
1
2
2
2
2
CMP
registro, registro
2
3
2
2
1
CMP
registro, memoria
2-4
9(13)+EA
6#
6
2
CMP
memoria, registro
2-4
9(13)+EA
7#
5
2
CMP
registro, inmediato
3-4
4
3
2
1
CMP
memoria, inmediato
3-6 10(14)+EA
6#
5
2
CMP
acumulador, inmediato
2-3
4
3
2
1

CMPS
1
22(30)
8
10
8
CMPS (REP)
1
9+22(30)*n
5+9*n
5+9*n 5 (CX=0) 7+7*n
CWD
1
5
2
2
3
CWDE
1
(no existe) (no existe)
3
3
DAA
1
4
3
4
2
DAS
1
4
3
4
2
DEC
registro byte
2
3
2
2
1
DEC
registro palabra
1
2
2
2
1
DEC
memoria
2-4 15(23)+EA
7#
6
3
DIV registro byte
2
80-90
14
14
16
DIV registro palabra
2
144-162
22
22
24
DIV registro32
2
(no existe) (no existe)
38
40
DIV byte de memoria
2-4
86-96+EA
17 #
17
16
DIV palabra de memoria
2-4 154-172+EA
25 #
25
24
DIV palabra32 de memoria
2-6 (no existe) (no existe)
41
40
ENTER constante16, 0
4
(no existe)
11
10
14
ENTER constante16, 1
4
(no existe)
15
12
17
ENTER constante16, nivel
4
(no existe) 12+4*(n-1) 15+4*(n-1) 17+3*n
ESC inmediato, memoria
2-4
8(12)+EA
9-20 # (ver coproc.) (ver coproc.)
ESC inmediato, registro
2
2
2
(ver coproc.) (ver coproc.)
HLT
1
2
2
5
4
IDIV registro byte
2
101-112
17
19
19
IDIV registro palabra
2
165-185
25
27
27
IDIV registro32
2
(no existe) (no existe)
43
43
IDIV byte de memoria
2-4 107-118+EA
20 #
19
20
IDIV palabra de memoria
2-4 175-194+EA
28 #
27
28
IDIV palabra32 de memoria
2-6 (no existe) (no existe)
43
44
IMUL registro byte
2
80-98
13
9-14
13-18
IMUL registro palabra
2
128-154
21
9-22
13-26
IMUL registro32
2
(no existe) (no existe)
9-38
13-42
IMUL byte de memoria
2-4
86-104+EA
16
12-17
13-18
IMUL palabra de memoria
2-4 138-164+EA
24 #
12-25
13-26
IMUL palabra32 de memoria
2-6 (no existe) (no existe) 12-41
13-42
IMUL registro16 destino, constante
3-4 (no existe)
21
9-22
13-26
IMUL registro16 destino, memoria
5-7 (no existe) (no existe) 12-25
13-26
IMUL registro32 destino, memoria
5-7 (no existe) (no existe) 12-41
13-42
IMUL registro destino, registro, cte. 2-4 (no existe)
21
9-22
13-26
IMUL registro destino, memoria, cte. 3-4 (no existe)
24 #
12-25
13-26
IN
acumulador, puerto fijo
2
10(14)
5
12(26)
14(27)
IN
acumulador, DX
1
8(12)
5
13(27)
14(27)
INC registro byte
2
3
2
2
1
INC registro palabra
1
2
2
2
1
INC memoria
2-4
15(23)+EA
7#
6
3
INS
1
(no existe)
5
15(29)
17(30)
INS (REP)
2
(no existe)
5+4*n 13(27)+6*n 16(29)+8*n
INT 3
1
52
23+m
33
26
INT inmediato
2
51
23+m
37
30
INTO
1
53 4
24+m 3
35 3
28 3
IRET
1
32
17+m
22
15
JCXZ
2
18 6
8+m 4 9+m 5
31
JECXZ
2
(no existe) (no existe) 9+m 5
31
JMP short
2
15
7+m
7+m
3
JMP near (intrasegmento)
3
15
7+m
7+m
3
JMP far (intersegmento)
5
15
11+m
12+m
17
JMP intrasegmento indirecto a memoria 2-4
18+EA
11+m #
10+m
5
JMP intrasegmento indirecto a registro 2
11
7+m
7+m
5
JMP intersegmento indirecto a memoria 2-4
24+EA
15+m
17+m
13
Jxxx inmediato8
2
16 4
7+m 3 7+m 3
31
Jxxx inmediato32
6
(no existe) (no existe) 7+m 3
31
LAHF
1
4
2
2
3
LDS
2-4
24+EA
7#
7
6
LEA
2-4
2+EA
3#
2
1
LEAVE
1
(no existe)
5
4
5
LES
2-4
24+EA
7#
7
6
LFS
2-4 (no existe) (no existe)
7
6
LGS
2-4 (no existe) (no existe)
7
6

LSS
2-4 (no existe) (no existe)
7
6
LOCK
1
2
0
0
1
LODS
1
12(16)
5
5
5
LODS (REP)
1
9+13(17)*n
5+4*n
5+6*n 5 (CX=0) 7+4*n
LOOP
2
17 5
8+m 4
11+m
26
LOOPE
2
18 6
8+m 4
11+m
96
LOOPNE
2
19 5
8+m 4
11+m
96
LOOPZ
2
18 6
8+m 4
11+m
96
LOOPNZ
2
19 5
8+m 4
11+m
96
MOV memoria, acumulador
3
10(14)
3
2
1
MOV acumulador, memoria
3
10(14)
5
4
1
MOV registro, registro
2
2
2
2
1
MOV registro, memoria
2-4
8(12)+EA
5#
4
1
MOV memoria, registro
2-4
9(13)+EA
3#
2
1
MOV registro, inmediato
2-3
4
2
2
1
MOV memoria, inmediato
3-6 10(14)+EA
3#
2
1
MOV registro de segmento, registro
2
2
2
2
3
MOV registro, registro de segmento
2
2
2
2
3
MOV registro de segmento, memoria
2-4
8(12)+EA
5#
5
9
MOV memoria, registro de segmento
2-4
9(13)+EA
3#
2
3
MOVS
1
18(26)
5
7
7
MOVS (REP)
1
9+17(25)*n
5+4*n
5+4*n 5 (CX=0) 12+3*n
MOVSX registro16, registro8
3 (no existe) (no existe)
3
3
MOVSX registro16, memoria8
5-7 (no existe) (no existe)
6
3
MOVSX registro32, registro8
3 (no existe) (no existe)
3
3
MOVSX registro32, memoria8
5-7 (no existe) (no existe)
6
3
MOVSX registro32, registro16
3 (no existe) (no existe)
3
3
MOVSX registro32, memoria16
5-7 (no existe) (no existe)
6
3
MOVZX registro16, registro8
3 (no existe) (no existe)
3
3
MOVZX registro16, memoria8
5-7 (no existe) (no existe)
6
3
MOVZX registro32, registro8
3 (no existe) (no existe)
3
3
MOVZX registro32, memoria8
5-7 (no existe) (no existe)
6
3
MOVZX registro32, registro16
3 (no existe) (no existe)
3
3
MOVZX registro32, memoria16
5-7 (no existe) (no existe)
6
3
MUL
registro byte
2
70-77
13
9-14
13
MUL
registro palabra
2
118-133
21
9-22
13
MUL
registro32
2
(no existe) (no existe)
9-38
13
MUL
byte de memoria
2-4
76-83+EA
16 #
12-27
18
MUL
palabra de memoria
2-4 128-143+EA
24 #
12-25
26
MUL
palabra32 de memoria
2-6 (no existe) (no existe) 12-41
42
NEG registro
2
3
2
2
1
NEG memoria
2-4
16(24)+EA
7#
6
3
NOP
1
3
3
3
1
NOT registro
2
3
2
2
1
NOT memoria
2-4
16(24)+EA
7#
6
3
OR
registro, registro
2
3
2
2
1
OR
registro, memoria
2-4
9(13)+EA
7#
6
3
OR
memoria, registro
2-4
16(24)+EA
7#
7
3
OR
registro, inmediato
3-4
4
3
2
1
OR
memoria, inmediato
3-6
17(25)+EA
7#
7
3
OR
acumulador, inmediato
2-3
4
3
2
1
OUT
puerto fijo, acumulador
2
10(14)
3
10(24)
16(29)
OUT
DX, acumulador
1
8(12)
3
11(25)
16(29)
OUTS byte o palabra
1 (no existe)
5
14(28)
17(30)
OUTS (REP)
2 (no existe)
5+4*n
12(26)+5*n 17(31)+5*n
POP registro normal
1
12
5
4
4
POP registro de segmento
1
12
5
7
3
POP memoria
2-4
25+EA
5#
5
6
POPA
1 (no existe)
19
24
9
POPAD
1 (no existe) (no existe)
24
9
POPF
1
12
5
5
9
POPFD
1 (no existe) (no existe)
5
9
PUSH registro
1
14
3
2
1
PUSH memoria
2-4
24+EA
5#
5
4
PUSH inmediato
2-3 (no existe)
3
2
1
PUSHA
1 (no existe)
17
18
11

PUSHAD
1 (no existe) (no existe)
18
11
PUSHF
1
14
3
4
4
PUSHFD
1 (no existe) (no existe)
4
4
RCL
registro,1
2
2
2
9
3
RCL
registro,CL
2
8+4*bits
5
9
8-30
RCL
registro, contador
3 (no existe)
5
9
8-30
RCL
memoria, contador
3-6 (no existe)
8#
10
9-31
RCL
memoria,1
2-4
15(23)+EA
7#
10
4
RCL
memoria,CL
2-4 20(28)+EA+4*bits
8#
10
9-31
RCR
registro,1
2
2
2
9
3
RCR
registro,CL
2
8+4*bits
5
9
8-30
RCR
registro, contador
3 (no existe)
5
9
8-30
RCR
memoria, contador
3-6 (no existe)
8#
10
9-31
RCR
memoria,1
2-4 15(23)+EA
7#
10
4
RCR
memoria,CL
2-4 20(28)+EA+4*bits
8#
10
9-31
REP
1
2
0
0
0
REPE
1
2
0
0
0
REPNE
1
2
0
0
0
REPZ
1
2
0
0
0
REPNZ
1
2
0
0
0
RET intrasegmento
1
20
11+m
10+m
5
RET intrasegmento con SP+inmediato
3
24
11+m
10+m
5
RET intersegmento
1
32
15+m
18+m
13
RET intersegmento con SP+inmediato
3
31
15+m
18+m
14
ROL
registro,1
2
2
2
3
3
ROL
registro,CL
2
8+4*bits
5
3
3
ROL
registro, contador
3 (no existe)
5
3
2
ROL
memoria, contador
3-6 (no existe)
8#
7
4
ROL
memoria,1
2-4
15(23)+EA
7#
7
4
ROL
memoria,CL
2-4 20(28)+EA+4*bits 8 #
7
4
ROR registro,1
2
2
2
3
3
ROR registro,CL
2
8+4*bits
5
3
3
ROR registro, contador
3 (no existe)
5
3
2
ROR memoria, contador
3-6 (no existe)
8#
7
4
ROR memoria,1
2-4
15(23)+EA
7#
7
4
ROR memoria,CL
2-4 20(28)+EA+4*bits
8#
7
4
SAHF
1
4
2
3
2
SAL
registro,1
2
2
2
3
3
SAL
registro,CL
2
8+4*bits
5
3
3
SAL
registro, contador
3 (no existe)
5
3
2
SAL
memoria, contador
3-6 (no existe)
8#
7
4
SAL
memoria,1
2-4 15(23)+EA
7#
7
4
SAL
memoria,CL
2-4 20(28)+EA+4*bits 8 #
7
4
SAR
registro,1
2
2
2
3
3
SAR
registro,CL
2
8+4*bits
5
3
3
SAR
registro, contador
3 (no existe)
5
3
2
SAR
memoria, contador
3-6 (no existe)
8#
7
4
SAR
memoria,1
2-4
15(23)+EA
7#
7
4
SAR
memoria,CL
2-4 20(28)+EA+4*bits
8#
7
4
SBB
registro, registro
2
3
2
2
1
SBB
registro, memoria
2-4
9(13)+EA
7#
6
2
SBB
memoria, registro
2-4
16(24)+EA
7#
7
3
SBB
registro, inmediato
3-4
4
3
2
1
SBB
memoria, inmediato
3-6
17(25)+EA
7#
7
3
SBB
acumulador, inmediato
2-3
4
3
2
1
SCAS
1
15(19)
7
7
6
SCAS (REP)
1
9+15(19)*n
5+8*n
5+8*n 5 (CX=0) 7+5*n
SETcc registro8
2 (no existe) (no existe)
4
4
SETcc memoria8
4-6 (no existe) (no existe)
5
3
SHL registro,1
2
2
2
3
3
SHL registro,CL
2
8+4*bits
5
3
3
SHL registro, contador
3
(no existe)
5
3
2
SHL memoria, contador
3-6
(no existe)
8#
7
4
SHL memoria,1
2-4
15(23)+EA
7#
7
4
SHL memoria,CL
2-4 20(28)+EA+4*bits
8#
7
4
SHLD registro16, registro16, inmediato8 4 (no existe) (no existe)
3
2

SHLD memoria16, registro16, inmediato8 6-8 (no existe) (no existe)


7
3
SHLD registro32, registro32, inmediato8 4 (no existe) (no existe)
3
2
SHLD memoria32, registro32, inmediato8 6-8 (no existe) (no existe)
7
3
SHLD registro16, registro16, CL
3 (no existe) (no existe)
3
2
SHLD memoria16, registro16, CL
5-7 (no existe) (no existe)
7
3
SHLD registro32, registro32, CL
3 (no existe) (no existe)
3
2
SHLD memoria32, registro32, CL
5-7 (no existe) (no existe)
7
3
SHR registro,1
2
2
2
3
3
SHR registro,CL
2
8+4*bits
5
3
3
SHR registro, contador
3
(no existe)
5
3
2
SHR memoria, contador
3-6
(no existe)
8#
7
4
SHR memoria,1
2-4
15(23)+EA
7#
7
4
SHR memoria,CL
2-4 20(28)+EA+4*bits 8 #
7
4
SHRD registro16, registro16, inmediato8 4 (no existe) (no existe)
3
2
SHRD memoria16, registro16, inmediato8 6-8 (no existe) (no existe)
7
3
SHRD registro32, registro32, inmediato8 4 (no existe) (no existe)
3
2
SHRD memoria32, registro32, inmediato8 6-8 (no existe) (no existe)
7
3
SHRD registro16, registro16, CL
3 (no existe) (no existe)
3
2
SHRD memoria16, registro16, CL
5-7 (no existe) (no existe)
7
3
SHRD registro32, registro32, CL
3 (no existe) (no existe)
3
2
SHRD memoria32, registro32, CL
5-7 (no existe) (no existe)
7
3
STC
1
2
2
2
2
STD
1
2
2
2
2
STI
1
2
2
3
5
STOS
1
11(15)
3
4
5
STOS (REP)
1
9+10(14)*n
4+3*n
5+5*n 5 (CX=0) 7+4*n
SUB
registro, registro
2
3
2
2
1
SUB
registro, memoria
2-4
9(13)+EA
7#
6
2
SUB
memoria, registro
2-4
16(24)+EA
7#
7
3
SUB
registro, inmediato
3-4
4
3
2
1
SUB
memoria, inmediato
3-6
17(25)+EA
7#
7
3
SUB
acumulador, inmediato
2-3
4
3
2
1
TEST registro, registro
2
3
2
2
1
TEST registro, memoria
2-4
9(13)+EA
6#
5
2
TEST memoria, registro
2-4
16(24)+EA
6#
5
2
TEST registro, inmediato
3-4
4
3
2
1
TEST memoria, inmediato
3-6
17(25)+EA
6#
5
2
TEST acumulador, inmediato
2-3
4
3
2
1
WAIT
1
3
3
6
1-3
XCHG AX,registro16
1
3
3
3
3
XCHG registro, registro
2
4
3
3
3
XCHG memoria, registro
2-4
17(25)+EA
5#
5
5
XLAT
1
11
5
5
4
XOR
registro, registro
2
3
2
2
1
XOR
registro, memoria
2-4
9(13)+EA
7#
6
2
XOR
memoria, registro
2-4
16(24)+EA
7#
7
3
XOR
registro, inmediato
3-4
4
3
2
1
XOR
memoria, inmediato
3-6
17(25)+EA
7#
7
3
XOR
acumulador, inmediato
2-3

3.4.-SECCION DE CONTROL DE PERIFRICOS


3.4.1.- CONTADOR TEMPORIZADOR PTI 8253
El 8253 es un chip temporizador que puede ser empleado como reloj de tiempo real,
contador de sucesos, generador de ritmo programable, generador de onda cuadrada,
etc.
Tiene 5 modos de operacin:

MODO 0: Interrupt On Terminal Count (Interrupcin al final de la cuenta). Es


empleado tpicamente para contar sucesos.
MODO 1: Hardware Retriggerable One-Shot (Monoestable programable). Se redispara
con flanco de subida de GATE, permaneciendo en bajo hasta que el contador alcance el
cero.
MODO 2: Rate Generator (Generador de ritmo). En este modo, el contador funciona
como un divisor por N. Es empleado tpicamente para las interrupciones de los relojes
de tiempo real.
MODO 3: Square Wave Mode (Generador de onda cuadrada). Este modo es empleado
normalmente para la generacin de una seal de onda cuadrada.
MODO 4: Software Triggered Mode (Pulso Strobe iniciado por software). OUT est
en alto al principio; cuando la cuenta inicial expira, OUT baja durante un pulso de reloj y
luego vuelve a subir.
MODO 5: Hardware Triggered Strobe (Pulso Strobe iniciado por hardware). OUT
estar en alto al principio: con el flanco de subida de la seal GATE, el contador
comienza a decrementar la cuenta. Cuando llega a cero, OUT baja durante un pulso CLK
y luego vuelve a subir.
Los tres contadores que dispone este circuito integrado, se destinan a las siguientes
funciones:

CONTADOR 0: Genera una peticin de interrupcin cada cierto tiempo, que se aplica a
la lnea IRQ0 del controlador de interrupciones 8259(ligado a la INT 8, que a su vez
invoca a INT 1Ch). Esta interrupcin envia a la CPU a ejecutar una rutina de
actualizacin del calendario y el reloj del sistema.
CONTADOR 1: Se emplea de refresco de la DRAM. Cada cierto tiempo solicita
atencin del controlador DMA 8237, que se encarga de efectuar el refresco de las
DRAM, cuyo valor normal para el divisor es 18; aumentndolo se puede acelerar el
funcionamiento del ordenador, en los PC/XT se puede aumentar entre 19 y 1000 sin
demasiados riesgos, acelerndose en ocasiones hasta casi un 10% la velocidad de
proceso del equipo.
CONTADOR 2: Genera frecuencias audibles para el altavoz. . Este contador ha sido
conectado con el doble propsito de temporizar y de generar sonido. Para emplearlo en
las temporizaciones, es preciso habilitar la puerta GATE activando el bit 0 del puerto
61h; tambin hay que asegurarse de que la salida del contador no est conectada al
altavoz (a menos que se desee msica mientras se cronometra) poniendo a 0 el bit 1 del
mismo puerto (61h)

3.4.2.- ADAPTADOR DE PERIFRICOS PARALELO, PPI 8255


El PPI 8255 es un dispositivo de E/S general, programable, capaz de controlar 24 lneas
con diferentes configuraciones (entrada/salida) y en hasta 3 modos de operacin.
El 8255 de los PC/XT est conectado a la direccin base E/S 60h; por ello, los puertos
A, B y C se acceden, respectivamente, a travs de los puertos de E/S 60h, 61h y 62h; la
palabra de control se enva por el puerto 63h: la BIOS del PC y XT programa el 8255
con una palabra de control 10011001b, que configura todos los puertos en el modo 0, con
el A y C de entrada y el B de salida.
En la XT el PPI esta dedicado especialmente a la adaptacin y almacenaje de los datos
que llegan del teclado, pero tambin se usa para realizar pequeas tareas, como leer el
estado de los microruptores (PC0-PC3 y PB3) y de controlar el modulo de audio
(PB0,PB1,PC4, PC5) que maneja al altavoz y la velocidad en los XT-Turbo.
El teclado enva la informacin de cada tecla pulsada en serie y el conversor
serie/paralelo paralelo/serie 74ls322 la traduce a formato paralelo y la introduce a la
puerta A del PPI.
Las lneas PB2,PB6,PB7 del PPI tienen distintas funciones de control de teclado.
Las lneas PB4,PC6 y PC7 se usan para la deteccin y el control de los posbles errores de
paridad
El 8255 tiene 3 modos de operacin:
-

MODO 0: funciones de entrada/salida para cada bit de los 2 puertos de 8 bits y los 2
puertos de 4 bits; los datos son ledos y escritos sin ms, sin ningn tipo de control
adicional. Los puertos pueden ser configurados de entrada (sin latch) o salida (los datos
permanecen memorizados en un latch).
MODO 1: strobed input/output (entrada/salida a travs de un protocolo de seales).
Existen dos grupos (A y B) formados por los puertos A y B ms el puerto C, que es
repartido a la mitad entre ambos grupos para gestionar las seales de control.

MODO 2: bus bidireccional de 8 bits, por el que los datos pueden ir en un sentido o en
otro, siendo el flujo regulado de nuevo por seales de control a travs del puerto C.
Tanto las entradas como salidas son almacenadas en latch.

3.4.3.- DECODIFICADOR DEL MAPA DE E/S


Se usa le 74LS138, que decodifica las seales procedentes del bus interno del sistema
(XA5-XA9,/CPUBUSON,/XIOW) y obtiene las seales de control para la seleccin de
los perifricos situados en el mapa de E/S (DMA.PIC,PPI,PTI)

3.4.4.- ADAPTADOR DE TECLADO


El componente fundamental que soporta la adaptacin del teclado a la placa es el
74LS322, que es un adaptador serie/ paralelo y paralelo/serie, basado en un registro
universal interno de 8 bits. Dispone de 8 lneas de entrada y salida paralelo,
multiplexadas y de carcter tri-state y una lnea para entrada y salida serie.
Cada vez que se mandan datos serie desde el teclado se genera una interrupcin en la
CPU, mediante la activacin de la lnea IRQ1. La IRQ1 es gestionada por el Controlador
programable de interrupciones 8259
El adaptador puede trabajar en 4 modos y en el caso que se estudia funciona con
entrada serie y desplazamiento a la derecha.

3.4.5.- MICRORUPTORES PARA LA CONFIGURACION DEL SISTEMA


Segn la posicin de estos microruptores o switch se configura al microcomputador, de
acuerdo con las tarjetas colocadas en los zcalos de expansin y la memoria fsicamente
implementada. El control de los microruptores lo realiza el buffer unidireccional
74ls244, que se encarga de transmitir la informacin procedente de los microrruptores
a las 4 lineas de menor peso del puerto C del PPI.

3.4.6.- SECCION DMA


El acceso directo a memoria es una tcnica de diseo del hardware que permite a los
perifricos conectados a un sistema realizar transferencias sobre la memoria sin la
intervencin del procesador.
Como la memoria del ordenador slo puede ser accedida a un tiempo por una fuente, en
el momento en que el DMA realiza las transferencias el microprocesador se desconecta
de los buses, cedindole el control. El funcionamiento del controlador de DMA se basa
en unos registros que indican la direccin de memoria a ser accedida y cuntas
posiciones de memoria quedan an por transferir.
Esta secciona esta implementada bsicamente por el 8237 que es un controlador de
DMA de 4 canales programables en 3 modos diferentes, con posibilidad de ser
conectado en cascada con otros de su misma especie. se encarga de realizar 2
importantes misiones, mediante los 4 canales de DMA que dispone:

Refresco de las memorias DRAM, mediante canal 0.


Transferencias directas entre la memoria principal y perifricos de memoria de masa,
tales como discos , cintas, etc. Para esto dedica los 3 canales restantes
Cuando funciona el DMA, previamente solicita al a CPU la concesin del control de los
buses. Una vez que han pasado a tri-state las lneas de la CPU, el CDMA (controlador de
DMA) pasa a gobernarlas y las carga con direcciones, comandos y seales de control.
El 8237 puede atender 4 dispositivos diferentes la mismo tiempo, c/u a travs de un
canal.
Las operaciones fundamentales del DMA son:
1) Lectura: Transferencia del mapa de memoria al de E/S
2) Escritura: Transferencia del mapa de E/S al de memoria principal
El 74LS670 denominado page register file, almacena el estado de las 4 lneas de mas
peso del bus de direcciones.

3.5.-SECCION DE EXPANSIONES
El canal de entrada/salida es una extensin del bus del Microprocesador 8088. Estos son como
demultiplexadores, repotenciadores y alzadores para la adicin de interrupciones y las
funciones del acceso directo a memoria (DMA).
El canal de entrada/salida contiene un data-bus bidireccional de 8 bits, 20 lneas de
direcciones, 6 niveles de interrupcin, lneas de control para la memoria de I/O lectura o
escritura, lneas de tiempo del reloj, 3 canales de DMA channel-check line, y fuente y tierra
para los adaptadores. Cuatro niveles de voltaje son provistos para las tarjetas de I/O: +5Vdc,
-5Vdc, +12Vdc, y
-12Vdc. Esas funciones son provistas en el conector de 62 pines con
100-mil card-tab-spacing.
Esta formada por 8 conectores o zcalos hembra, para soportar tarjetas de expansin que se
precisen. Se distinguen 2 tipos de conectores: los denominados J1-J7 y el J8 que es diferente
a los dems.
Los conectores J1-J7 se usan para aadir hardware adicional al sistema bsico del
microcomputador. Cada uno dispones de 62 contactos o pines, que suministran todas las lneas
de direcciones, datos y control precisas en el acoplamiento de gran variedad de opciones.
Los circuitos existentes en las tarjetas de expansin no pueden gobernar directamente el bus,
funcionando siempre como slave. Con el fin de facilitar las transferencias de datos a la
memoria principal, a elevada velocidad, se emplean los canales 1,2 y 3 del CDMA
El conector J8 es mas limitado, permitiendo, nicamente, el acceso al bus externo, pero no al
del sistema. De esta forma no tiene posibilidad de utilizar canales de DMA.
Una lnea lista esta disponible en el canal de entrada y salida para permitir una lenta
operacin con los artificios (devices) de memoria de I/O. Si el canal esta listo la linea no esta
activada por la instruccin direccionada, toda la generacin (ciclos) del procesador de memoria
de lectura y escritura toman 4*210 ns de reloj 840 ns/byte. la I/O generada por el
procesador requiere ciclos de lectura y escritura (5 ciclos o un tiempo de 1.05 us / byte). Los

ciclos de refresco ocurren una vez cada 72 ciclos de reloj (aproximadamente 15 s) y requiere
4 ciclos o aproximadamente el 7% del ancho de banda del bus.
Los artificios de I/O son direccionados usando el espacio de direcciones mapeado de I/O. El
canal esta diseado as; 768 artificios direccionados estn disponibles para los canales de las
tarjetas de I/O.
El channel-check existen instrucciones para el reporte de las condiciones de error del
procesador. Activando esta instruccin resulta una interrupcin no esnmascarable (NMI)
al procesador 8088. Las opciones de memoria de expansin son usadas en las instrucciones de
reporte de errores de paridad.
El canal de I/O es repotenciado para proveer suficiente informacin a la fuente de todos los
ocho slots de expansin (J1 hasta J8), asumiendo dos bajas potencias Schottky (LS) cargadas
por slot. El adaptador IBM de I/O es usado tpicamente solo para carga.
Los requerimientos de timing en el slot J8 son mas estrictos que los otros (slots J1 hasta J7).
El slot J8 tambin requiere que la tarjeta provea una seal (designar) cuando la tarjeta es
seleccionada. Las paginas mostradas describen el canal de I/O del system board.

Descripcin del Canal de I/O

Se muestra la descripcin del canal del computador personal IBM XT. Todas las instrucciones
son compatibles con TTL.
Seal
OSC

I/O
O

Descripcin.
Oscilador: Reloj de alta velocidad con un periodo de 70ns (14.31818
MHz) Tiene un ciclo de duracin del 50% .
CLK
O
Sistema de reloj: Esta dividido por tres (del oscilador) y tiene un
periodo de 210 ns (4.77 MHz) El reloj tiene un ciclo de duracin del 33%.
RESET DRV O
Esta instruccin es usada para resetear o inicializar el sistema o por
power-up (apagado) durante una baja de salida de voltaje.
A0-A19
O
Los bits de direcciones son de 0 a 19. Esas instrucciones son usadas en
la direccin de memoria y los artificios de I/O con el sistema; las 20
lneas de direccin permiten accesar a la parte superior de 1Mb de
memoria. A0 es el bit menos significativo (LSB) y el A19 es el mas
significativo (MSB). Esas instrucciones son generadas por el octavo
controlador DMA del procesador. Tienen nivel activo alto.
D0-D7
I/O Bits de datos del 0 al 7: Estas instrucciones proveen bits 0 al 7 al bus de
datos del procesador, los artificios de la memoria de I/O. D0 es el bit
menos significativo (LSB) y el D7 es el bit mas significativo (MSB). Tienen
nivel activo alto.

ALE

O
Address Latch Enable: Estas instrucciones son provistas por el
controlador del bus 8288 y usan el latch valido del system board
direccionado del procesador. Esta disponible al canal de I/O como un
indicador de direccin de proceso valido (cuando es usado con AEN). Las
direcciones del procesador son latcheadas con el edge de fallo de ALE.
I/O CH CK
I
I/O Channel-check: Esta instruccin provee al procesador con (error
de paridad) informacin en la memoria o divisiones del canal de I/O.
Cuando la seal es activada con nivel bajo en un indicador de error de
paridad.
/I/O CH RDY
I
I/O Channel-Ready: Esta instruccin normalmente esta activada por
nivel alto, en nivel bajo no esta activada por la memoria o el artificio de
I/O por el ancho los ciclos de memoria. Esto permite divisiones lentas
para la aceptacin del canal de I/O con un mnimo de dificultad. Algunas
veces las divisiones lentas usadas en las instrucciones sern conducidas
inmediatamente sobre la deteccin de direcciones validas y el comando de
lectura y escritura. Esta instruccin nunca ser tomada en algo mas bajo
que 10 ciclos de reloj. Los ciclos maquina (o memoria de I/O) son
extendidos a un numero integral de ciclos de CLK (210 ns).
IRQ2-IRQ7
I
Interrupt request 2 a 7: Estas lneas son usadas para la seal del
procesador que requiere atencin de artificios de I/O. Ellos son
priorizados con IRQ2 como la prioridad mas alta y IRQ7 es la mas baja.
Una peticin de interrupcin es generada por el levantamiento de la
instruccin IRQ (nivel bajo o alto) y se queda en nivel alto hasta que es
reconocida por el procesador (rutina de interrupcin de servicio).
/IOQ
O
I/O Read Command: Este comando instruye al artificio de I/O para
conducir un dato sobre el bus de datos. Esto puede ser conducido por el
procesador o el controlador de DMA, esta seal es de nivel activo bajo.
/IOW
O
I/O Write Command: Este comando instruye al artificio de I/O para
leer un dato del bus de datos. Esto puede ser conducido por el procesador
o el controlador de DMA, es de nivel activo bajo.
/MEMR
O
Memory Read Command: Este comando instruye al artificio de I/O para
almacenar un dato del bus de datos. Esto puede ser conducido por el
procesador o el controlador de DMA, es de nivel activo bajo.
/MEMW
O
Memory Write Command: Este comando instruye al artificio de I/O
para almacenar un dato presente sobre el bus de datos. Esto puede ser
conducido por el procesador o el controlador de DMA, es de nivel activo
bajo.
DRQ1-DRQ3
I
DMA request 1 a 3: Estas instrucciones son canales asncronos de
peticin usados por los perifricos para la divisin de ganancia del servicio
DMA. Ellos son priorizados con DRQ3, estando en el nivel mas bajo y
DRQ1 en el mas alto. Una peticin es generada por la ejecucin de la
instruccin a DRQ para un nivel activo (alto). La instruccin DRQ podra
ser alta hasta la correspondiente DACK sea activada.

/DACK0-3

AEN

T/C

/CARD SLCTD I

DMA Acknowledge 0 a 3: Estas instrucciones son usadas para el


reconocimiento de peticiones DMA (DRQ1-DRQ3) y el refresco del
sistema de memoria dinmica (DACK0) Ellos son de nivel bajo.
Address Enable: Esta instruccin es usada para liberar al procesador y
otros artificios del canal de I/O para permitir la transferencia de DMA al
lugar a tomar. Cuando esta instruccin esta activa (alto) el controlador de
DMA tiene el control de la direccin del bus, bus de datos, comando de
lectura (I/O y memoria) y el comando de escritura (I/O y memoria).
Terminal Count: Esta instruccin provee un pulso cuando el terminal de
cuenta para el canal de DMA es alcanzado. Esta seal es de nivel activo
alto.
Card Select: Esta instruccin es activada por la tarjeta de expansin J8,
estas seales indican al sistema que la tarjeta ha sido seleccionada y que
los drivers apropiados en el sistema sern direccionados a la octava (J8),
lectura de, o escritura para, slot de expansin J8. Los conectores J1
hasta J8 son ligados juntos a este pin, pero el sistema no usa esa seal.
Esta instruccin ser conducida por colector abierto.

Los siguientes voltajes estn disponibles en el canal de I/ O del sistema:


+5Vdc + 5% localizado en dos pines del conector.
-5Vdc + 10% localizado en un pin del conector.
+12Vdc + 5% localizado en un pin del conector.
-12Vdc + 10% localizado en un pin del conector.
GND (tierra) localizado en 3 pines del conector.

3.6.-SECCION DE CONTROL EXTERNO


Se encarga de recoger las informaciones de los buses del sistema y transformarlas en las que
requiere el bus externo que utilizan los elementos que se acoplan al microcomputador.
Para formar el bus de datos se utiliza el transceptor 74LS245, que recibe al bus de datos del
sistema y proporciona el bus de datos externo.
Las lneas del bus de direcciones del sistema son conformadas en bus de direcciones externo
mediante 3 amplificadores o driver 74LS244 . En los ciclos DMA las lneas de bus de
direcciones externo XA0-XA7 son proporcionadas directamente desde el DMA, necesitndose
otro driver 74LS244 para producir lneas desde el CDMA hasta el bus de direcciones del
sistema.
3.7.-SECCIN DE FUENTE DE ALIMENTACIN
La fuente DC del sistema es a 130 watt, regulador switching de nivel 4 de voltaje. Esto esta
integrado dentro del sistema y las unidades de fuentes para el sistema, estas opciones estn
en el teclado. La fuente provee 5V a 15A con el 5% mas o menos, +12V a 4.2A al 5%-5Va

300mA al 10%, y -12V a 250mA al 10%. Todos los niveles de voltaje estan regulados con sobrevoltaje y proteccion contra sobre-corriente. La entrada es de 120V a.c. con fusible, si existen
condiciones de sobrecarga de voltaje dc. La fuente automticamente cierra la conexin hasta
que las condiciones sean adecuadas, es diseada para operar continuamente a 130 watts.
El sistema toma aproximadamente 2 a 4A de 5Vdc, permitiendo unos 11A de +5Vdc para el
adaptador en los slots de expansin. La fuente de +12Vdc esta diseada para proporcionar
alimentacin a la disketera de 5-1/4 pulg. La fuente de -5Vdc es usada para circuitos
analgicos en el adaptador Phase Lock Loop. La fuente de +12Vdc y -12Vdc es usada para
alimentar a los drivers EIA para los adaptadores de comunicaciones. Las 4 fuentes estn
buseadas a travs de los 8 slots de expansin. El Display Monocromo IBM tiene una fuente de
energa autosuficiente recibiendo la alimentacin de a.c. de la unidad de poder del sistema. La
salida a.c. para el Dsiplay es conmutada a on y off con el switch de poder y es un conector no
estndar aunque solamente el Display Monocromo IBM pueda ser conectado.
La fuente de poder esta localizada en el rea derecha de la unidad del sistema. Estas fuentes
operan los voltajes del system board y el Display Monocromo IBM y proveen dos conexiones
separadas para alimentar a la disquetera de 5-1/4 pulgadas y la disquetera normal.
La potencia nominal requerida y los voltajes de salida estn listados en las tablas mostradas:
Voltaje @ 50/60 Hz
Nominal Vac Mnimo Vac
110
90

Mximo Vac
137

Requerimientos de entrada
Frecuencia : 50/60 Hz +/- 3Hz
Corriente : 4.1 max @ 90 Vac
Voltaje
Vdc

Corriente(Amp
s.)

Nominal
+5.0
-5.0
+12.0
-12.0

Mnimo

Mximo
2.3
0.0
0.4
0.0

Regulacin
(Toleranci
a)
+%
-%
15.0
0.3
4.2
0.25

Vdc Salida
Voltaje Vac
Nominal
120

Corriente(Amps.)
Mnimo
Mximo
0.0
1.0

Voltaje limite Vac


Mnimo
Mximo
88
137

5
10
5
10

4
8
4
9

Los conectores de la fuente del sistema son 12 pines conector (hembra)


que se acoplan alos
conectores de la fuente de poder .Ahora mostramos las configuraciones de los pines :

4.- PERIFRICOS
Como ya sabemos se conoce como perifericos a todos los dispositivos, como unidades de disco,
impresoras, mdem o joysticks, que estn conectados a un ordenador o computadora y son
controlados por su microprocesador. A pesar de que el trmino perifrico implica a menudo el
concepto de adicional pero no esencial , muchos son elementos fundamentales para un sistema
informtico. Los teclados, las pantallas y los ratones se consideran tambin dispositivos
perifricos.
El microprocesador 8088, tenia pues perifericos, comparandolos con los procesadores de hoy,
son casi los mismos aunque claro la tecnologia usada ha cambiado bastante, ademas hoy
tenemos mucho mas perifericos. El microprocesador 8088 permita el uso de gran variedad de
accesorios, que incluye monitor de color o monocromo, unidades de disco adicionales, discos
duros, adaptadores de comunicaciones para mdem (modulador - demodulador), adaptadores de
juegos y de joystick, tarjetas de expansin de memoria, y una amplia gama de impresoras. La
tabla siguiente muestra las caracteristica del PC XT, para darnos una idea de los perifericos
que podian conectarse a esta maquina,

Caracteristicas:
CPU:
Frecuencia
reloj:

del

Microprocesador de 8-16bits Intel 8088


4.77 MHz

Memoria:

64 KBytes RAM expandible a 256 KBytes en


los primero modelos, hasta 640 KBytes en los
modelos
posteriores.
64 KBytes ROM

Teclado:

Standart QWERTY 84 o 101 teclas con teclado


nmerico y teclas de funcin.

Texto:

40x24 o 80x24

Colores:

16

Graficos:

Tarjeta CGA (Color Graphics


320x200x2 640x200x1

Sonido:

Adapter)

Speaker

Puertos:

8 slots internos (5 slots


1
Puerto
1
Salida
1
Puerto
1 Puerto Centronics.

Extras:

1
Disquetera
de
5"1/4
1 Disco Rigido de 10 o 20 MBytes

Almacenamiento:

Disqueteras o discos rigidos

Sistema
Operativo:

PC-DOS, MS-DOS, CP/M86

Ao/Origen:

1983 EE.UU.

ISA

8-bits)
RGB
video
RS-232C

360Kbytes

Estos dispositivos permiten al usuario del ordenador introducir datos, comandos y programas
en la CPU. El dispositivo de entrada ms comn es un teclado similar al de las mquinas de
escribir. La informacin introducida con el mismo, es transformada por el ordenador en
modelos reconocibles. Otros dispositivos de entrada son los lpices pticos, que transmiten
informacin grfica desde tabletas electrnicas hasta el ordenador; y el joysticks, que
convierte el movimiento fsico en movimiento dentro de una pantalla de ordenador. Tambin es
posible utilizar los dispositivos de almacenamiento para introducir datos en la unidad de
proceso.
4.1.-EL TECLADO
Un teclado es un perifrico de entrada, que convierte la accin mecnica de pulsar una serie
de pulsos elctricos codificados que permiten identificarla. Las teclas que lo constituyen
sirven para entrar caracteres alfanumricos y comandos a un computador.
En un teclado se puede distinguir a cuatro subconjuntos de teclas:
*TECLADO ALFANUMERICO, con las teclas dispuestas como en una maquina de escribir.
*TECLADO NUMERICO, con teclas dispuestas como en una calculadora.
*TECLADO DE FUNCIONES, (desde F1 hasta F10 o F12) son teclas cuya funcin depende del
programa en ejecucin.

*TECLADO DE CURSOR, para ir con el cursor de un lugar a otro en un texto. El cursor se


mueve segn el sentido de las flechas de las teclas, ir al comienzo de un prrafo ("HOME"),
avanzar/retroceder una pagina ("PAGE UP/PAGE DOWN"), eliminar caracteres ("delete"), etc.
Para los modelos AT existen dos tipos de teclados estndares:
*MF-1: con 84 teclas.
*MF-2: 101teclas (americano) 102 teclas (europeo).
Dentro de cada tipo puede haber diferencias en la ubicacin de algunas teclas, como la barra
inversa, a la izquierda (\), "ESC".
En el MF-2 las teclas de funcin presentan dos teclas ms (f11 y f12), y todas se encuentran en
la parte superior del teclado, por lo cual es ms ancho que el MF-1.
4.2.-SONIDO
El PC SPEAKER, o parlante de la pc, es
gabinete. Aunque es capaz de reproducir
"se producen groseras saturaciones" con
capaz de emitir, mediante los parlantes,
44.1Khz.

pequeo y se encuentra montado en el interior del


algunos sonidos, la calidad de estos es incomparable
la de los que produce una actual tarjeta de sonido,
sonido amplificado con frecuencias de muestreo de

4.3.- VIDEO
En la configuracin de la IBM P.C., se contemplaban dos adaptadores de video: uno monocromo
que admite texto y otro que admite texto y grficos de color.
En la primera, la mquina generaba 25 lneas de 40 caracteres cada una (en tono verde, mbar
o blanco), visualizados parpadeantes o subrayados.
La tarjeta incluye una interfase para impresora en paralelo de 80 caracteres por segundo.
Aunque IBM nunca lo acept, se llam (y an se llama) a sta placa por el nombre de su
diseador: Hercules.
4.4.- IMPRESORAS
Una impresora permite obtener en un soporte de papel una hardcopy: copia visualizable,
perdurable y transportable de la informacin procesada por un computador:
Para imprimir, las impresoras constan de tres subsistemas:
Circuitos de preparacin y control de impresin.
Transporte de papel.
Mecanismo de impresin sobre papel.
El proceso de impresin es ordenado en un programa en alto nivel mediante una orden tipo
PRINT. Al ser traducido a cdigo de mquina, dicha orden se convierte en un llamado a una
subrutina del S.O o de la ROM BIOS.
La forma ms corriente y veloz de conectar una impresora a una PC es la conexin, mediante
el conector tipo D de 25 patas (puerto paralelo).

La conexin serie, supone un solo cable para enviar los datos a imprimir, bit a bit, desde el port
a la impresora. Se usa para imprimir lentamente a distancia( hasta unos 15 mtts del
computador), debido a que la conexin en paralelo solo permite distancias de hasta 3 4 mts.
Por la interferencia elctrica entre lneas.
Impresora de impacto por matriz de agujas.
Recibe este nombre por que su cabezal mvil de la impresin contiene una matriz de agujas
mviles en conductos del mismo, dispuestas en una columna o ms columnas.
Es una impresora por impacto: si una aguja es impulsada hacia fuera del cabezal por un
mecanismo basado en un electroimn impacta una cinta entintada, y luego retrocede a su
posicin de reposo merced a un resorte. La cinta sobre la zona de papel a imprimir al ser
impactada por una aguja transfiere un punto de su tinta al papel. As una aguja de 0,2 mm. de
dimetro genera un punto de 0,25 mm. de dametro.
Muchas impresoras presentan adems RAM para definir matrices de otras tipografas no
incorporadas.
La desventaja de estas impresoras es que son ruidosas y su baja velocidad. Una pgina por
minuto en modo texto y hasta tres en borrador . Una resolucin tpica puede ser 120 X 70
d.p.i. Los 120 d.p.i se deben a que el cabezal se dispara cada 1/120 de pulgada en su movimiento
horizontal. Tambin hay de 60 y 240 d.p.i. Los 70 d.p.i de resolucin vertical suponen que entre
dos agujas existe una separacin de 1/70 de pulgada. Tambien la resolucin depende del
dimetro de las agujas, para obtener puntos ms pequeos.
Los grficos no salen muy bien y tardan mucho en estas impresoras. Esto se debe a que en
modo grfico se le debe enviar al buffer de la impresora los bytes que indican que agujas
deben dispararce en cada posicin del cabezal. En texto en cambio solo debe enviarse a dicho
buffer el cdigo ASCII de los caracteres a imprimir.
4.5.-DISCO RIGIDO
Estn fabricados con una aleacin de aluminio con un recubrimiento magntico
El cabezal de lectura-escritura esta compuesta de varios cabezales unidos entre s, tanto
fsica como elctrica y electrnicamente. Esta unidad es mucho ms frgil que la de las
disqueteras, ya que las cabezas vuelan sobre la superficie del disco, es decir, se encuentra a
una distancia de varias micras del disco sin llegar a tocarlo. El campo magntico que se crea
entre las superficies metlicas del disco y los cabezales es lo suficientemente amplio como
para poder leer o escribir sobre ellos, pero a unas velocidades mucho mayores que en los discos
flexibles, ya que prcticamente no existe rozamiento alguno.
Circuito impreso controlador: Situado en la parte inferior del conjunto de disco duro. Contiene
los dispositivos electrnicos que controlan: la velocidad de giro, la posicin de la cabeza de
lectura-escritura y la activacin de obtencin o grabacin de datos. Este circuito consta, en un
principio, de tres conectores: Dos planos de pistas doradas y uno blanco con cuatro patillas
AMP hembra. Los primeros se utilizan para comunicarse el disco duro con su tarjeta
controladora que esta unida a la CPU, mediante otro conector plano.

4.6.-CINTAS PARA BACKUP


Este tipo de sistemas se impuso debido a una gran cantidad de discos duros no removibles.
El soporte fsico empleado es parecido a un casete, pero en dimensiones mayores. Las unidades
de lectura-escritura son del tamao de una disquetera , sus ventajas son la gran capacidad de
almacenamiento (aprox. 100 Mbytes a 700 Mbytes); La alta velocidad de transferencia un
tiempo tpico es de 10 min. ; tamao compatible y un bajo costo.
4.7.- DISKETTES
En los modelos de PC XT , se incluia una disquetera de 5 : , y en en algunos modelos la de 3
:
Diskettes de 5 :
Estn compuestos por una lamina de poliester (plstico flexible) de forma circular, recubierta
por una pelcula de material magnetizable.
La lamina de poliester impregnada en la pelcula magntica, esta cubierta con una funda
flexible, normalmente cloruro de vinilo, en cuyo interior se encuentra un forro especial que
sirve para proteger el disco del polvo y en cierta medida del calor y la humedad.
Diskettes 3 :
Tiene prcticamente el mismo mecanismo que el de 5 , pero es diferentes en tamao (fsico y
en Kbytes) la funda es de plstico rgido con una pestaa corrediza en un borde que al entrar a
la unidad de disco esta se corre automticamente.

4.8.- MODEM
La comunicacin entre PCs se logra mediante la utilizacin de las redes telefnicas y modems.
El mdem para los PC XT era externo. Su funcin es permitir conectar un computador a una
lnea telefnica, para recibir o transmitir informacin.
Cuando un mdem transmite, debe ajustar su velocidad de transmisin de datos, tipo de
modulacin, correccin de errores y de compresin. Ambos modems deben operar con el mismo
estndar de comunicacin.
Cuando un mdem transmite tonos se dice que modula o convierte la seal digital binaria
proveniente de un computador en dichos tonos que representan o portan bits.
Del mismo modo que el odo de la persona que en el extremo de la lnea puede reconocer la
diferencia de frecuencia entre los tonos del 0 y 1, otro mdem en su lugar tambin detecta
cual de las dos frecuencias esta generando el otro mdem, y las convierte en los niveles de
tensin correspondiente al 0 y al 1.
Esta accin del mdem de convertir tonos en seales digitales, o sea en detectar los ceros y
unos que cada tono representa, se llama demodulacion.
INTERFAZ RS-232C:

A fin de que equipos de computacin y modems de distintos fabricantes puedan


interconectarse de manera universal, la norma americana rs-232c (ccitt v.24 internacional)
especifica caractersticas mecnicas, funcionales y elctricas que debe cumplir la
interconexin entre un computador y un mdem.
Un mdem comprende hardware para conectarlo a un port serie de PC.
Buses del sistema
El bus se puede definir como un conjunto de lneas conductoras de hardware utilizadas para la
transmisin de datos entre los componentes de un sistema informtico. Ya que es el bus del
sistema el que permite la comunicacin entre perifericos y microprocesador, incluimos esta
parte dentro de perifericos. Un bus es en esencia una ruta compartida que conecta diferentes
partes del sistema, como el microprocesador, la controladora de unidad de disco, la memoria y
los puertos de entrada/salida (E/S), para permitir la transmisin de informacin.
En el bus se encuentran dos pistas separadas, el bus de datos y el bus de direcciones. La CPU
escribe la direccin de la posicin deseada de la memoria en el bus de direcciones accediendo a
la memoria, teniendo cada una de las lneas carcter binario.
Los datos en si no se mandan al bus de direcciones sino al bus de datos. El bus XT tena solo 8
bits con lo cual slo poda transportar 1 byte a la vez. Si la CPU quera depositar el contenido
de un registro de 16 bits o por valor de 16 bits, tena que desdoblarlos en dos bytes y efectuar
la transferencia de datos uno detrs de otro.
El bus XT
Cuando en 1980 IBM fabric su primer PC, este contaba con un bus de expansin conocido
como XT que funcionaba a la misma velocidad que los procesadores Intel 8086 y 8088 (4.77
Mhz). El ancho de banda de este bus (8 bits) con el procesador 8088 formaba un tandem
perfecto (El bus XT era sncrono), pero la ampliacin del bus de datos en el 8086 a 16 bits
dejo en entredicho este tipo de bus (aparecieron los famosos cuellos de botella).
5.- PUERTOS

6.- APLICACIONES GENERALES DE LA FAMILIA 8088


Seguidamente mencionamos algunas aplicaciones del 8088:
-

Sistema de control de procesos


Impresoras de lnea
Osciloscopio de calculo
Analizador de sangre
Terminales inteligentes.
Multimetro digital
Terminal grafico
Sintetizador de frecuencia.

7.-ESQUEMATICOS DE SISTEMAS PC-XT.

8.- BIBLIOGRAFA
http://www.wikilearning.com/
http://atc.ugr.es/docencia/udigital
http://www.alpertron.com.ar/8088.HTM
http://www.monografias.com/
Angulo, Jose Maria ; Fundamentos Diseo y Programacin; 5ta edicin; pag 39-45, 758-798
Intel, Datasheet 8088 8-bit Hmos Microprocessor 8088/8088-2 , agosto 1990, pag 1-7
Ibm corp.
Ibm at technical reference. - 1984. 600 pginas.
IBM, Technical Reference Pc xt 8088 User Guide, Section Hardware
Ralf Brown.
Jon Beltrn de Heredia.
Lenguaje Ensamblador de los 80XX.

8.- BIBLIOGRAFA
http://www.wikilearning.com/
http://atc.ugr.es/docencia/udigital
http://www.alpertron.com.ar/8088.HTM
http://www.monografias.com/
Angulo, Jose Maria ; Fundamentos Diseo y Programacin; 5ta edicin; pag 39-45, 758-798
Intel, Datasheet 8088 8-bit Hmos Microprocessor 8088/8088-2 , agosto 1990, pag 1-7
Ibm corp.
Ibm at technical reference. - 1984. 600 pginas.
IBM, Technical Reference Pc xt 8088 User Guide, Section Hardware
Ralf Brown.
Jon Beltrn de Heredia.
Lenguaje Ensamblador de los 80XX.