el universo digital del ibm pc at y ps2

Upload: paul-diaz

Post on 31-Oct-2015

160 views

Category:

Documents


8 download

TRANSCRIPT

  • EL UNIVERSO DIGITAL DEL IBM PC, AT Y PS/2 Edicin 4.0 (4) Autor: Ciriaco Garca de Celis

    PRLOGO DE LA EDICIN 4.0 ELECTRNICA

    0 - PRLOGO DE LA TERCERA EDICIN (1994)

    1 - INTRODUCCIN

    1.1 - Nmeros binarios, octales y hexadecimales

    1.2 - Cambio de base

    1.3 - Estructura elemental de la memoria

    1.4 - Operaciones aritmticas sencillas en binario

    1.5 - Complemento a dos

    1.6 - Agrupaciones de bytes

    1.7 - Representacin de datos en memoria

    1.8 - Operaciones lgicas en binario

    2 - ARQUITECTURA E HISTORIA DE LOS MICROORDENADORES

    2.1 - Arquitectura Von Neuman

    2.2 - El microprocesador

    2.3 - Breve historia del ordenador personal y el DOS

    3 - MICROPROCESADORES 8086/88, 286, 386, 486 y Pentium

    3.1 - Caractersticas generales

    3.2 - Registros del 8086 y del 286

    3.3 - Registros del 386 y procesadores superiores

    3.4 - Modos de direccionamiento

    3.5 - La pila

    3.6 - Un programa de ejemplo

    4 - JUEGO DE INSTRUCCIONES 80x86

    4.1 - Descripcin completa de las instrucciones

    4.1.1 - De carga de registros y direcciones

    4.1.2 - De manipulacin del registro de estado

    4.1.3 - De manejo de la pila

    4.1.4 - De transferencia de control

    4.1.5 - De entrada/salida

    4.1.6 - Aritmticas

    Suma

    Resta

    Multiplicacin

    1 de 7 06/10/00 20:05

    EL UNIVERSO DIGITAL DEL IBM PC, AT Y PS/2 file:///C|/librosVirtuales/index.html

  • Divisin

    Conversiones

    4.1.7 - Manipulacin de cadenas

    4.1.8 - Operaciones lgicas a nivel de bit

    4.1.9 - De control del procesador

    4.1.10 - De rotacin y desplazamiento

    4.2 - Resumen alfabtico de las instrucciones y banderines. Indice.

    4.3 - Instrucciones especficas del 286, 386 y 486 en modo real

    4.3.1 - Diferencias en el comportamiento global respecto al 8086

    4.3.2 - Instrucciones especficas del 286

    4.3.3 - Instrucciones propias del 386 y 486

    4.3.4 - Deteccin de un sistema AT o superior

    4.3.5 - Evaluacin exacta del microprocesador instalado

    4.3.6 - Modo plano (flat) del 386 y superiores

    5 - EL LENGUAJE ENSAMBLADOR DEL 80x86

    5.1 - Sintaxis de una lnea en ensamblador

    5.2 - Constantes y operadores

    5.2.1 - Constantes

    5.2.2 - Operadores aritmticos

    5.2.3 - Operadores lgicos

    5.2.4 - Operadores relacionales

    5.2.5 - Operadores de retorno de valores

    5.2.6 - Operadores de atributos

    5.3 - Principales directivas

    5.3.1 - De definicin de datos

    5.3.2 - De definicin de smbolos

    5.3.3 - De control del ensamblador

    5.3.4 - De definicin de segmentos y procedimientos

    5.3.5 - De referencias externas

    5.3.6 - De definicin de bloques

    5.3.7 - Condicionales

    5.3.8 - De listado

    5.4 - Macros

    5.4.1 - Definicin y borrado de las macros

    5.4.2 - Ejemplo de una macro sencilla

    5.4.3 - Parmetros formales y parmetros actuales

    5.4.4 - Etiquetas dentro de macros. Variables locales.

    5.4.5 - Operadores de macros

    2 de 7 06/10/00 20:05

    EL UNIVERSO DIGITAL DEL IBM PC, AT Y PS/2 file:///C|/librosVirtuales/index.html

  • 5.4.6 - Directivas tiles para macros

    5.4.7 - Macros avanzadas con nmero variable de parmetros

    5.5 - Programacin modular y paso de parmetros

    6 - EL ENSAMBLADOR EN ENTORNO DOS

    6.1 - Tipos de programas ejecutables bajo DOS

    6.2 - Ejemplo de programa de tipo COM

    6.3 - Ejemplo de programa de tipo EXE

    6.4 - Proceso de ensamblaje

    6.5 - La utilidad DEBUG/SYMDEB

    6.6 - Las funciones del DOS y de la BIOS

    7 - ARQUITECTURA DEL PC, AT y PS/2 BAJO DOS

    7.1 - Las interrupciones

    7.2 - La memoria. Los puertos de entrada y salida.

    7.3 - La pantalla en modo texto

    7.4 - La pantalla en modo grfico

    7.4.1 - Modos grficos

    7.4.2 - Deteccin de la tarjeta grfica instalada

    7.4.3 - Introduccin al estndar grfico VGA

    7.4.4 - Ejemplo de grficos empleando la BIOS. Trazado de lneas en CGA

    7.4.5 - Ejemplo de grficos a nivel hardware. Circunferencias en VGA

    7.4.6 - El estndar grfico VESA

    7.5 - El teclado

    7.5.1 - Bajo nivel

    7.5.2 - Nivel intermedio

    7.5.3 - Alto nivel

    7.6 - Los discos

    7.6.1 - Estructura fsica

    7.6.2 - Cabeza 0. Pista 0. Sector 1.

    7.6.3 - La FAT

    7.6.4 - El directorio raiz

    7.6.5 - Los subdirectorios

    7.6.6 - El BPB y el DPB

    7.6.7 - La BIOS y los disquetes

    7.6.8 - Disquetes floptical 3 de 20 Mb

    7.6.9 - Ejemplo de acceso al disco a alto nivel

    7.6.10 - Ejemplo de acceso al disco a bajo nivel

    7.7 - El PSP

    7.8 - El proceso de arranque del PC

    3 de 7 06/10/00 20:05

    EL UNIVERSO DIGITAL DEL IBM PC, AT Y PS/2 file:///C|/librosVirtuales/index.html

  • 7.9 - Formato de las extensiones ROM

    7.10 - Formato fsico de los ficheros EXE

    8 - LA GESTIN DE MEMORIA DEL DOS

    8.1 - Tipos de memoria en un PC

    8.2 - Bloques de memoria

    8.2.1 - El bloque de memoria del programa

    8.2.2 - El bloque del entorno

    8.2.3 - Los bloques de control de memoria (MCB's)

    8.2.4 - La cadena de los bloques de memoria

    8.2.5 - Relacin entre bloque de programa y de entorno

    8.2.6 - Tipos de bloques de memoria

    8.2.7 - Liberar el espacio de entorno en programas residentes

    8.2.8 - Peculiaridades del MS-DOS 4.0 y 5.0

    8.2.9 - Cmo recorrer los bloques de memoria. Ejemplo.

    8.3 - Memorias extendida y superior XMS

    8.4 - Memoria expandida EMS

    9 - SUBPROCESOS, RECUBRIMIENTOS Y FILTROS

    9.1 - Llamada a subprocesos y recubrimientos u overlays

    9.2 - Construccin de filtros

    10 - PROGRAMAS RESIDENTES

    10.1 - Principios bsicos

    10.2 - Un ejemplo sencillo

    10.3 - Localizacin de un programa residente

    10.3.1 - Mtodo de los vectores de interrupcin

    10.3.2 - Mtodo de la cadena de bloque de memoria

    10.3.3 - Mtodo de la interrupcin Multiplex

    10.4 - Expulsin de un programa residente de la memoria

    10.5 - Gestin avanzada de la interrupcin Multiplex

    10.5.1 - El convenio BMB Compuscience

    10.5.2 - El convenio CiriSOFT

    10.5.3 - La propuesta AMIS

    10.5.4 - Comparacin entre mtodos

    10.6 - Mtodos especiales para economizar memoria

    10.7 - Programas autoinstalables en memoria superior

    10.8 - Programas residentes en memoria extendida con DR-DOS 6.0

    10.9 - Ejemplo de programa residente que utiliza la BIOS

    10.10 -Uso sin lmites de servicios del DOS en programas residentes

    4 de 7 06/10/00 20:05

    EL UNIVERSO DIGITAL DEL IBM PC, AT Y PS/2 file:///C|/librosVirtuales/index.html

  • 10.10.1 - Una primera aproximacin

    10.10.2 - Pasos a realizar para usar el DOS

    10.10.3 - Resumiendo, no es tan difcil!

    10.10.4 - Un mtodo alternativo: el SDA

    10.10.5 - Mtodos menos ortodoxos

    10.11 - Ejemplo de programa residente que utiliza el DOS

    10.12 - Programas residentes invocables en modos grficos

    10.13 - Programas residentes en entorno WINDOWS 3

    11 - CONTROLADORES DE DISPOSITIVO

    11.1 - Introduccin

    11.2 - Encabezamiento y palabra de atributos

    11.3 - Rutinas de estrategia e interrupcin

    11.4 - Ordenes a soportar por el controlador de dispositivo

    11.5 - La cadena de controladores de dispositivo instalados

    11.6 - Ejemplo de controlador de dispositivo de caracteres

    11.7 - Ejemplo de controlador de dispositivo de bloques

    11.7.1 - Disco virtual TURBODSK: Caractersticas

    11.7.2 - Ensamblando TURBODSK

    11.7.3 - Anlisis detallado del listado de TURBODSK

    11.8 - Los controladores de dispositivo y el DOS

    12 - EL HARDWARE DE APOYO AL MICROPROCESADOR

    12.1 - La arquitectura del ordenador compatible

    12.2 - El interfaz de perifricos 8255

    12.2.1 - Descripcin del integrado

    12.2.2 - El 8255 en el PC

    12.2.3 - Un mtodo para averiguar la configuracin del PC/XT

    12.3 - El temporizador 8253 u 8254

    12.3.1 - Descripcin del integrado

    12.3.2 - El 8254 en el ordenador

    12.3.3 - Temporizacin

    12.3.4 - Sntesis de sonido

    12.4 - El controlador de interrupciones 8259

    12.4.1 - Cmo y por qu de las interrupciones

    12.4.2 - Descripcin del integrado 8259

    12.4.3 - El 8259 dentro del ordenador

    12.4.4 - Ejemplo: cambio de la base de las interrupciones

    12.5 - El chip DMA 8237

    12.5.1 - El acceso directo a memoria

    5 de 7 06/10/00 20:05

    EL UNIVERSO DIGITAL DEL IBM PC, AT Y PS/2 file:///C|/librosVirtuales/index.html

  • 12.5.2 - Descripcin del integrado 8237

    12.5.3 - El 8237 en el ordenador

    12.5.4 - Ralentizar un equipo AT con el DMA

    12.5.5 - Acerca de las pginas de DMA

    12.6 - El controlador de disquetes NEC 765

    12.6.1 - La tecnologa de grabacin en disco

    12.6.2 - Descripcin del FDC (Floppy Disk Controller) 765

    12.6.3 - El 765 dentro del ordenador

    12.6.4 - Densidades de disco y formatos estndar

    12.6.5 - Acceso a disco con DMA

    12.6.6 - Lectura y escritura de sectores de disco sin DMA

    12.6.7 - Programacin avanzada del controlador de disquetes: 2M 3.0

    12.6.7.1 - Formato de la primera pista

    12.6.7.2 - Puntualizaciones sobre el formato de mxima capacidad

    12.6.7.3 - Descripcin de funcionamiento del soporte residente

    12.6.7.4 - Descripcin del programa de formateo (2MF) para 2M

    12.6.7.5 - Un programa para medir el rendimiento de los disquetes

    12.6.7.6 - La versin para PC/XT de 2M: 2MX

    12.6.7.7 - La opcin BIOS de 2M: 2M-ABIOS y 2M-XBIOS

    12.6.7.8 - La utilidad 2MDOS

    12.6.7.9 - Cmo superar los 2.000.000 de bytes en 3: 2MGUI

    12.6.7.10 - Uso de 2M 3.0 en OS/2 2.1

    12.7 - El disco duro del AT (IDE, MFM, Bus Local)

    12.7.1 - El interface

    12.7.2 - Programacin de la controladora

    12.7.3 - Ejemplo prctico de programacin

    12.8 - El controlador del teclado: 8042

    12.8.1 - El 8042

    12.8.2 - El teclado del AT

    12.8.3 - Comunicacin CPU - teclado

    12.8.4 - Comunicacin teclado - CPU

    12.9 - El puerto serie: UART 8250

    12.9.1 - Descripcin del integrado

    12.9.2 - El 8250 en el ordenador

    12.9.3 - Ejemplo: autodiagnstico del 8250

    12.10 - El puerto de la impresora

    12.10.1 - Los registros del puerto paralelo

    12.10.2 - Envo de caracteres

    12.10.3 - Cable NULL-MODEM para conectar dos ordenadores

    6 de 7 06/10/00 20:05

    EL UNIVERSO DIGITAL DEL IBM PC, AT Y PS/2 file:///C|/librosVirtuales/index.html

  • 12.11 - El ratn

    12.12 - El reloj de tiempo real del AT: Motorola MC146818

    12.12.1 - Descripcin del integrado

    12.12.2 - El MC146818 dentro del ordenador

    12.12.3 - Un mtodo para averiguar la configuracin del AT y PS/2

    13 - EL ENSAMBLADOR Y EL LENGUAJE C

    13.1 - Uso del Turbo C y Borland C a bajo nivel

    13.1.1 - Acceso a los puertos de E/S

    13.1.2 - Acceso a la memoria

    13.1.3 - Control de interrupciones

    13.1.4 - Llamada a interrupciones

    13.1.5 - Cambio de vectores de interrupcin

    13.1.6 - Programas residentes

    13.1.7 - Variables globales predefinidas interesantes

    13.1.8 - Insercin de codigo en lnea

    13.1.9 - Las palabras clave interrupt y asm

    13.2 - Interfaz C (Borland/Microsoft) - Ensamblador

    13.2.1 - Modelos de memoria

    13.2.2 - Integracin de mdulos en ensamblador

    APNDICES

    I Mapa de memoria

    II Tabla de interrupciones del sistema

    III Tabla de variables de la BIOS

    IV Puertos de E/S

    V Cdigos de rastreo del teclado

    VI Tamaos y tiempos de ejecucin de las instrucciones

    VII Seales del slot de expansin ISA

    VIII Funciones del sistema, la BIOS y el DOS aludidas en este libro

    IX Especificaciones XMS y EMS: Todas sus funciones

    X Juego de caracteres ASCII extendido

    XI Bibliografa

    7 de 7 06/10/00 20:05

    EL UNIVERSO DIGITAL DEL IBM PC, AT Y PS/2 file:///C|/librosVirtuales/index.html

  • PRLOGO DE LA EDICIN 4.0ELECTRNICA*

    (*) http://fly.to/udigital

    Nota: Pudiendo haber discrepancias entre sucesivas ediciones de estas normas, la versin de referenciavlida e inapelable ser la ubicada en todo momento en la red, en la direccin electrnica arriba indicada o cualquierotra que pudiera sucederla.

    Licencia de uso y distribucin para particulares.

    La edicin 4.0 (4 edicin) de El Universo Digital del IBM PC, AT y PS/2 es un libroelectrnico/impreso de dominio pblico; de libre uso, difusin, copia y distribucin entre particulares, encualquier soporte. Quienes decidan utilizarlo debern registrarse por va electrnica una sola vez, por razonesde tica (http://fly.to/udigital). Tambin es posible hacerlo enviando una carta o postal ordinaria (mejor en unsobre) al autor, con cualquier texto, a la siguiente direccin:

    Ciriaco Garca de CelisApartado 6105

    47080 ValladolidEspaa

    Indicando claramente que el motivo es registrar el Universo Digital. Los que hayan comprado la versinimpresa en persona no necesitan registrarse, aunque lo recibira con agrado, incluso si ha pasado bastantetiempo (pero si lo compraron por correo no deben registrarse: conservo su pedido). Me gustara conocer enalguna medida la difusin de la obra, en especial a partir de este momento, lo que hasta ahora me resultabaalgo ms sencillo. Por supuesto, los datos o direcciones indicadas por los usuarios nunca sern divulgados porm.

    Licencia de uso para empresas, asociaciones y organizaciones.

    Se aplican exactamente las mismas condiciones que para usuarios particulares, con la excepcin de que serecomienda un nico registro electrnico o una sola carta o postal en representacin de todos los posiblesusuarios de la entidad.

    Licencia de distribucin para empresas, asociaciones y organizaciones.

    Editando revistas (no libros) la distribucin est permitida en cualquier formato digital (HTML,PostScript, WordPerfect, texto, o cualesquiera otros) tanto en fragmentos como toda la obra completa.Siendo el formato una revista impresa slo se permiten fragmentos que no totalicen ms del 75% de la obraen los sucesivos nmeros publicados. Es necesario citar la procedencia. La distribucin por empresas quecobren una cierta cantidad por el soporte es libre. Mi nica sugerencia es que la empresa me enve una copiadel soporte (CD, etc.) en que se publique, por cortesa.

    Tratndose de empresas editoriales u otras cualesquiera que planeen incluirlo, entero o por fragmentos, enel soporte impreso, electrnico u online de algn libro que vayan a publicar, deberan contactar primeroconmigo para negociar una nueva versin (que en todo caso no implicara la desaparicin de sta en su estatus

    1 de 7 12/10/00 19:02

    untitled file:///C|/librosVirtuales/UniversoDigital/00.html

  • actual).

    Modificaciones.

    La realizacin de cambios (aadidos, eliminacin de contenidos o reemplazamiento de los mismos) escompetencia exclusiva del autor, que centraliza la generacin de nuevas versiones actualizadas. Quien realizaraalguna modificacin sin consentimiento habra de destinar la obra resultante para uso personal e intransferible.

    Orgenes de El Universo Digital.

    El Universo Digital no naci tras una decisin premeditada. Su objetivo inicial fue dotar de un manual deapoyo al Curso de Lenguaje Ensamblador, que ofrece todos los aos la asociacin Grupo Universitario deInformtica de la Universidad de Valladolid, en el marco de unos Cursos de Introduccin a la Informtica-para los alumnos y personal en general de la Universidad- que abarcan un espectro mucho ms amplio que elde la programacin de los ordenadores.

    La primera versin ocupaba 116 pginas, cuando su denominacin era an la de Curso de Ensamblador.Sin embargo, en una poca en la que era difcil encontrar informacin, y buena bibliografa especializada, elautor sigui recopilando material interesante y aadindolo al curso. Una buena parte de dicho material y delaadido despus ha sido adems de cosecha propia. La primera edicin de El Universo Digital, editada nomucho tiempo despus del manual del curso, rebas ligeramente las 300 pginas. Posteriormente seincrementara an algo ms, hasta las 420 de la 3 edicin que ha mantenido durante la mayor parte deltiempo.

    El DOS en la actualidad.

    Actualmente, y desde hace algn tiempo, la programacin en DOS ya no es importante, y mucho menos alnivel que desarrolla este libro, y ello pese a que incluso Windows 95 corre an en alguna parte sobre DOS,comportamiento que ir reducindose hasta la eliminacin en prximas versiones.

    El futuro de la programacin, sin embargo, no es slo para los programadores de alto nivel. En algunamanera, los propios usuarios pueden y podrn cada vez en mayor medida hacer sus propios programasincluso sin darse cuenta. Sin embargo, siempre hay alguien que tiene que construir los sistemas operativos, ysobre todo, los controladores para dar soporte a los dispositivos en los diversos sistemas operativos. Por nomencionar las aplicaciones especializadas, desde mquinas industriales al microprocesador de las sondasespaciales (que, evidentemente, no corre bajo Windows). Es para los programadores de sistemas, y paraaquellos que necesitan o quieren saber cmo funciona el PC por dentro, como ejemplo prctico dearquitectura interna de un ordenador, para los que va destinado este libro. Que podrn practicar en unentorno cmodo para este tipo de programacin, como es el DOS (que deja todo el control de la mquina acada tarea). Aunque algunos contenidos muy relacionados con el DOS siguen presentes en esta obra, el lectorhabr de tener en cuenta si es pertinente profundizar en ellos o no, en la poca que vivimos.

    Mis contactos con editoriales.

    Mi objetivo inicial no fue publicarlo, aunque hace dos o tres aos s me lo plante un poco en serio.

    Las ventajas de una edicin oficial sera su no engorrosa distribucin (uno de los motivos por los quesiempre ha costado poco es porque nuestra Asociacin y el propio autor ha puesto su mano de obra gratis),

    2 de 7 12/10/00 19:02

    untitled file:///C|/librosVirtuales/UniversoDigital/00.html

  • as como su mayor difusin. Puesto en contacto con cuatro prestigiosas editoriales; las que han respondidohan valorado muy positivamente la obra, sin embargo la han rechazado aduciendo otros motivos(sobrecarga del programa editorial, solapamiento en contenidos con obras publicadas o en fase depublicacin, o simplemente falta de inters comercial). Una de ellas an no ha respondido.

    Los inconvenientes de su publicacin por una editorial seran el importante aumento de precio, y mirenuncia a los derechos de distribucin (en particular, nuestra Asociacin tendra que comprar en la librera losejemplares para nuestros cursos).

    Sin embargo, la ventaja de la publicacin para facilitar la difusin popular es obvia, mxime si lo hace unaeditorial importante (si no, no aparecera en todas las estanteras, la publicidad la haran los lectoreslentamente, como ya se vena haciendo, y la distribucin sera incluso ms limitada pese al recurso a losbaratos servicios de reprografa por parte de los usuarios).

    El Universo Digital en Internet.

    Mi decisin final ya la haba acariciado con anterioridad. Algo haba que hacer, pues la distribucin gratuitadel libro llevaba mucho tiempo.

    Uno de los motivos que han terminado empujndome a esta decisin, ha sido la considerable cantidad depedidos que hemos recibido desde pases de hispanoamrica. Se trata de ciudadanos que conocen el ndicedel libro a travs del Web y lo piden, sobre todo desde Mxico. Sin embargo, slo en la primera ocasin lohe enviado (a Per); los motivos son, desgraciadamente, la prctica imposibilidad de comerciar a pequeaescala con esos pases (no existe el envo contrarreembolso, por ejemplo); las enormes demoras del envo porsuperficie (el coste del envo areo supera el del propio libro) y las complicadas gestiones de pago e injustascomisiones bancarias (aunque las pague el usuario final); finalmente habra que aadir incluso mi temorinconsciente a un aumento incontrolado de la demanda, cuando ya haba demasiado trabajo que hacer paraatender la de origen nacional (en mi memoria estaba lo que ocurri cuando empezaron a aparecer mensajes ycomenzaron a recibirse pedidos por FidoNET). Pido desde aqu disculpas a todos los que lo han solicitadodesde fuera de Espaa, mayores adems si no he contestado el E-Mail por no haber tomado an una decisinal respecto.

    El Universo Digital de dominio pblico en formato electrnico, podr ser accedido desde cualquier lugardel mundo, y en cualquier CD de los kioscos.

    El inconveniente es que no todos tienen igual acceso a estas redes y medios, aunque ese inconvenientedisminuir exponencialmente con el tiempo (con el mismo exponente con que crezca la red).

    Fin de la distribucin impresa.

    Naturalmente, una vez que he renunciado a mis derechos sobre el libro, donndolo al dominio pblico, yano estoy obligado a venderlo impreso (medida tomada nicamente para mantener el copyright). Realmente,no tenemos tiempo ni medios para atender la demanda actual: aunque es una medida dura de imponer,lamento renunciar a realizar ms envos de ejemplares impresos. Renuncio con ello a facilitar su difusin a loslectores menos introducidos en las redes telemticas, pero beneficio a otros muchos, que adems podrnseguir usando la versin manuscrita utilizando una impresora.

    Por otro lado, haber facturado slo aproximadamente el coste de impresin y distribucin, me permitentomar esa decisin sin temer el enfado de quienes lo haban comprado. El coste de impresin de los ltimosnmeros en la reprografa oficial de la Universidad (rechazamos opciones ms baratas de menor calidad),

    3 de 7 12/10/00 19:02

    untitled file:///C|/librosVirtuales/UniversoDigital/00.html

  • encuadernacin y disquete era de 1900 pts. El libro (realmente, apuntes tcnicos fotocopiados) se venda a2100 pts ms gastos de envo. Ese margen de beneficios era ms bien de maniobra, ya que por ejemplo, enlos ejemplares que no llegaban a su destino, el coste del envo y la devolucin lo pagbamos nosotros. Cadaenvo llevaba una media de 20 minutos de tiempo total de mano de obra, contabilizando la preparacin de loslibros (transporte fsico, disquete, gestin del pedido...), y la mayora eran de una sola unidad (pese a que sepenalizaba su envo con 100 pts adicionales). El precio de los ms de 1200 Universos Digitales vendidos hatenido un crecimiento nominal cero en los cinco aos de difusin impresa.

    Obtencin de ejemplares impresos.

    Aunque en general no se harn ms envos, la nica excepcin corresponder a los pedidos realizadosdesde bibliotecas (universitarias o no universitarias), que tal vez no tengan la impresora adecuada o tiempopara reproducirlo, lo que perjudicara a un amplio conjunto potencial deusuarios. No se harn envos a otras organizaciones, ni a libreras o a particulares. Subrayamos que ElUniverso Digital impreso tiene el carcter legal de apuntes tcnicos impresos y no de libro.

    Los pedidos de ejemplares impresos sern admitidos slo desde Espaa. Habrn de realizarseexclusivamente por carta impresa, que deber estar compulsada por el sello y en su caso papel oficial de labiblioteca que hace el pedido, adems de debidamente firmada por quien corresponda. Es conveniente quefigure el telfono de la biblioteca o en su defecto de la conserjera del centro. Adems del nombre completo,direccin y NIF. Nos reservamos el derecho de rechazar aquellos pedidos que no cumplan alguno de estosrequisitos, o los de sospechosa procedencia. La direccin es: Grupo Universitario de Informtica.Apartado 6062. 47080 Valladolid. El precio por ejemplar ser el que figure en la factura que realizar elpropio servicio de reprografa (unas 2000 pts/unidad); sumando al final el coste exacto del envo y losdisquetes.

    Agradecimientos.

    Agradezco desde aqu al servicio de Reprografa de la Universidad, ubicado en la Casa del Estudiante, elesmero puesto durante tanto tiempo en la reproduccin y encuadernacin de cada nmero durante la etapaimpresa. Cualquier pequeo problema de calidad se ha debido siempre a los fallos inevitables que enocasiones presenta toda mquina, por buena que sea.

    Mis agradecimientos tambin a las diversas instituciones de la Universidad de Valladolid, que han recibidoen ocasin la presin de la demanda a travs de incorrectas llamadas telefnicas solicitando el libro, nosiendo ellos los encargados de su distribucin; tambin al Grupo Universitario de Informtica, por sucolaboracin a todos los niveles.

    No puedo decir lo mismo de los funcionarios de Correos: aunque algunos son amables, en general, elfuncionamiento de esa institucin es el que caba esperar de un monopolio no sometido a la libre competenciaen envos postales ordinarios (y que, por tanto, no tiene la obligacin de tratar bien a sus clientes, porquetambin volvern maana). El trato que reciben los clientes no se diferencia mucho del de los paquetes, yestos son muy expresivos en ocasiones al llegar al destino. Por otro lado, la cantidad de papeles que hay querellenar en cada envo, y algunas normas de la empresa (como el plomo adherido a los paquetes postales) nose han simplificado desde finales del siglo XIX. Tampoco es comprensible que slo Argentaria sea an lanica entidad financiera con el privilegio de gestionar las denominadas Cuentas Corrientes Postales.Adems de que el servicio de correos es caro en la realidad (esto es, cuando se incluye lo que pagamos enimpuestos para cubrir las prdidas de la compaa) se mantiene el viejo vicio de indexar las tarifas anuales(aumento del 8% en 1997, cuando hay un 2% de inflacin nacional).

    4 de 7 12/10/00 19:02

    untitled file:///C|/librosVirtuales/UniversoDigital/00.html

  • Sin embargo, he de reconocer que la fiabilidad de Correos (entendida en cuanto a paquetes que llegan asu destino o en su defecto vuelven por motivo de direccin incorrecta) es prxima al 100%: los envos nosuelen perderse, al menos los de los reembolsos. En puntualidad, aunque hay extremos de gran aleatoriedad(desde paquetes que llegan en tres das a un pueblo perdido en la otra punta del pas, a los que tardan quinceen ir de Valladolid a Madrid) el tiempo promedio podra aproximarse, aunque por debajo, a lo que afirma laempresa.

    Ciriaco Garca de Celis

    Valladolid, Noviembre de 1997

    PRLOGO

    DE LA TERCERA EDICIN (1994)

    Ha pasado un ao desde la publicacin de la primera edicin de esta obra. Desde entonces, hacontinuado la expansin de los interfaces grficos de usuario y los sistemas operativos avanzados paraPC. Sin embargo, pese a que la programacin contina alejndose cada vez ms del bajo nivel de lasmquinas, los programadores de sistemas en el entorno del PC siguen existiendo y son muchos msque los que trabajan para las empresas punteras en el desarrollo de los sistemas operativos. Losordenadores compatibles poseen numerosas aplicaciones en el campo industrial, para las que esconveniente un conocimiento elevado del funcionamiento interno del ordenador en general y delMS-DOS en particular. Para aquellas personas que necesitan comprender el funcionamiento de unordenador, las mquinas compatibles constituyen una interesante oportunidad y punto de partida. Estelibro pretende cubrir una importante laguna en la bibliografa disponible actualmente sobre laprogramacin a nivel de sistemas de los ordenadores compatibles.

    Respecto a la primera edicin, se han incrementado los contenidos en una proporcin equivalente al20% de lo que ya exista, corrigindose adems algunos errores. Aunque el libro comience con unaintroduccin a la aritmtica binaria que pueda indicar todo lo contrario, se presupone que el lector tieneunos mnimos conocimientos de informtica, al menos un dominio bsico del sistema operativoMS-DOS, siendo ms que recomendable conocer algn lenguaje de programacin. Seguidamente seexplica el lenguaje ensamblador de la serie 80x86 de Intel separando claramente las instrucciones delos diversos procesadores, aunque dejando de lado algunas instrucciones del 286 y 386 que se salendel entorno MS-DOS. Tambin se describe la sintaxis del lenguaje ensamblador; sin embargo, aunqueeste ltimo aspecto est extensamente documentado, los lectores que no conozcan el lenguajeensamblador de ningn microprocesador habrn de trabajar considerablemente leyendo multitud delistados hasta adquirir la soltura necesaria y, sobre todo, creando los suyos propios. Aunque seraconveniente describir el lenguaje C, ntimo aliado del ensamblador en la programacin de sistemas, ellose deja por razones de espacio para otras publicaciones.

    5 de 7 12/10/00 19:02

    untitled file:///C|/librosVirtuales/UniversoDigital/00.html

  • El libro describe con profundidad la arquitectura de los ordenadores compatibles, de maneraespecial en lo referente a la organizacin interna de la memoria (actualizada hasta el MS-DOS 6.0 y elDR-DOS 6.0), los discos y el teclado. El apartado de los grficos se repasa slo superficialmente, yaque por s solo necesitara de un buen libro ms grueso que este. Se dan pistas sobre la manera deconmutar los modos de vdeo sin alterar el contenido de la pantalla, aspecto que resulta de especialinters para los programas residentes.

    Las memorias extendida XMS y expandida EMS son descritas con cierto detenimiento, dada supresencia en todos los ordenadores modernos y su importancia.

    Existen apndices que describen todas las funciones del DOS, de la BIOS y del sistema usadas enlas rutinas y programas desarrollados, as como la totalidad de las funciones XMS y EMS. Sinembargo, no estn ni muchsimo menos todas las interrupciones necesarias, por lo que se insta al lectora conseguir el impresionante fichero de dominio pblico INTERRUPT.LST, complemento ideal de estelibro (ver bibliografa).

    Los programas residentes reciben un tratamiento especialmente profundo: desde los mtodos mseficientes para que detecten su propia presencia en memoria, a las tcnicas ms avanzadas paraeconomizar memoria, pasando por el uso de funciones del DOS de manera concurrente al programaprincipal, as como tcnicas de empleo de memoria extendida y superior para conseguir programas queusen 0 Kb dentro de los primeros 640 Kb de la mquina y todo ello sin olvidar la convivencia con losactuales entornos operativos, como Windows, y la posibilidad de ser activados desde pantallasgrficas.

    Este libro tambin trata los controladores de dispositivo o device drivers, desde los dos posiblesenfoques de su uso: bien sea la creacin de controladores de dispositivo de caracteres, bien la denuevas unidades de disco aadidas a las del sistema; en ambos casos se incluyen ejemplos reales decontroladores completos y comprobados, en particular el ejemplo de disco virtual: un completoejemplo de controlador redimensionable que soporta memoria convencional, XMS y EMS.

    Existe un captulo muy prximo al hardware en el que se describen a fondo y sin omisiones todoslos chips del ordenador, para permitir al programador de sistemas un control completo del equipo.Para asimilar este captulo hace falta cierta formacin previa en los sistemas digitales; sin embargo, losejemplos que siguen a la informacin tcnica aclaran las explicaciones previas y pueden seraprovechados de manera inmediata incluso sin entender todo lo anterior. Los chips de apoyo almicroprocesador son descritos de manera total: primero, no relacionados con el PC sino como talescircuitos; despus integrndolos en el ordenador y documentando profusamente su uso, con ejemplosprobados. Se consideran el interfaz de perifricos 8255 (til para averiguar la configuracin de losPC/XT), el temporizador 8253/8254 (para temporizacin y sntesis de sonido), el controlador deinterrupciones 8259, el controlador de DMA 8237 (para acceso a disco), el controlador de disquetes765 (acceso directo a los sectores), la controladora de disco duro de los AT (IDE, MFM BusLocal); el controlador del teclado del AT (8042); el UART 8250 (empleado en las comunicacionesserie) y el reloj de tiempo real MC146818 (configuracin de AT y programacin de alarmas ytemporizaciones). Los ejemplos en este captulo experimentan una importante potenciacin respecto ala edicin anterior; en particular, en lo relacionado con el controlador de disquetes se puede considerarque la informacin vertida es prcticamente casi toda la existente, existiendo pautas suficientes para queel lector cree sus propios programas copiones, protecciones de disco, formatos de alta capacidad, etc.

    Existen tambin captulos que describen el funcionamiento y programacin de la impresora; sinentrar en aspectos particulares relativos a los modelos de las diversas marcas, s se suministrainformacin comn a todas. Tambin se comenta en un captulo el funcionamiento al ms bajo nivel del

    6 de 7 12/10/00 19:02

    untitled file:///C|/librosVirtuales/UniversoDigital/00.html

  • ratn, aspecto que habitualmente no suele ser considerado.

    Dada la importancia del lenguaje C en la programacin en general y en la programacin de sistemasen particular, tanto en la actualidad como durante los prximos aos, se incluye un captulo quedescribe la manera de comunicar el ensamblador con el lenguaje C, con objeto de superar laslimitaciones de este lenguaje en los puntos crticos de la programacin de sistemas. Este captulorequiere un dominio elemental del lenguaje C por parte del lector, aunque probablemente slo sea tilpara aquellos que lo conocen ms o menos.

    Resumiendo, el libro pretende reunir en una sola obra la mayora de la informacin necesaria para elprogramador de sistemas, exponiendo toda la informacin y no slo lo imprescindible, sin olvidos niomisiones; tambin se pretende explicar las tcnicas ms avanzadas de creacin de programasresidentes. Este afn de informacin completa es el responsable del ttulo del libro.

    Todos los listados de ejemplo se suponen de dominio pblico y las rutinas pueden ser incluidas porlos lectores libremente en sus propios programas, aunque en el caso de los programas completos debecitarse la procedencia y dejar bien claro en las versiones modificadas quin las ha alterado. En todocaso, pese a que todas las rutinas y programas han sido probados debidamente en un 8088, un 286, un386 o un 486 -bajo varios sistemas operativos y con diferentes configuraciones del hardware- el autordel libro no se responsabiliza de su correcto funcionamiento en todas las circunstancias.

    7 de 7 12/10/00 19:02

    untitled file:///C|/librosVirtuales/UniversoDigital/00.html

  • Captulo I: INTRODUCCIN

    1.1. - NUMEROS BINARIOS, OCTALES Y HEXADECIMALES.

    El sistema de numeracin utilizado habitualmente es la base 10; es decir, consta de 10 dgitos (0-9) quepodemos colocar en grupos, ordenados de izquierda a derecha y de mayor a menor.

    Cada posicin tiene un valor o peso de 10n donde n representa el lugar contado por la derecha:1357 = 1 x 103 + 3 x 102 + 5 x 101 + 7 x 100

    Explcitamente, se indica la base de numeracin como 135710.

    En un ordenador el sistema de numeracin es binario -en base 2, utilizando el 0 y el 1- hecho propiciadopor ser precisamente dos los estados estables en los dispositivos digitales que componen una computadora.

    Anlogamente a la base 10, cada posicin tiene un valor de 2n donde n es la posicin contando desde laderecha y empezando por 0:

    1012 = 1 x 22 + 0 x 21 + 1 x 20

    Adems, por su importancia y utilidad, es necesario conocer otros sistemas de numeracin como puedenser el octal (base 8) y el hexadecimal (base 16). En este ltimo tenemos, adems de los nmeros del 0 al 9,letras -normalmente en maysculas- de la A a la F.

    Llegar a un nmero en estos sistemas desde base 2 es realmente sencillo si agrupamos las cifras binarias de3 en 3 (octal) o de 4 en 4 (hexadecimal):

    Base 2 a base 8: 101 0112 = 538Base 2 a base 16: 0010 10112 = 2B16

    A la inversa, basta convertir cada dgito octal o hexadecimal en binario:Base 8 a base 2: 248 = 010 1002

    Base 16 a base 2: 2416 = 0010 01002 De ahora en adelante, se utilizarn una serie de sufijos para determinar el sistema de numeracinempleado:

    Sufijo Base Ejemplos

    b 2 01101010b

    o,q 8 175o

    d 10 789d

    h 16 6A5h

    En caso de que no aparezca el sufijo, el nmero se considera decimal; es decir, en base 10.

    1.2. - CAMBIO DE BASE.

    Pese a que las conversiones entre base 2 y base 8 y 16 son prcticamente directas, existe un sistemageneral para realizar el cambio de una base a otra. El paso de cualquier base a base 10 lo vimos antes:

    6A5h = 6 x 162 + 10 x 161 + 5 x 160

    Inversamente, si queremos pasar de base 10 a cualquier otra habr que realizar sucesivas divisiones por labase y tomar los restos:

    1 de 5 12/10/00 19:03

    INTRODUCCIN file:///C|/librosVirtuales/01.html

  • donde 4 es el ltimo cociente (menor que la base) y los restantes dgitos son los restos en orden inverso.

    1.3. - ESTRUCTURA ELEMENTAL DE LA MEMORIA.

    1.3.1. - BIT.

    Toda la memoria del ordenador se compone de dispositivos electrnicos que pueden adoptar nicamentedos estados, que representamos matemticamente por 0 y 1. Cualquiera de estas unidades de informacin sedenomina BIT, contraccin de binary digit en ingls.

    1.3.2. - BYTE.

    Cada grupo de 8 bits se conoce como byte u octeto. Es la unidad de almacenamiento en memoria, la cualest constituida por un elevado nmero de posiciones que almacenan bytes. La cantidad de memoria de quedispone un sistema se mide en Kilobytes (1 Kb = 1024 bytes), en Megabytes (1 Mb = 1024 Kb), Gigabytes(1 Gb = 1024 Mb), Terabytes (1 Tb = 1024 Gb) o Petabytes (1 Pb = 1024 Tb).

    Los bits en un byte se numeran de derecha a izquierda y de 0 a 7, correspondiendo con los exponentes delas potencias de 2 que reflejan el valor de cada posicin. Un byte nos permite, por tanto, representar 256estados (de 0 a 255) segn la combinacin de bits que tomemos.

    1.3.3. - NIBBLE.

    Cada grupo de cuatro bits de un byte constituye un nibble, de forma que los dos nibbles de un byte sellaman nibble superior (el compuesto por los bits 4 a 7) e inferior (el compuesto por los bits 0 a 3). El nibbletiene gran utilidad debido a que cada uno almacena un dgito hexadecimal:

    Binario Hex. Decimal Binario Hex. Decimal

    0000 0 0 1000 8 8

    0001 1 1 1001 9 9

    0010 2 2 1010 A 10

    0011 3 3 1011 B 11

    0100 4 4 1100 C 12

    0101 5 5 1101 D 13

    0110 6 6 1110 E 14

    0111 7 7 1111 F 15

    1.4. - OPERACIONES ARITMTICAS SENCILLAS EN BINARIO.

    Para sumar nmeros, tanto en base 2 como hexadecimal, se sigue el mismo proceso que en base 10:

    Podemos observar que la suma se desa- 1010 1010b rrolla de la forma tradicional; es decir: + 0011 1100b sumamos normalmente, salvo en el caso de -------------- 1 + 1 = 102 , en cuyo caso tenemos un aca-

    1110 0110b rreo de 1 (lo que nos llevamos).

    2 de 5 12/10/00 19:03

    INTRODUCCIN file:///C|/librosVirtuales/01.html

  • 1.5. - COMPLEMENTO A DOS.

    En general, se define como valor negativo de un nmero el que necesitamos sumarlo para obtener 00h, porejemplo:

    FFh Como en un byte solo tenemos dos nibbles, es + 01h decir, dos dgitos hexadecimales, el resultado es ------ 0 (observar cmo el 1 ms significativo subrayado 100h es ignorado). Luego FFh=-1. Normalmente, el bit 7 se considera como de signo y, si est activo (a 1) el nmero es negativo.

    Por esta razn, el nmero 80h, cuyo complemento a dos es l mismo, se considera negativo (-128) y elnmero 00h, positivo. En general, para hallar el complemento a dos de un nmero cualquiera basta concalcular primero su complemento a uno, que consiste en cambiar los unos por ceros y los ceros por unos ensu notacin binaria; a continuacin se le suma una unidad para calcular el complemento a dos. Con unacalculadora, la operacin es ms sencilla: el complemento a dos de un nmero A de n bits es 2n-A.

    Otro factor a considerar es cuando se pasa de operar con un nmero de cierto tamao (ej., 8 bits) a otromayor (pongamos de 16 bits). Si el nmero es positivo, la parte que se aade por la izquierda son bits a 0.Sin embargo, si era negativo (bit ms significativo activo) la parte que se aade por la izquierda son bits a 1.Este fenmeno, en cuya demostracin matemtica no entraremos, se puede resumir en que el bit mssignificativo se copia en todos los aadidos: es lo que se denomina la extensin del signo: los dos siguientesnmeros son realmente el mismo nmero (el -310): 11012 (4 bits) y 111111012 (8 bits).

    1.6. - AGRUPACIONES DE BYTES.

    Tipo Definicin

    Palabra 2 bytes contiguos

    Doble palabra 2 palabras contiguas (4 bytes)

    Cudruple palabra 4 palabras contiguas (8 bytes)

    Prrafo 16 bytes

    Pgina 256 bytes, 16 Kb, etc.

    Segmento 64 Kbytes

    1.7. - REPRESENTACIN DE LOS DATOS EN MEMORIA.

    1.7.1. - NUMEROS BINARIOS: mximo nmero representable:

    Tipo Sin signo

    1 byte 255

    2 bytes 65.535

    4 bytes 4.294.967.295

    8 bytes 18.446.744.073.709.551.615

    3 de 5 12/10/00 19:03

    INTRODUCCIN file:///C|/librosVirtuales/01.html

  • Tipo Positivo Negativo

    1 byte 127 -128

    2 bytes 32.767 -32.768

    4 bytes 2.147.483.647 -2.147.483.648

    8 bytes 9.223.372.036.854.775.807 -9.223.372.036.854.775.808

    Los nmeros binarios de ms de un byte se almacenan en la memoria en los procesadores de Intel enorden inverso: 01234567h se almacenara: 67h, 45h, 23h, 01h.

    1.7.2. - NUMEROS BINARIOS CODIFICADOS EN DECIMAL (BCD).

    Consiste en emplear cuatro bits para codificar los dgitos del 0 al 9 (desperdiciando las seis combinacionesque van de la 1010 a la 1111). La ventaja es la simplicidad de conversin a/de base 10, que resultainmediata. Los nmeros BCD pueden almacenarse desempaquetados, en cuyo caso cada byte contiene undgito BCD (Binary-Coded Decimal); o empaquetados, almacenando dos dgitos por byte (para construir losnmeros que van del 00 al 99). La notacin BCD ocupa cuatro bits -un nibble- por cifra, de forma que en elformato desempaquetado el nibble superior siempre es 0.

    1.7.3. - NUMEROS EN PUNTO FLOTANTE.

    Son grupos de bytes en los que una parte se emplea para guardar las cifras del nmero (mantisa) y otrapara indicar la posicin del punto flotante (exponente), de modo equivalente a la notacin cientfica. Estopermite trabajar con nmeros de muy elevado tamao -segn el exponente- y con una mayor o menorprecisin en funcin de los bits empleados para codificar la mantisa.

    1.7.4. - CDIGO ASCII.

    El cdigo A.S.C.I.I. (American Standard Code for Information Interchange) es un convenio adoptadopara asignar a cada carcter un valor numrico; su origen est en los comienzos de la Informtica tomandocomo muestra algunos cdigos de la transmisin de informacin de radioteletipo. Se trata de un cdigo de 7bits con capacidad para 128 smbolos que incluyen todos los caracteres alfanumricos del ingls, consmbolos de puntuacin y algunos caracteres de control de la transmisin.

    Con posterioridad, con la aparicin de los microordenadores y la gran expansin entre ellos de losIBM-PC y compatibles, la ampliacin del cdigo ASCII realizada por esta marca a 8 bits, con capacidadpara 128 smbolos adicionales, experimenta un considerable auge, siendo en la actualidad muy utilizada yrecibiendo la denominacin oficial de pgina de cdigos 437 (EEUU). Se puede consultar al final de estelibro. Es habitualmente la nica pgina soportada por las BIOS de los PC. Para ciertas nacionalidades se handiseado otras pginas especficas que requieren de un software externo. En las lenguas del estado espaol yen las de la mayora de los dems pases de la UE, esta tabla cubre todas las necesidades del idioma.

    1.8. - OPERACIONES LGICAS EN BINARIO.

    Se realizan a nivel de bit y pueden ser de uno o dos operandos:

    4 de 5 12/10/00 19:03

    INTRODUCCIN file:///C|/librosVirtuales/01.html

  • x y x AND y x OR y x XOR y

    0 0 0 0 0

    0 1 0 1 1

    1 0 0 1 1

    1 1 1 1 0

    x NOT (x)

    0 1

    1 0

    5 de 5 12/10/00 19:03

    INTRODUCCIN file:///C|/librosVirtuales/01.html

  • Captulo II: ARQUITECTURA E HISTORIA DE LOS MICROORDENADORES

    El ensamblador es un lenguaje de programacin que, por la traduccin directa de los mnemnicos ainstrucciones maquina, permite realizar aplicaciones rpidas, solucionando situaciones en las que los tiemposde ejecucin constituye el factor principal para que el proceso discurra con la suficiente fluidez. Esta situacin,que indudablemente s influye sobre la eleccin del lenguaje de programacin a utilizar en el desarrollo de unadeterminada rutina, y dada la aparicin de nuevos compiladores de lenguajes de alto nivel que optimizan elcdigo generado a niveles muy prximos a los que un buen programador es capaz de realizar en ensamblador,no es la nica razn para su utilizacin.

    Es sobradamente conocido que los actuales sistemas operativos son programados en su mayor parte enlenguajes de alto nivel, especialmente C, pero siempre hay una parte en la que el ensamblador se hace casiinsustituible bajo DOS y es la programacin de los drivers para los controladores de dispositivos,relacionados con las tareas de ms bajo nivel de una mquina, fundamentalmente las operaciones deentrada/salida en las que es preciso actuar directamente sobre los dems chips que acompaan almicroprocesador. Por ello y porque las instrucciones del lenguaje ensamblador estn ntimamente ligadas a lamquina, vamos a realizar primero un somero repaso a la arquitectura interna de un microordenador.

    2.1. - ARQUITECTURA VON NEWMAN.

    Centrndonos en los ordenadores sobre los que vamos a trabajar desarrollar a grandes rasgos laarquitectura Von Newman que, si bien no es la primera en aparecer, s que lo hizo prcticamente desde elcomienzo de los ordenadores y se sigue desarrollando actualmente. Claro es que est siendo desplazada porotra que permiten una mayor velocidad de proceso, la RISC.

    En los primeros tiempos de los ordenadores, con sistemas de numeracin decimal, una electrnicasumamente complicada muy susceptible a fallos y un sistema de programacin cableado o mediante fichas,Von Newman propuso dos conceptos bsicos que revolucionaran la incipiente informtica:

    a) La utilizacin del sistema de numeracin binario. Simplificaba enormemente los problemas que laimplementacin electrnica de las operaciones y funciones lgicas planteaban, a la vez proporcionaba unamayor inmunidad a los fallos (electrnica digital).

    b) Almacenamiento de la secuencia de instrucciones de que consta el programa en una memoria interna,fcilmente accesible, junto con los datos que referencia. De este forma la velocidad de proceso experimentaun considerable incremento; recordemos que anteriormente una instruccin o un dato estaban codificados enuna ficha en el mejor de los casos.

    Tomando como modelo las mquinas que aparecieron incorporando las anteriores caractersticas, elordenador se puede considerar compuesto por las siguientes partes:

    - La Unidad Central de Proceso, U.C.P., ms conocida por sus siglas en ingls (CPU). - La Memoria Interna, MI. - Unidad de Entrada y Salida, E/S. - Memoria masiva Externa, ME.

    Realicemos a continuacin una descripcin de lo que se entiende por cada una de estas partes y cmoestn relacionadas entre si:

    - La Unidad Central de Proceso (CPU) viene a ser el cerebro del ordenador y tiene por misin efectuarlas operaciones aritmtico-lgicas y controlar las transferencias de informacin a realizar.

    1 de 6 12/10/00 19:05

    ARQUITECTURA E HISTORIA DE LOS MICROORDENADORES file:///C|/librosVirtuales/UniversoDigital/02.html

  • - La Memoria Interna (MI) contiene el conjunto de instrucciones que ejecuta la CPU en el transcurso deun programa. Es tambin donde se almacenan temporalmente las variables del mismo, todos los datos que seprecisan y todos los resultados que devuelve.

    - Unidades de entrada y salida (E/S) o Input/Output (I/O): son las encargadas de la comunicacin de lamquina con el exterior, proporcionando al operador una forma de introducir al ordenador tanto losprogramas como los datos y obtener los resultados.

    Como es de suponer, estas tres partes principales de que consta el ordenador deben estar ntimamenteconectadas; aparece en este momento el concepto de bus: el bus es un conjunto de lneas que enlazan losdistintos componentes del ordenador, por ellas se realiza la transferencia de datos entre todos sus elementos.

    Se distinguen tres tipos de bus:

    - De control: forman parte de l las lneas que seleccionan desde dnde y hacia dnde va dirigida lainformacin, tambin las que marcan la secuencia de los pasos a seguir para dicha transferencia. - De datos: por l, de forma bidireccional, fluyen los datos entre las distintas partes del ordenador. - De direcciones: como vimos, la memoria est dividida en pequeas unidades de almacenamiento quecontienen las instrucciones del programa y los datos. El bus de direcciones consta de un conjunto de lneasque permite seleccionar de qu posicin de la memoria se quiere leer su contenido. Tambin direcciona lospuertos de E/S.

    La forma de operar del ordenador en su conjunto es direccionar una posicin de la memoria en busca deuna instruccin mediante el bus de direcciones, llevar la instruccin a la unidad central de proceso -CPU- pormedio del bus de datos, marcando la secuencia de la transferencia el bus de control. En la CPU la instruccinse decodifica, interpretando qu operandos necesita: si son de memoria, es necesario llevarles a la CPU; unavez que la operacin es realizada, si es preciso se devuelve el resultado a la memoria.

    2.2. - EL MICROPROCESADOR.

    Un salto importante en la evolucin de los ordenadores lo introdujo el microprocesador: se trata de unaunidad central de proceso contenida totalmente en un circuito integrado. Comenzaba as la gran carrera enbusca de lo ms rpido, ms pequeo; rpidamente el mundo del ordenador empez a ser accesible apequeas empresas e incluso a nivel domstico: es el boom de los microordenadores personales. Aunquecuando entremos en la descripcin de los microprocesadores objeto de nuestro estudio lo ampliaremos, harun pequeo comentario de las partes del microprocesador:

    - Unidad aritmtico-lgica: Es donde se efectan las operaciones aritmticas (suma, resta, y a vecesproducto y divisin) y lgicas (and, or, not, etc.). - Decodificador de instrucciones: All se interpretan las instrucciones que van llegando y que componen elprograma. - Bloque de registros: Los registros son celdas de memoria en donde queda almacenado un datotemporalmente. Existe un registro especial llamado de indicadores, estado o flags, que refleja el estadooperativo del microprocesador. - Bloque de control de buses internos y externos: supervisa todo el proceso de transferencias deinformacin dentro del microprocesador y fuera de l.

    2.3. - BREVE HISTORIA DEL ORDENADOR PERSONAL Y EL DOS.

    La trepidante evolucin del mundo informtico podra provocar que algn recin llegado a este libro nosepa exactamente qu diferencia a un ordenador "AT" del viejo "XT" inicial de IBM. Algunos trminos

    2 de 6 12/10/00 19:05

    ARQUITECTURA E HISTORIA DE LOS MICROORDENADORES file:///C|/librosVirtuales/UniversoDigital/02.html

  • manejados en este libro podran ser desconocidos para los lectores ms jvenes. Por ello, haremos unapequea introduccin sobre la evolucin de los ordenadores personales, abarcando toda la historia (ya que noes muy larga).

    La premonicin.

    En 1973, el centro de investigacin de Xerox en Palo Alto desarroll un equipo informtico con el aspectoexterno de un PC personal actual. Adems de pantalla y teclado, dispona de un artefacto similar al ratn; engeneral, este aparato (denominado Alto) introdujo, mucho antes de que otros los reinventaran, algunos de losconceptos universalmente aceptados hoy en da. Sin embargo, la tecnologa del momento no permiti alcanzartodas las intenciones. Alguna innovacin, como la pantalla vertical, de formato similar a una hoja de papel (quedesearan algunos actuales internautas para los navegadores) an no ha sido adoptada: nuestros PC's siguenpareciendo televisores con teclas, y los procesadores de textos no muestran legiblemente una hoja en verticalcompleta incluso en monitores de 20 pulgadas.

    El microprocesador.

    El desarrollo del primer microprocesador por Intel en 1971, el 4004 (de 4 bits), supuso el primer pasohacia el logro de un PC personal, al reducir drsticamente la circuitera adicional necesaria. Sucesores de esteprocesador fueron el 8008 y el 8080, de 8 bits. Ed Roberts construy en 1975 el Altair 8800 basndose enel 8080; aunque esta mquina no tena teclado ni pantalla (slo interruptores y luces), era una arquitecturaabierta (conocida por todo el mundo) y cuyas tarjetas se conectaban a la placa principal a travs de 100terminales, que ms tarde terminaran convirtindose en el bus estndar S-100 de la industria.

    El Apple-I apareci en 1976, basado en el microprocesador de 8 bits 6502, en aquel entonces un recinaparecido aunque casi 10 veces ms barato que el 8080 de Intel. Fue sucedido en 1977 por el Apple-II. Noolvidemos los rudimentos de la poca: el Apple-II tena un lmite mximo de 48 Kbytes de memoria. En elmismo ao, Commodore sac su PET con 8 Kbytes. Se utilizaban cintas de casete como almacenamiento,aunque comenzaron a aparecer las unidades de disquete de 5. Durante finales de los 70 aparecieronmuchos otros ordenadores, fruto de la explosin inicial del microprocesador.

    Los micros de los 80.

    En 1980, Sir Clive Sinclair lanz el ZX-80, seguido muy poco despus del ZX-81. Estaban basados en unmicroprocesador sucesor del 8085 de Intel: el Z80 (desarrollado por la empresa Zilog, creada por unex-ingeniero de Intel). Commodore irrumpi con sus VIC-20 y, posteriormente, el Commodore 64, basadosan en el 6502 y, este ltimo, con mejores posibilidades grficas y unos 64 Kb de memoria. Su competidorfue el ZX-Spectrum de Sinclair, tambin basado en el Z80, con un chip propio para gestin de grficos yotras tareas, la ULA, que permiti rebajar su coste y multiplic su difusin por europa, y en particular porEspaa. Sin embargo, todos los ordenadores domsticos de la poca, como se dieron en llamar, estabanbasados en procesadores de 8 bits y tenan el lmite de 64 Kb de memoria. Los intentos de rebasar este lmitemanteniendo an esos chips por parte de la plataforma MSX (supuesto estndar mundial con la misma suerteque ha corrido el Esperanto) o los CPC de Amstrad, de poco sirvieron.

    El IBM PC.

    Y es que IBM tambin fabric su propio ordenador personal con vocacin profesional: el 12 de agosto de1981 present el IBM PC. Estaba basado en el microprocesador 8088, de 16 bits, cuyas instruccionessern las que usemos en este libro, ya que todos los procesadores posteriores son bsicamente (enMS-DOS) versiones mucho ms rpidas del mismo. El equipamiento de serie consista en 16 Kbytes dememoria ampliables a 64 en la placa base (y a 256 aadiendo tarjetas); el almacenamiento externo se haca encintas de casete, aunque pronto aparecieron las unidades de disco de 5 pulgadas y simple cara

    3 de 6 12/10/00 19:05

    ARQUITECTURA E HISTORIA DE LOS MICROORDENADORES file:///C|/librosVirtuales/UniversoDigital/02.html

  • (160/180 Kb por disco) o doble cara (320/360 Kb). En 1983 apareci el IBM PC-XT, que traa comonovedad un disco duro de 10 Mbytes. Un ao ms tarde aparecera el IBM PC-AT, introduciendo elmicroprocesador 286, as como ranuras de expansin de 16 bits (el bus ISA de 16 bits) en contraposicincon las de 8 bits del PC y el XT (bus ISA de 8 bits), adems incorporaba un disco duro de 20 Mbytes ydisquetes de 5 pero con 1.2 Mbytes.

    En general, todos los equipos con procesador 286 o superior pueden catalogarse dentro de la categoraAT; el trmino XT hace referencia al 8088/8086 y similares. Finalmente, por PC (a secas) se entiendecualquiera de ambos; aunque si se hace distincin entre un PC y un AT en la misma frase, por PC sesobreentiende un XT, menos potente. El trmino PC ya digo, no obstante, es hoy en da mucho ms general,referenciando habitualmente a cualquier ordenador personal.

    Alrededor del PC se estaba construyendo un imperio de software ms importante que el propio hardware:estamos hablando del sistema operativo PC-DOS. Cuando aparecieron mquinas compatibles con el PC deIBM, tenan que respetar la compatibilidad con ese sistema, lo que fue sencillo (ya que Microsoft, le gustara ono a IBM, desarroll el MS-DOS, compatible con el PC-DOS pero que no requera la BIOS del ordenadororiginal, cuyo copyright era de IBM). Incluso, el desarrollo de los microprocesadores posteriores ha estadototalmente condicionado por el MS-DOS. [Por cierto, la jugada del PC-DOS/MS-DOS se repetira enalguna manera pocos aos despus con el OS/2-Windows].

    A partir de 1986, IBM fue paulatinamente dejando de tener la batuta del mercado del PC. La razn esque la propia IBM tena que respetar la compatibilidad con lo anterior, y en ese terreno no tena msfacilidades para innovar que la competencia. El primer problema vino con la aparicin de los procesadores386: los dems fabricantes se adelantaron a IBM y lanzaron mquinas con ranuras de expansin an de 16bits, que no permitan obtener todo el rendimiento. IBM desarroll demasiado tarde, en 1987, la arquitecturaMicrochannel, con bus de 32 bits pero cerrada e incompatible con tarjetas anteriores (aunque sedesarrollaron nuevas tarjetas, eran caras) y la incluy en su gama de ordenadores PS/2 (alguno de cuyosmodelos era an realmente ISA). La insolente respuesta de la competencia fue la arquitectura EISA, tambinde 32 bits pero compatible con la ISA anterior.

    Otro ejemplo: si IBM gobern los estndares grficos hasta la VGA, a partir de ah sucedi un fenmenosimilar y los dems fabricantes se adelantaron a finales de los 80 con mejores tarjetas y ms baratas; sinembargo, se perdi la ventaja de la normalizacin (no hay dos tarjetas superiores a la VGA que funcionenigual).

    EISA tambin era caro, as que los fabricantes orientales, cruzada ya la barrera de los aos 90,desarrollaron con la norma VESA las placas con bus local (VESA Local Bus); bsicamente es unaprolongacin de las patillas de la CPU a las ranuras de expansin, lo que permite tarjetas rpidas de 32 bitspero muy conflictivas entre s. Esta arquitectura de bus se populariz mucho con los procesadores 486. Sinembargo, al final el estndar que se ha impuesto ha sido el propuesto por el propio fabricante de las CPU:Intel, con su bus PCI, que con el Pentium se ha convertido finalmente en el nico estndar de bus de 32 bits.Estas mquinas an admiten no obstante las viejas tarjetas ISA, suficientes para algunas aplicaciones de bajavelocidad (modems,... etc).

    La evolucin del MS-DOS.

    Una manera sencilla de comprender la evolucin de los PC es observar la evolucin de las sucesivasversiones del DOS y los sistemas que le han sucedido.

    En 1979, Seatle Computer necesitaba apoyar de alguna manera a sus incipientes placas basadas en el8086. Como Digital Research estaba tardando demasiado en convertir el CP/M-80 a CP/M-86, desarrollsu propio sistema: el QDOS 0.1, que fue presentado en 1980. Antes de finales de ao apareci QDOS 0.3.

    4 de 6 12/10/00 19:05

    ARQUITECTURA E HISTORIA DE LOS MICROORDENADORES file:///C|/librosVirtuales/UniversoDigital/02.html

  • Bill Gates, dueo de Microsoft, de momento slo posea una versin de lenguaje BASIC para 8086 noorientada a ningn sistema operativo particular, que le gust a algn directivo de IBM. Bill Gates ya habahecho la primera demostracin mundial de BASIC corriendo en un 8086 en las placas de Seatle Computer(en julio de 1979) y haba firmado un contrato de distribucin no exclusiva para el QDOS 0.3 a finales de1980. En abril de 1981 aparecieron las primeras versiones de CP/M-86 de Digital, a la vez que QDOS serenombraba a 86-DOS 1.0 aunque en principio pareca tener menos futuro que el CP/M. En Julio, sinembargo, Microsoft adquira todos los derechos del 86-DOS.

    Digital Research no ocupa actualmente el lugar de Microsoft porque en 1981 era una compaademasiado importante como para cerrar un acuerdo con IBM sin imponer sus condiciones para cederle losderechos del sistema operativo CP/M. As que IBM opt por Bill Gates, que acababa de adquirir un sistemaoperativo, el 86-DOS, que pas a denominarse PC-DOS 1.0. Las versiones de PC-DOS no dependientesde la ROM BIOS de IBM se denominaran MS-DOS, trmino que ha terminado siendo ms popular.

    A continuacin se expone la evolucin hasta la versin 5.0; las versiones siguientes no aaden ningunacaracterstica interna nueva destacable (aunque a nivel de interfaz con el usuario y utilidades incluidas hayams cambios). El MS-DOS 7.0 sobre el que corre Windows 95 s tiene bastantes retoques internos, pero noes frecuente su uso aislado o independiente de Windows 95. Aunque PC-DOS y MS-DOS siembre hancaminado paralelos, hay una nica excepcin: la versin 7.0 (no confundir MS-DOS 7.0 con PC-DOS 7.0:este ltimo es, realmente, el equivalente al MS-DOS 5.0 6.2).

    Agosto de 1981. Presentacin del MS-DOS 1.0 original.

    Marzo de 1982. MS-DOS 1.25, aadiendo soporte para disquetes de doble cara. Las funcionesdel DOS (en INT 21h) slo llegaban hasta la 1Fh (la 30h no estaba implementada!).

    Marzo de 1983. MS-DOS 2.0 introducido con el XT: reescritura del ncleo en C; mejoras en elsistema de ficheros (FAT, subdirectorios,...); separacin de los controladores de dispositivo delsistema.

    Mayo de 1983. MS-DOS 2.01: soporte de juegos de caracteres internacionales.

    Octubre de 1983. MS-DOS 2.11: eliminacin de errores.

    Agosto de 1984. MS-DOS 3.0: Aade soporte para disquetes de 1.2M y discos duros de 20 Mb.No sera necesaria una nueva versin del DOS para cada nuevo formato de disco si el controladorintegrado para A:, B: y C: lo hubieran hecho flexible algn da.

    Marzo de 1985. MS-DOS 3.1: Soporte para redes locales.

    Diciembre de 1985. MS-DOS 3.2: Soporte para disquetes de 720K (3-DD).

    Abril de 1987. MS-DOS 3.3: Soporte para disquetes de 1.44M (3-HD). Permite particionessecundarias en los discos duros. Soporte internacional: pginas de cdigos.

    Julio de 1988. MS-DOS 4.0: Soporte para discos duros de ms de 32 Mb (cambio radicalinterno que forz la reescritura de muchos programas de utilidad) hasta 2 Gb. Controlador de memoriaEMM386. Precipitada salida al mercado.

    Noviembre de 1988. MS-DOS 4.01: Corrige las erratas de la 4.0.

    5 de 6 12/10/00 19:05

    ARQUITECTURA E HISTORIA DE LOS MICROORDENADORES file:///C|/librosVirtuales/UniversoDigital/02.html

  • Junio de 1991. MS-DOS 5.0: Soporte para memoria superior. La competencia de DigitalResearch, que irrumpe en el mundo del DOS una dcada ms tarde (con DR-DOS), obliga aMicrosoft a incluir ayuda online y a ocuparse un poco ms de los usuarios.

    Digital Research trabaj arduamente para lograr una compatibilidad total con MS-DOS, y finalmenteconsigui lanzar al mercado su sistema DR-DOS. Las versiones 5.0 y 6.0 de este sistema, as como elNovell DOS 7.0 (cuando cedi los derechos a Novell) se pueden considerar prcticamente 100%compatibles. El efecto del DR-DOS fue positivo, al forzar a Microsoft a mejorar la interaccin del sistemaoperativo con los usuarios (documentacin en lnea, programas de utilidad, ciertos detalles...); por poner unejemplo, hasta el MS-DOS 6.2 ha sido necesario intercambiar tres veces el disquete origen y el destinodurante la copia de un disquete normal de 1.44M. En cierto modo, la prepotencia de Microsoft con elMS-DOS a principios de los noventa era similar a la de Digital Research a principios de los 80 con el CP/M.

    El futuro.

    El resto de la historia de los sistemas operativos de PC ya la conoce el lector, a menos que no estinformado de la actualidad. Caminamos hacia la integracin de los diversos Windows en uno slo, queesperemos que algn da sea suficientemente abierto para que le surjan competidores. Si en el futuro hubieraun slo sistema operativo soportado por Microsoft, no vamos por buen camino.

    En ese caso, sera de agradecer que algn juez les obligara a publicar una especificacin completa de lasfunciones y protocolos del sistema, con objeto de que algn organismo de normalizacin internacional lasrecogiera sin ambigedades para permitir la libre competencia de otros fabricantes. El DOS y el Windowsactuales no son ningn invento maravilloso de Microsoft. Por poner un ejemplo, el MS-DOS 1.0 careca defuncin para identificar la versin del sistema. Exactamente lo mismo le ha sucedido a las primeras versionesde Windows (hay varios chequeos distintos para detectarlas, segn el modo de funcionamiento y la versin):el MS-DOS no lo escribi inicialmente Microsoft, pero Windows s, y salta a la vista que sus programadores,para cometer semejante despiste, se sentaron delante del teclado antes de hacer un anlisis de la aplicacin adesarrollar, igual que lo hubiera hecho alguien que hubiera aprendido a programar con unos fascculoscomprados en el kiosco. Con tanto analista en el paro...

    No olvidemos que el DOS y Windows son el fruto de toda la sociedad utilizando el mismo tipo deordenadores y necesitando la compatibilidad con lo anterior a cualquier precio. La prueba evidente son losprocesadores de Intel, construidos desde hace tiempo para dar servicio al sistema operativo del PC. Somosprisioneros, usuarios obligados de Microsoft. Naturalmente, no tengo nada contra Microsoft, pero opino queel poder adquirido durante una dcada, gracias a la exclusiva de los derechos sobre un sistema operativo sinayuda en la lnea de comandos, o de un Windows cerrado ntimamente ligado al DOS (de quien sloMicrosoft tiene el cdigo fuente) no legitima a ninguna empresa a tener tanto poder. No lo olvidemos: elMS-DOS ha dado un vuelco hacia la amigabilidad con el usuario cuando Digital Research ha aparecido conel DR-DOS. Del mismo modo que Windows seguir lento o colgndose mientras Unix no tenga msaplicaciones comerciales.

    Si hay alguien que puede competir con Windows es Unix. Y en Unix no dependemos de ningn fabricanteconcreto, ni de hardware ni de software. Probablemente, la insuficiente normalizacin actual la corregirapronto el propio mercado. Tiene usted Linux instalado en casa y lo utiliza al menos para conectarse aInternet por Infova, o quiz le gustara hacerlo algn da?. O por el contrario es de los que piensan que BillGates es un genio?. Si se queda con la segunda opcin, es que ve mucho la tele, aunque evidentemente tienerazn: y cuantos ms como usted, ms genio que ser... ;-)

    6 de 6 12/10/00 19:05

    ARQUITECTURA E HISTORIA DE LOS MICROORDENADORES file:///C|/librosVirtuales/UniversoDigital/02.html

  • Captulo III: Microprocesadores 8086/88, 286, 386, 486 y Pentium.

    3.1. - CARACTERSTICAS GENERALES.

    Los microprocesadores Intel 8086 y 8088 se desarrollan a partir de un procesador anterior, el 8080, que,en sus diversas encarnaciones -incluyendo el Zilog Z-80- ha sido la CPU de 8 bits de mayor xito.

    Poseen una arquitectura interna de 16 bits y pueden trabajar con operandos de 8 y 16 bits; una capacidadde direccionamiento de 20 bits (hasta 1 Mb) y comparten el mismo juego de instrucciones.

    La filosofa de diseo de la familia del 8086 se basa en la compatibilidad y la creacin de sistemasinformticos integrados, por lo que disponen de diversos coprocesadores como el 8089 de E/S y el 8087,coprocesador matemtico de coma flotante. De acuerdo a esta filosofa y para permitir la compatibilidad conlos anteriores sistemas de 8 bits, el 8088 se dise con un bus de datos de 8 bits, lo cual le hace ms lentoque su hermano el 8086, pues ste es capaz de cargar una palabra ubicada en una direccin par en un solociclo de memoria mientras el 8088 debe realizar dos ciclos leyendo cada vez un byte.

    Disponen de 92 tipos de instrucciones, que pueden ejecutar con hasta 7 modos de direccionamiento.Tienen una capacidad de direccionamiento en puertos de entrada y salida de hasta 64K (65536 puertos), porlo que las mquinas construidas entorno a estos microprocesadores no suelen emplear la entrada/salida pormapa de memoria, como veremos.

    Entre esas instrucciones, las ms rpidas se ejecutan en 2 ciclos tericos de reloj y unos 9 reales (se tratadel movimiento de datos entre registros internos) y las ms lentas en 206 (divisin entera con signo delacumulador por una palabra extrada de la memoria). Las frecuencias internas de reloj tpicas son 4.77 MHzen la versin 8086; 8 MHz en la versin 8086-2 y 10 MHz en la 8086-1. Recurdese que un MHz son unmilln de ciclos de reloj, por lo que un PC estndar a 4,77 MHz puede ejecutar de 20.000 a unos 0,5millones de instrucciones por segundo, segn la complejidad de las mismas (un 486 a 50 MHz, incluso sinmemoria cach externa es capaz de ejecutar entre 1,8 y 30 millones de estas instrucciones por segundo).

    El microprocesador Intel 80286 se caracteriza por poseer dos modos de funcionamiento completamentediferenciados: el modo real en el que se encuentra nada ms ser conectado a la corriente y el modoprotegido en el que adquiere capacidad de proceso multitarea y almacenamiento en memoria virtual. Elproceso multitarea consiste en realizar varios procesos de manera aparentemente simultnea, con la ayuda delsistema operativo para conmutar automticamente de uno a otro optimizando el uso de la CPU, ya quemientras un proceso est esperando a que un perifrico complete una operacin, se puede atender otroproceso diferente. La memoria virtual permite al ordenador usar ms memoria de la que realmente tiene,almacenando parte de ella en disco: de esta manera, los programas creen tener a su disposicin ms memoriade la que realmente existe; cuando acceden a una parte de la memoria lgica que no existe fsicamente, seproduce una interrupcin y el sistema operativo se encarga de acceder al disco y traerla.

    Cuando la CPU est en modo protegido, los programas de usuario tienen un acceso limitado al juego deinstrucciones; slo el proceso supervisor -normalmente el sistema operativo- est capacitado para realizarciertas tareas. Esto es as para evitar que los programas de usuario puedan campar a sus anchas y entrar enconflictos unos con otros, en materia de recursos como memoria o perifricos. Adems, de esta manera,aunque un error software provoque el cuelgue de un proceso, los dems pueden seguir funcionandonormalmente, y el sistema operativo podra abortar el proceso colgado. Por desgracia, con el DOS el 286 noest en modo protegido y el cuelgue de un solo proceso -bien el programa principal o una rutina operada porinterrupciones- significa la cada inmediata de todo el sistema.

    1 de 10 12/10/00 19:06

    MICROPROCESADORES 8086/88, 286, 386, 486 y Pentium file:///C|/librosVirtuales/UniversoDigital/03.html

  • El 8086 no posee ningn mecanismo para apoyar la multitarea ni la memoria virtual desde el procesador,por lo que es difcil disear un sistema multitarea para el mismo y casi imposible conseguir que sea realmenteoperativo. Obviamente, el 286 en modo protegido pierde absolutamente toda la compatibilidad con losprocesadores anteriores. Por ello, en este libro slo trataremos el modo real, nico disponible bajo DOS,aunque veremos alguna instruccin extra que tambin se puede emplear en modo real.

    Las caractersticas generales del 286 son: tiene un bus de datos de 16 bits, un bus de direcciones de 24bits (16 Mb); posee 25 instrucciones ms que el 8086 y admite 8 modos de direccionamiento. En modovirtual permite direccionar hasta 1 Gigabyte. Las frecuencias de trabajo tpicas son de 12 y 16 MHz, aunqueexisten versiones a 20 y 25 MHz. Aqu, la instruccin ms lenta es la misma que en el caso del 8086, solo queemplea 29 ciclos de reloj en lugar de 206. Un 286 de categora media (16 MHz) podra ejecutar ms demedio milln de instrucciones de estas en un segundo, casi 15 veces ms que un 8086 medio a 8 MHz. Sinembargo, transfiriendo datos entre registros la diferencia de un procesador a otro se reduce notablemente,aunque el 286 es ms rpido y no slo gracias a los MHz adicionales.

    Versiones mejoradas de los Intel 8086 y 8088 se encuentran tambin en los procesadores NEC-V30 yNEC-V20 respectivamente. Ambos son compatibles Hardware y Software, con la ventaja de que elprocesado de instrucciones est optimizado, llegando a superar casi en tres veces la velocidad de losoriginales en algunas instrucciones aritmticas. Tambin poseen una cola de prebsqueda mayor (cuando elmicroprocesador est ejecutando una instruccin, si no hace uso de los buses externos, carga en una colaFIFO de unos pocos bytes las posiciones posteriores a la que est procesando, de esta forma una vez queconcluye la instruccin en curso ya tiene internamente la que le sigue). Adems, los NEC V20 y V30disponen de las mismas instrucciones adicionales del 286 en modo real, al igual que el 80186 y el 80188.

    Por su parte, el 386 dispone de una arquitectura de registros de 32 bits, con un bus de direccionestambin de 32 bits (direcciona hasta 4 Gigabytes = 4096 Mb) y ms modos posibles de funcionamiento: elmodo real (compatible 8086), el modo protegido (relativamente compatible con el del 286), un modoprotegido propio que permite -por fin!- romper la barrera de los tradicionales segmentos y el modo virtual86, en el que puede emular el funcionamiento simultneo de varios 8086. Una vez ms, todos los modos sonincompatibles entre s y requieren de un sistema operativo especfico: si se puede perdonar al fabricante laprdida de compatibilidad del modo avanzados del 286 frente al 8086, debido a la lgica evolucintecnolgica, no se puede decir lo mismo del 386 respecto al 286: no hubiera sido necesario aadir un nuevomodo protegido si hubiera sido mejor construido el del 286 apenas un par de aos atrs. Normalmente, los386 suelen operar en modo real (debido al DOS) por lo que no se aprovechan las posibilidades multitarea nide gestin de memoria. Por otra parte, aunque se pueden emplear los registros de 32 bits en modo real, ellono suele hacerse -para mantener la compatibilidad con procesadores anteriores- con lo que de entrada se esttirando a la basura un 50% de la capacidad de proceso del chip, aunque por fortuna estos procesadoressuelen trabajar a frecuencias de 16/20 MHz (obsoletas) y normalmente de 33 y hasta 40 MHz.

    El 386sx es una variante del 386 a nivel de hardware, aunque es compatible en software. Bsicamente, esun 386 con un bus de datos de slo 16 bits -ms lento, al tener que dar dos pasadas para un dato de 32bits-. De hecho, podra haber sido diseado perfectamente para mantener una compatibilidad hardware conel 286, aunque el fabricante lo evit probablemente por razones comerciales.

    El 486 se diferencia del 386 en la integracin en un solo chip del coprocesador 387. Tambin se hamejorado la velocidad de operacin: la versin de 25 MHz dobla en trminos reales a un 386 a 25 MHzequipado con el mismo tamao de memoria cach. La versin 486sx no se diferencia en el tamao del bus,tambin de 32 bits, sino en la ausencia del 387 (que puede ser aadido externamente). Tambin existenversiones de 486 con buses de 16 bits, el primer fabricante de estos chips, denominados 486SLC, ha sidoCyrix. Una tendencia iniciada por el 486 fue la de duplicar la velocidad del reloj interno (pongamos por casode 33 a 66 MHz) aunque en las comunicaciones con los buses exteriores se respeten los 33 MHz. Ello agilizala ejecucin de las instrucciones ms largas: bajo DOS, el rendimiento general del sistema se puede considerar

    2 de 10 12/10/00 19:06

    MICROPROCESADORES 8086/88, 286, 386, 486 y Pentium file:///C|/librosVirtuales/UniversoDigital/03.html

  • prcticamente el doble. Son los chips DX2 (tambin hay una variante a 50 MHz: 25 x 2). La culminacin deesta tecnologa viene de la mano de los DX4 a 75/100 MHz (25/33 x 3).

    El Pentium, ltimo procesador de Intel en el momento de escribirse estas lneas, se diferencia respecto al486 en el bus de datos (ahora de 64 bits, lo que agiliza los accesos a memoria) y en un elevadsimo nivel deoptimizacin y segmentacin que le permite, empleando compiladores optimizados, simultanear en muchoscasos la ejecucin de dos instrucciones consecutivas. Posee dos cachs internas, tiene capacidad parapredecir el destino de los saltos y la unidad de coma flotante experimenta elevadas mejoras. Sin embargo,bajo DOS, un Pentium bsico slo es unas 2 veces ms rpido que un 486 a la misma frecuencia de reloj.Comenz en 60/90 MHz hasta los 166/200/233 MHz de las ltimas versiones (Pentium Pro y MMX), quejunto a diversos clones de otros fabricantes, mejoran an ms el rendimiento. Todos los equipos Pentiumemplean las tcnicas DX, ya que las placas base tpicas corren a 60 MHz. Para hacerse una idea, por unas200000 pts de 1997 un equipo Pentium MMX a 233 MHz es cerca de 2000 veces ms rpido en aritmticaentera que el IBM PC original de inicios de la dcada de los 80; en coma flotante la diferencia aumentaincluso algunos rdenes ms de magnitud. Y a una fraccin del coste (un milln de pts de aquel entonces queequivale a unos 2,5 millones de hoy en da). Aunque no hay que olvidar la revolucin del resto de loscomponentes: 100 veces ms memoria (central y de vdeo), 200 veces ms grande el disco duro... y que undisco duro moderno transfiere datos 10 veces ms deprisa que la memoria de aquel IBM PC original. Pordesgracia, el software no ha mejorado el rendimiento, ni remotamente, en esa proporcin: es la factura pasadapor las tcnicas de programacin cada vez a un nivel ms alto (aunque nadie discute sus ventajas).

    Una caracterstica de los microprocesadores a partir del 386 es la disponibilidad de memorias cach dealta velocidad de acceso -muy pocos nanosegundos- que almacenan una pequea porcin de la memoriaprincipal. Cuando la CPU accede a una posicin de memoria, cierta circuitera de control se encarga de irdepositando el contenido de esa posicin y el de las posiciones inmediatamente consecutivas en la memoriacach. Cuando sea necesario acceder a la instruccin siguiente del programa, sta ya se encuentra en la cachy el acceso es muy rpido. Lo ideal sera que toda la memoria del equipo fuera cach, pero esto no es todavaposible actualmente. Una cach de tamao razonable puede doblar la velocidad efectiva de proceso de laCPU. El 8088 careca de memoria cach, pero s estaba equipado con una unidad de lectura adelantada deinstrucciones con una cola de prebsqueda de 4 bytes: de esta manera, se agilizaba ya un tanto la velocidadde proceso al poder ejecutar una instruccin al mismo tiempo que iba leyendo la siguiente.

    3.2. - REGISTROS DEL 8086 Y DEL 286.

    Estos procesadores disponen de 14 registros de 16 bits (el 286 alguno ms, pero no se suele emplear bajoDOS). La misin de estos registros es almacenar las posiciones de memoria que van a experimentar repetidasmanipulaciones, ya que los accesos a memoria son mucho ms lentos que los accesos a los registros.Adems, hay ciertas operaciones que slo se pueden realizar sobre los registros. No todos los registros sirvenpara almacenar datos, algunos estn especializados en apuntar a las direcciones de memoria. La mecnicabsica de funcionamiento de un programa consiste en cargar los registros con datos de la memoria o de unpuerto de E/S, procesar los datos y devolver el resultado a la memoria o a otro puerto de E/S. Obviamente,si un dato slo va a experimentar un cambio, es preferible realizar la operacin directamente sobre lamemoria, si ello es posible. A continuacin se describen los registros del 8086.

    AX SP CS IP

    BX BP DS flags

    CX SI SS

    DX DI ES

    Registrosde datos

    Registrospunteros depila e ndices

    Registros desegmento

    Registro punterode instrucciones

    y flags

    3 de 10 12/10/00 19:06

    MICROPROCESADORES 8086/88, 286, 386, 486 y Pentium file:///C|/librosVirtuales/UniversoDigital/03.html

  • - Registros de datos:

    AX, BX, CX, DX: pueden utilizarse bien como registros de 16 bits o como dos registros separados de8 bits (byte superior e inferior) cambiando la X por H o L segn queramos referirnos a la parte alta o bajarespectivamente. Por ejemplo, AX se descompone en AH (parte alta) y AL (parte baja). Evidentemente,cualquier cambio sobre AH o AL altera AX!: valga como ejemplo que al incrementar AH se le estnaadiendo 256 unidades a AX.

    AX = Acumulador.

    Es el registro principal, es utilizado en las instrucciones de multiplicacin y divisin y en algunasinstrucciones aritmticas especializadas, as como en ciertas operaciones de carcter especfico como entrada,salida y traduccin. Obsrvese que el 8086 es suficientemente potente para realizar las operaciones lgicas, lasuma y la resta sobre cualquier registro de datos, no necesariamente el acumulador.

    BX = Base. Se usa como registro base para referenciar direcciones de memoria con direccionamiento indirecto,manteniendo la direccin de la base o comienzo de tablas o matrices. De esta manera, no es preciso indicaruna posicin de memoria fija, sino la nmero BX (as, haciendo avanzar de unidad en unidad a BX, porejemplo, se puede ir accediendo a un gran bloque de memoria en un bucle).

    CX = Contador. Se utiliza comnmente como contador en bucles y operaciones repetitivas de manejo de cadenas. Enlas instrucciones de desplazamiento y rotacin se utiliza como contador de 8 bits.

    DX = Datos. Usado en conjuncin con AX en las operaciones de multiplicacin y divisin que involucran o generandatos de 32 bits. En las de entrada y salida se emplea para especificar la direccin del puerto E/S.

    - Registros de segmento:

    Definen reas de 64 Kb dentro del espacio de direcciones de 1 Mb del 8086. Estas reas puedensolaparse total o parcialmente. No es posible acceder a una posicin de memoria no definida por algnsegmento: si es preciso, habr de moverse alguno.

    CS = Registro de segmento de cdigo (code segment). Contiene la direccin del segmento con las instrucciones del programa. Los programas de ms de 64Kb requieren cambiar CS peridicamente.

    DS = Registro de segmento de datos (data segment). Segmento del rea de datos del programa.

    SS = Registro de segmento de pila (stack segment). Segmento de pila.

    ES = Registro de segmento extra (extra segment). Segmento de ampliacin para zona de datos. Es extraordinariamente til actuando en conjuncin conDS: con ambos se puede definir dos zonas de 64 Kb, tan alejadas como se desee en el espacio dedirecciones, entre las que se pueden intercambiar datos.

    4 de 10 12/10/00 19:06

    MICROPROCESADORES 8086/88, 286, 386, 486 y Pentium file:///C|/librosVirtuales/UniversoDigital/03.html

  • - Registros punteros de pila:

    SP = Puntero de pila (stack pointer). Apunta a la cabeza de la pila. Utilizado en las instrucciones de manejo de la pila.

    BP = Puntero base (base pointer). Es un puntero de base, que apunta a una zona dentro de la pila dedicada al almacenamiento de datos(variables locales y parmetros de las funciones en los programas compilados).

    - Registros ndices:

    SI = ndice fuente (source index). Utilizado como registro de ndice en ciertos modos de direccionamiento indirecto, tambin se empleapara guardar un valor de desplazamiento en operaciones de cadenas.

    DI = ndice destino (destination index). Se usa en determinados modos de direccionamiento indirecto y para almacenar un desplazamiento enoperaciones con cadenas.

    - Puntero de instrucciones o contador de programa:

    IP = Puntero de instruccin (instruction pointer). Marca el desplazamiento de la instruccin en curso dentro del segmento de cdigo. Esautomticamente modificado con la lectura de una instruccin.

    - Registro de estado o de indicadores (flags).

    Es un registro de 16 bits de los cuales 9 son utilizados para indicar diversas situaciones durante laejecucin de un programa. Los bits 0, 2, 4, 6, 7 y 11 son indicadores de condicin, que reflejan los resultadosde operaciones del programa; los bits del 8 al 10 son indicadores de control y el resto no se utilizan. Estosindicadores pueden ser comprobados por las instrucciones de salto condicional, lo que permite variar el flujosecuencial del programa segn el resultado de las operaciones.

    15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

    OF DF IF TF SF ZF AF PF CF

    CF (Carry Flag): Indicador de acarreo. Su valor ms habitual es lo que nos llevamos en una suma oresta. OF (Overflow Flag): Indicador de desbordamiento. Indica que el resultado de una operacin no cabeen el tamao del operando destino. ZF (Zero Flag): Indicador de resultado 0 o comparacin igual. SF (Sign Flag): Indicador de resultado o comparacin negativa. PF (Parity Flag): Indicador de paridad. Se activa tras algunas operaciones aritmtico-lgicas paraindicar que el nmero de bits a uno resultante es par. AF (Auxiliary Flag): Para ajuste en operaciones BCD. DF (Direction Flag): Indicador de direccin. Manipulando bloques de memoria, indica el sentido deavance (ascendente/descendente).

    5 de 10 12/10/00 19:06

    MICROPROCESADORES 8086/88, 286, 386, 486 y Pentium file:///C|/librosVirtuales/UniversoDigital/03.html

  • IF (Interrupt Flag): Indicador de interrupciones: puesto a 1 estn permitidas. TF (Trap Flag): Indicador de atrape (ejecucin paso a paso).

    3.3. - REGISTROS DEL 386 Y PROCESADORES SUPERIORES.

    Los 386 y superiores disponen de muchos ms registros de los que vamos a ver ahora. Sin embargo, bajoel sistema operativo DOS slo se suelen emplear los que veremos, que constituyen bsicamente una extensina 32 bits de los registros originales del 8086.

    Se ampla el tamao de los registros de datos (que pueden ser accedidos en fragmentos de 8, 16 32bits) y se aaden dos nuevos registros de segmento multipropsito (FS y GS). Algunos de los registros aqumostrados son realmente de 32 bits (como EIP en vez de IP), pero bajo sistema operativo DOS no puedenser empleados de manera directa, por lo que no les consideraremos.

    3.4. - MODOS DE DIRECCIONAMIENTO.

    Son los distintos modos de acceder a los datos en memoria por parte del procesador. Antes de ver losmodos de direccionamiento, echaremos un vistazo a la sintaxis general de las instrucciones, ya que pondremosalguna en los ejemplos:

    INSTRUCCIN DESTINO, FUENTE

    Donde destino indica dnde se deja el resultado de la operacin en la que pueden participar (segn casos)FUENTE e incluso el propio DESTINO. Hay instrucciones, sin embargo, que slo tienen un operando, comola siguiente, e incluso ninguno:

    INSTRUCCIN DESTINO

    Como ejemplos, aunque no hemos visto an las instrucciones utilizaremos un par de ellas: la de copia omovimiento de datos (MOV) y la de suma (ADD).

    3.4.1. - ORGANIZACIN DE DIRECCIONES: SEGMENTACIN.

    Como ya sabemos, los microprocesadores 8086 y compatibles poseen registros de un tamao mximo de16 bits que direccionaran hasta 64K; en cambio, la direccin se compone de 20 bits con capacidad para1Mb, hay por tanto que recurrir a algn artificio para direccionar toda la memoria. Dicho artificio consiste enla segmentacin: se trata de dividir la memoria en grupos de 64K. Cada grupo se asocia con un registro desegmento; el desplazamiento (offset) dentro de ese segmento lo proporciona otro registro de 16 bits. Ladireccin absoluta se calcula multiplicando por 16 el valor del registro de segmento y sumando el offset,obtenindose una direccin efectiva de 20 bits. Esto equivale a concebir el mecanismo de generacin de ladireccin absoluta, como si se tratase de que los registros de segmento tuvieran 4 bits a 0 (imaginarios) a laderecha antes de sumarles el desplazamiento:

    6 de 10 12/10/00 19:06

    MICROPROCESADORES 8086/88, 286, 386, 486 y Pentium file:///C|/librosVirtuales/UniversoDigital/03.html

  • direccin = segmento * 16 + offset

    En la prctica, una direccin se indica con la notacin SEGMENTO:OFFSET; adems, una mismadireccin puede expresarse de ms de una manera: por ejemplo, 3D00h:0300h es equivalente a 3D30:0000h.Es importante resaltar que n