| EL UNIVERSO DIGITAL | DEL IBM PC, AT Y PS/2 |
| Edición 4.0 (4ª) | Ciriaco García de Celis |
| PRÓLOGO DE LA EDICIÓN 4.0 ELECTRÓNICA |
| 0 | PRÓLOGO DE LA TERCERA EDICIÓN (1994) |
| 1 | INTRODUCCIÓN |
| 2 | ARQUITECTURA E HISTORIA DE LOS MICROORDENADORES |
| 3 | MICROPROCESADORES 8086/88, 286, 386, 486 y Pentium |
| 4 | JUEGO DE INSTRUCCIONES 80x86 |
| 5 | EL LENGUAJE ENSAMBLADOR DEL 80x86 |
| 6 | EL ENSAMBLADOR EN ENTORNO DOS |
| 7 | ARQUITECTURA DEL PC, AT y PS/2 BAJO DOS |
| 8 | LA GESTIÓN DE MEMORIA DEL DOS |
| 9 | SUBPROCESOS, RECUBRIMIENTOS Y FILTROS |
| 10 | PROGRAMAS RESIDENTES |
| 11 | CONTROLADORES DE DISPOSITIVO |
| 12 | EL HARDWARE DE APOYO AL MICROPROCESADOR |
| 13 | EL ENSAMBLADOR Y EL LENGUAJE C |
| APÉNDICES |

| PRÓLOGO DE LA EDICIÓN 4.0 ELECTRÓNICA |
| 0 - PRÓLOGO DE LA TERCERA EDICIÓN (1994) |
| 1 - INTRODUCCIÓN |
| 1.1 - Números binarios, octales y hexadecimales |
| 1.2 - Cambio de base |
| 1.3 - Estructura elemental de la memoria |
| 1.4 - Operaciones aritméticas sencillas en binario |
| 1.5 - Complemento a dos |
| 1.6 - Agrupaciones de bytes |
| 1.7 - Representación de datos en memoria |
| 1.8 - Operaciones lógicas 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 - Características 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 - Descripción completa de las instrucciones |
| 4.1.1 - De carga de registros y direcciones |
| 4.1.2 - De manipulación 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 - Aritméticas |
| 4.1.7 - Manipulación de cadenas |
| 4.1.8 - Operaciones lógicas a nivel de bit |
| 4.1.9 - De control del procesador |
| 4.1.10 - De rotación y desplazamiento |
| 4.2 - Resumen alfabético de las instrucciones y banderines. Indice. |
| 4.3 - Instrucciones específicas del 286, 386 y 486 en modo real |
| 5 - EL LENGUAJE ENSAMBLADOR DEL 80x86 |
| 5.1 - Sintaxis de una línea en ensamblador |
| 5.2 - Constantes y operadores |
| 5.2.1 - Constantes |
| 5.2.2 - Operadores aritméticos |
| 5.2.3 - Operadores lógicos |
| 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 definición de datos |
| 5.3.2 - De definición de símbolos |
| 5.3.3 - De control del ensamblador |
| 5.3.4 - De definición de segmentos y procedimientos |
| 5.3.5 - De referencias externas |
| 5.3.6 - De definición de bloques |
| 5.3.7 - Condicionales |
| 5.3.8 - De listado |
| 5.4 - Macros |
| 5.4.1 - Definición y borrado de las macros |
| 5.4.2 - Ejemplo de una macro sencilla |
| 5.4.3 - Parámetros formales y parámetros actuales |
| 5.4.4 - Etiquetas dentro de macros. Variables locales. |
| 5.4.5 - Operadores de macros |
| 5.4.6 - Directivas útiles para macros |
| 5.4.7 - Macros avanzadas con número variable de parámetros |
| 5.5 - Programación modular y paso de parámetros |
| 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 gráfico |
| 7.4.1 - Modos gráficos |
| 7.4.2 - Detección de la tarjeta gráfica instalada |
| 7.4.3 - Introducción al estándar gráfico VGA |
| 7.4.4 - Ejemplo de gráficos empleando la BIOS. Trazado de líneas en CGA |
| 7.4.5 - Ejemplo de gráficos a nivel hardware. Circunferencias en VGA |
| 7.4.6 - El estándar gráfico 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 física |
| 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 |
| 7.9 - Formato de las extensiones ROM |
| 7.10 - Formato físico de los ficheros EXE |
| 8 - LA GESTIÓN 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 - Relación 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 - Cómo recorrer los bloques de memoria. Ejemplo. |
| 8.3 - Memorias extendida y superior XMS |
| 8.4 - Memoria expandida EMS |
| 9 - SUBPROCESOS, RECUBRIMIENTOS Y FILTROS |
| 10 - PROGRAMAS RESIDENTES |
| 10.1 - Principios básicos |
| 10.2 - Un ejemplo sencillo |
| 10.3 - Localización de un programa residente |
| 10.3.1 - Método de los vectores de interrupción |
| 10.3.2 - Método de la cadena de bloque de memoria |
| 10.3.3 - Método de la interrupción Multiplex |
| 10.4 - Expulsión de un programa residente de la memoria |
| 10.5 - Gestión avanzada de la interrupción Multiplex |
| 10.5.1 - El convenio BMB Compuscience |
| 10.5.2 - El convenio CiriSOFT |
| 10.5.3 - La propuesta AMIS |
| 10.5.4 - Comparación entre métodos |
| 10.6 - Métodos 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 límites de servicios del DOS en programas residentes |
| 10.10.1 - Una primera aproximación |
| 10.10.2 - Pasos a realizar para usar el DOS |
| 10.10.3 - Resumiendo, ¡no es tan difícil! |
| 10.10.4 - Un método alternativo: el SDA |
| 10.10.5 - Métodos menos ortodoxos |
| 10.11 - Ejemplo de programa residente que utiliza el DOS |
| 10.12 - Programas residentes invocables en modos gráficos |
| 10.13 - Programas residentes en entorno WINDOWS 3 |
| 11 - CONTROLADORES DE DISPOSITIVO |
| 11.1 - Introducción |
| 11.2 - Encabezamiento y palabra de atributos |
| 11.3 - Rutinas de estrategia e interrupción |
| 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: Características |
| 11.7.2 - Ensamblando TURBODSK |
| 11.7.3 - Análisis 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 periféricos 8255 |
| 12.2.1 - Descripción del integrado |
| 12.2.2 - El 8255 en el PC |
| 12.2.3 - Un método para averiguar la configuración del PC/XT |
| 12.3 - El temporizador 8253 u 8254 |
| 12.3.1 - Descripción del integrado |
| 12.3.2 - El 8254 en el ordenador |
| 12.3.3 - Temporización |
| 12.3.4 - Síntesis de sonido |
| 12.4 - El controlador de interrupciones 8259 |
| 12.4.1 - Cómo y por qué de las interrupciones |
| 12.4.2 - Descripción 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 |
| 12.5.2 - Descripción 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 páginas de DMA |
| 12.6 - El controlador de disquetes NEC 765 |
| 12.6.1 - La tecnología de grabación en disco |
| 12.6.2 - Descripción del FDC (Floppy Disk Controller) 765 |
| 12.6.3 - El 765 dentro del ordenador |
| 12.6.4 - Densidades de disco y formatos estándar |
| 12.6.5 - Acceso a disco con DMA |
| 12.6.6 - Lectura y escritura de sectores de disco sin DMA |
| 12.6.7 - Programación 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 máxima capacidad |
| 12.6.7.3 - Descripción de funcionamiento del soporte residente |
| 12.6.7.4 - Descripción 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 versión para PC/XT de 2M: 2MX |
| 12.6.7.7 - La opción BIOS de 2M: 2M-ABIOS y 2M-XBIOS |
| 12.6.7.8 - La utilidad 2MDOS |
| 12.6.7.9 - Cómo 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 - Programación de la controladora |
| 12.7.3 - Ejemplo práctico de programación |
| 12.8 - El controlador del teclado: 8042 |
| 12.8.1 - El 8042 |
| 12.8.2 - El teclado del AT |
| 12.8.3 - Comunicación CPU - teclado |
| 12.8.4 - Comunicación teclado - CPU |
| 12.9 - El puerto serie: UART 8250 |
| 12.9.1 - Descripción del integrado |
| 12.9.2 - El 8250 en el ordenador |
| 12.9.3 - Ejemplo: autodiagnóstico del 8250 |
| 12.10 - El puerto de la impresora |
| 12.10.1 - Los registros del puerto paralelo |
| 12.10.2 - Envío de caracteres |
| 12.10.3 - Cable NULL-MODEM para conectar dos ordenadores |
| 12.11 - El ratón |
| 12.12 - El reloj de tiempo real del AT: Motorola MC146818 |
| 12.12.1 - Descripción del integrado |
| 12.12.2 - El MC146818 dentro del ordenador |
| 12.12.3 - Un método para averiguar la configuración 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 interrupción |
| 13.1.6 - Programas residentes |
| 13.1.7 - Variables globales predefinidas interesantes |
| 13.1.8 - Inserción de codigo en línea |
| 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 - Integración de módulos en ensamblador |
| APÉNDICES |
| I | Mapa de memoria |
| II | Tabla de interrupciones del sistema |
| III | Tabla de variables de la BIOS |
| IV | Puertos de E/S |
| V | Códigos de rastreo del teclado |
| VI | Tamaños y tiempos de ejecución de las instrucciones |
| VII | Señales del slot de expansión 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 | Bibliografía |
