You are on page 1of 21

Captulo I

1. La arquitectura de la familia de procesadores 80x86


1.1. Introduccin
La estructura de una computadora involucra a todos los aspectos utilizados en su funcionamiento. Una manera til de ver un sistema de computadora es considerarlo como una estructura jerrquica en la que sus funciones estn distribuidas entre subsistemas. Cada nivel en la jerarqua proporciona un conjunto bien definido de servicios sobre el cual el siguiente nivel superior puede construirse. As, cada nivel viene a ser una mquina virtual la computadora en el siguiente nivel superior. La figura 1.1 ilustra este concepto.

Figura 1. Jerarqua de mquina virtual

La mquina fsica, o hardware, es el nivel ms bajo de la jerarqua. En este nivel existen muchas diferencias entre los sistemas. Sin embargo, los aspectos comunes entre diferentes mquinas incluyen: Un procesador de la familia 80x86 de Intel: 8086, 8088, 80186, 80286, 80386, u 80486. Un mapeo similar de equipo fsico dentro del sistema (en otras palabras, direcciones e interrupciones similarmente asignadas). Uno de un nmero limitado de diseos de bus. La mquina lgica, el software, incluye al BIOS, el Sistema Operativo de Disco (DOS) y los manejadores de dispositivos

1.2. El Hardware
Todos los miembros de la familia de computadoras PC's se forman de un procesador, chips de memoria y varios circuitos de chips programables. Los componentes del circuito principal necesarios para hacer trabajar a la computadora se localizan en la tarjeta del sistema; otras partes importantes estn localizadas en tarjetas de expansin, que pueden ser conectadas a la tarjeta del sistema.

La arquitectura de la familia 80x86

La tarjeta del sistema contiene al microprocesador -ya sea 8088, 8086, 80186, 80286, 80386 u 80486conectado a cuando menos 640K bytes de memoria, algunos programas interconstruidos en ROM, tales como ROM-BIOS, y varios chips de soporte muy importantes. Algunos de estos chips controlan dispositivos externos, como los manejadores de disco o el monitor y otros ayudan al microprocesador a realizar sus tareas.

1.2.1. La familia de microprocesadores 80x86


Intel Corporation fabrica el grupo de procesadores conocido como la familia de procesadores 80x86. Los sistemas operativos MS-DOS y PC-DOS estn diseados para trabajar bajo estos procesadores y tomar ventaja de sus caractersticas. La familia 80x86 tiene varios rasgos funcionales comunes, como son: La memoria est organizada usando una arquitectura segmentada. El conjunto de instrucciones es ascendentemente compatible -es decir, todas las caractersticas disponibles en las primeras versiones del procesador estn tambin disponibles en las versiones ms nuevas, pero stas contienen caractersticas adicionales no soportadas en las versiones anteriores. El conjunto de registros tambin es ascendentemente compatible. Procesadores 8086 y 8088 Estos procesadores trabajan en modo real. Estn diseados para ejecutar un proceso simple. No existen previsiones para proteger ninguna parte de la memoria de las acciones realizadas por un programa. El procesador puede direccionar hasta un megabyte de memoria. Las direcciones especificadas en lenguaje ensamblador corresponden a direcciones de memoria fsica. El 8088 usa un bus de datos de 8 bits y el 8086 utiliza un bus de datos de 16 bits. Esto hace al 8086 algo ms veloz. Sin embargo, desde el punto de vista de programacin, los dos procesadores son idnticos excepto que el 8086 manejar ciertos datos ms eficientemente . Procesador 80186 Este procesador es idntico al 8086 excepto que se agregan nuevas instrucciones y algunas de las instrucciones originales se han optimizado. Corre significativamente ms rpido que el 8086, especialmente en lo que se refiere a clculo de direcciones de memoria. Procesador 80286 Este procesador tiene agregadas las instrucciones y la rapidez del 80186. Puede correr en modo real del 8088 y el 8086, pero tambin tiene un modo protegido opcional en el que mltiples procesos pueden ser ejecutados concurrentemente. Es decir, mltiples programas pueden ser ejecutadas al mismo tiempo, sin interferir uno con otro. La memoria usada por cada proceso puede ser protegida de otros procesos. En el modo protegido, el procesador puede direccionar hasta 16 megabytes de memoria. Sin embargo, cuando la memoria es accesada en modo protegido, las direcciones no corresponden a direcciones de memoria fsicas. Bajo sistemas operativos de modo protegido, el procesador localiza y administra la memoria dinmicamente. Estn disponibles instrucciones privilegiadas adicionales para inicializar el modo protegido y controlar mltiples procesos.

La arquitectura de la familia 80x86

Procesador 80386 Este es un procesador de 16 y 32 bits. Es completamente compatible con el 80286, pero en el nivel del sistema implementa muchas nuevas caractersticas, incluyendo memoria virtual, mltiples procesos del 8086 y direccionamiento hasta para cuatro gigabytes de memoria. Procesador 80486

Coprocesadores matemticos 8087, 80287 y 80387 Existen coprocesadores matemticos que trabajan concurrentemente con la familia de procesadores 8086. Estos coprocesadores efectan clculos matemticos ms rpida y precisamente que realizndolo con la familia de procesadores 8086. Aunque existen diferencias tcnicas y de desempeo entre los tres coprocesadores, la diferencia principal para los programadores de aplicaciones, es que el 80287 y el 80387 pueden operar en modo protegido.

1.2.2. Los registros de la familia 80x86


El 8086 fue diseado para ejecutar instrucciones y realizar operaciones aritmticas y lgicas, al mismo tiempo que recibe instrucciones y pasa datos a y desde memoria. Para hacer sto utiliza registros de 16 bits. Existen 14 registros en el 80x86, cada uno con un uso especial. Cuatro registros de propsito general son usados por los programas para almacenar temporalmente los resultados intermedios y los operandos de las operaciones aritmticas y lgicas. Cuatro registros de segmento guardan la direccin inicial de ciertos segmentos de memoria. Cinco registros apuntadores e ndices mantienen las direcciones de desplazamiento que son utilizadas con los prrafos de segmento para localizar datos en memoria. Finalmente, existe un registro de banderas (flags) que contiene nueve banderas de 1 bit utilizadas para registrar la informacin de estado y controlar las operaciones del 8086. La Figura 1.2 muestra estos registros. Los registros de propsito general Los registros de propsito general, de tamao de 16 bits, son conocidos como AX, BX, CX y DX. Cada uno de ellos puede ser opcionalmente referenciado como un par de registros de 8 bits (1 byte). El byte de la parte izquierda (el ms significativo) es referido como el byte "alto" (high), y el byte de la parte derecha (el menos significativo) es referido como el byte "bajo" (low). As, el registro AX puede ser dividido en los registros AH (A alto) y AL (A bajo); el registro BX puede dividirse en los registros BH y BL, etc. El uso de estos registros como de 16 bits o de 8 bits puede ser entremezclado libremente, conforme sea necesario.

La arquitectura de la familia 80x86

Los registros de propsito general son usados mayormente como reas de trabajo temporal, particularmente en las operaciones aritmticas. La adicin y la substraccin puede realizarse en memoria sin usar los registros, pero stos son ms rpidos de accesar. Aunque estos registros estn disponibles para cualquier tipo de trabajo, cada uno tiene un uso especial. El registro AX, tambin conocido como el Acumulador, es el registro principal usado para efectuar operaciones aritmticas. Es tambin el registro ms eficiente a usar en algunas operaciones aritmticas, lgicas y de transferencia de datos. El registro BX (Base) es usado a menudo para apuntar a localizaciones de memoria. Un valor de 16 bits almacenada en BX puede ser usado como parte de una direccin de memoria a ser accesada.

Figura 2. El conjunto de registros del procesador 8086

El registro CX (Contador) es usado como un contador de repeticin para control de iteracin y movimientos repetidos de datos. Por ejemplo la instruccin LOOP en lenguaje ensamblador utiliza a CX para almacenar la cuenta del nmero de iteraciones. Ninguno de los otros registros puede realizar esta funcin. El registro DX es usado para almacenar datos de 16 bits para propsitos generales. Es el nico registro que puede ser usado como apuntador de direcciones de E/S en las instrucciones de acceso a puertos. En operaciones aritmticas de 32 bits, el registro DX complementa al registro AX. Los registros de segmentos La arquitectura segmentada del 8086 nicamente permite direccionar 1 Mb de memoria. Se requieren direcciones de memoria de 20 bits para direccionar todas las localizaciones en un espacio de 1 Mb. Sin embargo, el 8086 usa apuntadores a memoria de 16 bits -recurdese que el registro BX de 16 bits puede ser utilizado para apuntar a memoria-, por lo tanto, es necesario utilizar un esquema de direccionamiento de memoria de 2 partes: cada apuntador de memoria de 16 bits, conocido tambin como parte de desplazamiento, se combina con el contenido de un un registro de segmento de 16 bits para formar una direccin de memoria de 20 bits, denominada parte de segmento. Cuatro registros, llamados CS, DS, SS y ES, son usados para identificar cuatro segmentos especficos de memoria de 64K. De los cuatro registros, los siguientes tres estan dedicados a propsitos especiales: El registro CS apunta al inicio de un bloque de 64 Kb de memoria, o Segmento de Cdigo, en el que reside la siguiente instruccin a ser ejecutada. En otras palabras, apunta al bloque de direcciones que contiene al programa que se est ejecutando. El 8086 nunca buscar la siguiente instruccin a ejecutar en un segmento que no sea el definido por el registro CS. El registro DS apunta al inicio del Segmento de Datos, el rea de memoria de 64 Kb donde normalmente se almacenan los datos. 4

La arquitectura de la familia 80x86

El registro SS apunta al inicio del Segmento de Pila (o Stack), un lugar de trabajo temporal de 64 Kb donde los valores pueden ser almacenados y del cual pueden ser recuperados utilizando el esquema el Ultimo en Entrar es el Primero en Salir (Last In - First Out, o LIFO). El cuarto registro de segmento, el registro ES, apunta al inicio de un bloque de memoria conocido como Segmento Extra, que normalmente es usado para suplementar el segmento de datos y tener acceso a ms de 64K de memoria para almacenar datos. Tambin se usa para transferencia de datos entre segmentos. Es importante apuntar que es ms eficiente accesar memoria en el segmento de datos que en el segmento extra. Los registros de desplazamiento Cinco registros de desplazamiento son usados para localizar un byte o palabra dentro de un segmento especfico de 64K. Un registro, llamado el apuntador de instruccin (IP), localiza la siguiente instruccin a ejecutar en el segmento de cdigo; dos registros ms, conocidos como los registros de pila, estn ntimamente relacionados con la pila (o stack), un lugar en memoria donde el 8086 mantiene un seguimiento de direcciones y datos que necesita recordar para uso posterior; y los dos registros restantes, llamados los registros ndices, se utilizan para apuntar a los operandos actuales en el segmento de datos. El apuntador de instruccin (IP), tambin llamado el contador del programa (PC), proporciona la direccin de desplazamiento dentro del segmento de cdigo donde se almacena la siguiente instruccin a ser ejecutada. Conforme una instruccin se ejecuta, el apuntador de instrucciones es avanzado para que apunte a la instruccin en la siguiente direccin de memoria. Normalmente, la instruccin en la siguiente direccin de memoria es la siguiente instruccin a ejecutar, pero algunas instrucciones, como las llamadas a procedimientos y los saltos, pueden causar que el apuntador de instrucciones sea actualizado con un nuevo valor, que no sea la siguiente direccin. Los programas no tienen acceso directo al registro IP, pero existen ciertas instrucciones, tales como JMP y CALL, que cambian indirectamente el contenido de este registro o los salvan y restauran en o de la pila. Los registros apuntadores de la pila, llamados el apuntador de la pila (SP) y el apuntador base (BP), proporcionan desplazamientos en el segmento de pila. SP da la localizacin del tope actual de la pila y es anlogo al IP. BP es usado para tomar una "instantnea" de la localizacin del tope actual de la pila, para as posteriormente saber exactamente dnde se localiza en la pila cierta informacin. BP es particularmente importante para rutinas de interfase entre lenguajes de alto nivel y lenguaje ensamblador. Los registros ndice, llamados el ndice fuente (SI) y el ndice destino (DI), son registros de desplazamiento especializados. Tpicamente, SI y DI son usados en conjuncin con los registros de segmento DS y ES. En operaciones de cadena, por ejemplo, deber usarse DS:SI para apuntar a la direccin de la cadena fuente y ES:DI para apuntar a la cadena destino. Tambin, pueden usarse con otros registros (AX, BX, CX o DX) o un desplazamiento de instruccin, para proporcionar el desplazamiento relativo del inicio de un campo de datos, dentro del segmento de datos. Los registros SI y DI, entonces, proporcionan desplazamientos relativos dentro del campo de datos. El registro de banderas El registro de banderas, mostrado en la Figura 1.3, es realmente una coleccin de bits de control individual conocidos como banderas o flags. Las banderas estn disponibles en la forma de un registro para que puedan ser salvados y restaurados como un conjunto coordinado o inspeccionados como datos ordinarios. Sin embargo, normalmente las banderas son puestas y probadas como elementos independientes -no como un conjunto-, utilizando instrucciones especficas a cada bandera.

La arquitectura de la familia 80x86

Existen 9 banderas de 1 bit en el registro de banderas de 16 bits, lo que deja 7 bits sin uso. Las banderas pueden dividirse lgicamente en dos grupos: seis banderas de estado, que son puestas para registrar la informacin de estado del procesador (usualmente indicando qu sucedi con una comparacin u operacin aritmtica), y tres banderas de control, que dirigen algunas de las instrucciones del 8086. Las Tablas 1.1 y 1.2 muestran la divisin de las 9 banderas de 1 bit.

Figura 3. El registro de banderas del 8086

Cdigo CF OF

Nombre Bandera de acarreo Bandera de desborde Bandera de cero Bandera de signo Bandera de paridad Bandera de acarreo auxiliar

Uso Es puesta (a uno) cuando una operacin genera un acarreo a o un prstamo de un operando destino Es puesta (a uno) si el resultado de un operacin es demasiado grande o pequeo para ajustarse en el operando destino Es puesta (a uno) si el resultado de una operacin es cero, o el de una comparacin es igual Igual al bit de mayor orden del resultado de una operacin (0 es positivo, 1 es negativo) Es puesta (a uno) si los de orden bajo del resultado de un operacin contiene un nmero par de bits 1 Es puesto (a uno) si una operacin genera un acarreo a o un prstamo de los 4 bits de orden bajo de un operando. Indica un ajuste necesitado en las operaciones aritmticas en decimal codificado en binario (BCD)

ZF SF PF AF

Tabla 1.1. Las seis banderas de estado en el registro bandera del 8088.

La arquitectura de la familia 80x86

Cdigo DF

Nombre Bandera de direccin

Uso Puede ser puesta a uno para hacer las que las operaciones de cadena se procesen de direcciones altas de memoria a direcciones bajas. O pueden ser aclaradas a cero para hacer que las operaciones de cadena se procesen de direcciones bajas de memoria a direcciones altas Si est puesta a uno las interrupciones sern reconocidas y atendidas conforme son recibidas. El bit puede ser aclarado a cero temporalmente para apagar el procesamiento de interrupciones Si est puesta a uno, el procesador genera una interrupcin de paso simple despus de ejecutar cada instruccin de un programa. Un programa depurador puede utilizar esta caracterstica para ejecutar un programa instruccin por instruccin

IF

Bandera de interrupcin

TF

Bandera de trampa

Tabla 1.2. Las tres banderas de control en el registro bandera del 8088.

1.2.3. El concepto de bus


Las computadoras basadas en procesadores de la familia 80x86 enlazan toda su circuitera de control interna en un diseo de circuito conocido como bus. Un bus es simplemente un camino compartido en la tarjeta principal en el que todas las partes controladoras de la computadora estn conectadas. Cuando los datos son pasados de un componente a otro viajan a lo largo de este camino comn para alcanzar su destino. Cada chip de control y cada byte de memoria en la PC estn conectados directa o indirectamente al bus. Cuando un nuevo componente es conectado a una de las ranuras de expansin, se est conectando directamente al bus, y convirtindolo en un socio en la operacin de la unidad entera. Siempre que una celda de memoria o puerto es usado como un sitio de almacenamiento, su localizacin es marcada por una direccin que es nica que lo identifica. Cuando un dato est listo para ser transferido, su direccin destino se transmite primero a lo largo del bus de direcciones; los datos le siguen entonces a lo largo del bus de datos. De esta manera, el bus transporta ms que datos. Acarrea informacin de potencia y control, tal como seales de temporizacin (del reloj del sistema) y seales de interrupcin, como tambin las direcciones de las miles de celdas de memoria y los diferentes dispositivos adheridos al bus. Para acomodar estas cuatro diferentes funciones, el bus se divide en cuatro partes: las lneas de potencia, el bus de control, el bus de direcciones y el bus de datos. El Bus de direcciones El bus de direcciones en la familia estndar de PC usa 20 lneas de seal para transmitir las direcciones de las celdas de memoria y los dispositivos adheridos al bus. Puesto que hay dos valores posibles (0 y 1) que pueden viajar a lo largo de cada una de las 20 lneas de direccin, las computadoras PC estndar son capaces de especificar 220 direcciones. Esta cantidad es mayor a un milln de posibles direcciones (espacio de direcciones de 1 Megabyte). La AT utiliza 24 lneas de direccin, permitiendo especificar 224 o ms de 16 millones de direcciones (espacio de direcciones de 16 Megabytes). El Bus de datos El bus de datos trabaja en conjuncin con el bus de direcciones para acarrear datos a lo largo de la computadora. Los sistemas de PC basados en el 8088 usan un bus de datos que tiene 8 lneas de seal, 7

La arquitectura de la familia 80x86

cada una de ellas transporta un bit simple. Estos significa que los datos son transmitidos a travs del bus de 8 lneas en unidades de 8 bits (1 byte). Los microprocesadores 8086 y 80286 de la AT usa un bus de datos de 16 bits, y por lo tanto transportan datos en unidades de 16 bits (1 palabra). El 8088, siendo un microprocesador de 16 bits, puede trabajar con 16 bits de datos a la vez, tal como lo hacen sus homlogos, el 8086 y el 80286. Aunque el 8088 puede trabajar internamente con nmeros de 16 bits, slo puede pasar 8 bits de datos a la vez cuando est trabajando con la circuitera a su alrededor, debido al tamao de su bus de datos. El bus de datos de 16 bits del 80286 le ayuda a mover los datos en su alrededor ms eficientemente que el 8088. El Bus de control Consiste de varias seales discretas que incluyen lectura a memoria, escritura a memoria, lectura de entrada/salida, escritura de entrada/salida, peticin de interrupcin (8 niveles).

1.2.4. Memoria principal


El nmero de chips de memoria que fsicamente existen dentro de la computadora determina la cantidad de memoria que podemos usar para programas y datos. Aunque esto puede variar de una computadora a otra, la PC estndar usualmente viene con alrededor de 40Kb de memoria de slo lectura (ROM) -con espacio para ms- y 640 1024Kb de memoria de acceso aleatorio (RAM). Sin embargo, es posible agregar tarjetas de memoria de diferentes capacidades mediante las ranuras de expansin de la PC. Para la computadora los chips de memoria no son ms que unos cuantos miles de celdas de almacenamiento de 8 bits (1 byte), cada una de ellas con una direccin nica. Los programadores deben pensar en la memoria de la misma manera -no en trminos de cunta memoria fsica existe, sino en trminos de cunta memoria direccionable se tiene. El 8086 puede direccionar hasta 1,024Kb, o exactamente 1,048,576 bytes de memoria. En otras palabras, este es el mximo nmero de direcciones, y por lo tanto el mximo nmero de bytes individuales de informacin a que se puede hacer referencia. Cada byte es referenciado por una direccin numrica de 20 bits. En el esquema de memoria del 8086, las direcciones son de 20 bits de "ancho" debido a que deben viajar a travs de un bus de direcciones de 20 bits. A partir de este momento se usar la notacin hexadecimal en vez de la notacin binaria para la determinacin de las direcciones de memoria, lo que ocasionar la traduccin de direcciones de 20 bits a sus equivalentes de 5 dgitos hexadecimales. Esto permitir manejar valores de direcciones del rango de 00000h a FFFFFh (0 a 1,048,576 en notacin decimal). El 8086 es un microprocesador de 16 bits que no puede trabajar directamente con nmeros mayores de 16 bits, siendo el mayor valor decimal manejable 65,535 o 64 Kb. Tericamente, esto significa que el 8086 nicamente es capaz de accesar 64 Kb direcciones de memoria, siendo que verdaderamente, puede accesar mucho ms que esa cantidad -1,024 Kb para ser exactos. Esto gracias al esquema de direccionamiento de 20 bits usado con el 8086, que expande el rango completo de localizaciones de memoria que el microprocesador puede trabajar de 216 (65,535) a 220 (1,048,576). Sin embargo, el 8086 est todava limitado por su capacidad de procesamiento de 16 bits. Para accesar las direcciones de 20 bits, debe hacer uso de un mtodo de direccionamiento que se ajuste al formato interno de 16 bits. Cmo se almacenan los datos en memoria Mientras la memoria de la PC es direccionada en unidades individuales de 8 bytes, muchas operaciones involucran palabras de 16 bits. En memoria, una palabra de 16 bits se almacena en dos bytes adyacentes de 8 bits. El bytes menos significativo de la palabra es almacenado en la localizacin de memoria inferior y el byte ms significativo se almacena en la localizacin de memoria superior. Desde 8

La arquitectura de la familia 80x86

algunos puntos de vista, almacenar una palabra de esta forma es opuesto a lo que se espera. Debido a la apariencia hacia atrs (backward) de este esquema de almacenamiento, es extravagantemente llamado almacenamiento "back-words" (almacenamiento de palabras al reves, traduccin literal). Vase la Figura 1.4.

Figura 1.4. Almacenamiento Backwords, de datos en memoria

Si se trabaja con bytes y palabras en memoria, deber tenerse cuidado para no confundirse con el almacenamiento back-words. La fuente de la confusin tiene que ver generalmente con la manera de escribir los datos. Por ejemplo, si se escribe un valor de palabra en hexadecimal, se acostumbra a escribir algo como esto: ABCDh. El orden de significancia es el mismo que se utiliza cuando se escribe un nmero decimal: el dgito ms significativo se escribe primero. Pero cuando se escribe una palabra tal y como se almacena en memoria, debe escribirse primero la localizacin de la direccin inferior. As, en memoria, se escribe el nmero hexadecimal ABCDh como CDABh, con los bytes cambiados.

La arquitectura de la familia 80x86

Figura 1.5. Arquitectura segmentada de memoria.

Segmentacin de direcciones de memoria El 8086 divide el espacio direccionable de memoria en un nmero arbitario de segmentos, cada uno conteniendo no ms de 64K bytes (Fig. 1.5). Cada segmento inicia en una localizacin que es divisible por 16 bytes, conocida como su direccin de segmento o prrafo de segmento. Para accesar bytes individuales o palabras, se utiliza una direccin adicional llamada una direccin de desplazamiento que apunta a una localizacin exacta de byte dentro del segmento de 64K designado por el prrafo de segmento. Debido a que las direcciones de desplazamiento son medidas siempre en relacin al inicio del prrafo de segmento, tambin son conocidas como direcciones relativas o desplazamientos relativos. Las direcciones son creadas y manipuladas combinando un prrafo de segmento de 16 bits y un desplazamiento relativo de 16 bits. El prrafo de segmento es desplazado hacia la izquierda 4 bits y sumado al desplazamiento relativo, para producir una direccin completa de 20 bits, como se muestra en la Figura 1.6. Juntas, las dos palabras de 16 bits son usualmente denominadas direccin segmentada; tambin son conocidas como vector, particularmente cuando se hace referencias a interrupciones.

10

La arquitectura de la familia 80x86

Cuando se escribe una direccin de 20 bits dividida en sus partes de segmento y desplazamiento relativo, se utiliza la notacin 0000:0000, con el segmento en el lado izquierdo del signo de dos puntos (:) y el desplazamiento relativo en el lado derecho. Por ejemplo, una direccin de 20 bits escrita como FFE6E podra escribirse como FFE4:002E en notacin segmentada. La figura 1.7 muestra que es posible expresar una direccin simple de 20 bits en una amplia variedad de formas usando notacin segmentada, dependiendo de qu segmento de prrafo se elija.

Figura 1.6. Conversin de direcciones segmentadas a direcciones fsicas

Figura 1.7. Mltiples direcciones segmentadas diferentes para la misma direccin de memoria.

La pila Los procesadores de la familia 80x86 utilizan una estructura llamada pila para seguir la pista de la informacin durante las llamadas a funciones y otras operaciones. El procesador pone los registros en la pila siempre que una subrutina es llamada (una operacin PUSH) y los toma de ella (una operacin POP) al retornar de la subrutina. La pila obtiene su nombre de una analoga con una pila de platos en una cafetera: los nuevos datos son agregados (con una operacin PUSH) a la pila, hacindola crecer. Cuando algo es removido (con una operacin POP) el primer elemento en salir es el ltimo elemento agregado a la pila. Este tipo de mecanismo es conocido como El Primero en Entrar es el Ultimo en Salir (LIFO, por sus siglas en ingls). As, en el momento de "sacar" (POP) un dato de la pila, se est tomando el dato que est en el tope actual de la misma. Los programadores usan la pila para almacenar datos intermedios en clculos o para pasar valores (parmetros) a las subrutinas. Los lenguajes de programacin de alto nivel hacen un uso extensivo de la pila para este ltimo propsito. La pila siempre reside en el Segmento de Pila, por lo que el registro SS siempre es usado durante las referencias a la pila. El registro apuntador de la pila, SP, es usado implcitamente en todas las operaciones

11

La arquitectura de la familia 80x86

de la pila como una direccin de memoria. La operacin PUSH decrementa el contenido de SP por dos y almacena su operando en la direccin de memoria especificada por SP. La operacin POP toma los datos de la direccin de memoria especificada por SP para ponerlos en su operando, y despus incrementa el contenido de SP por dos (Figura 1.8). Estos efectos sobre el registro SP estn interconstruidos en los microprocesadores y no pueden ser cambiados. El efecto prctico es que SP inicialmente debe apuntar a la parte superior del espacio de memoria de la pila, en lugar de apuntar a la parte inferior como es de esperarse. Es importante notar que las operaciones PUSH y POP siempre transfieren los datos una palabra a la vez, en contraste con la instruccin MOV, que puede mover un byte o palabra. Cualquier parte de un programa puede crear un nuevo espacio para pila en un momento dado, pero esto no es muy usualmente hecho. Normalmente cuando un programa se ejecuta, una pila simple es creada para l y esa pila es usada a lo largo de la operacin del programa --por el programa mismo, por sus subrutinas y por cualquiera de los servicios del DOS y el BIOS que son invocados durante la ejecucin del programa. Cuando no se ejecuta programa alguno, el DOS utiliza su propia pila privada.

Figura 1.8. Operaciones de la pila

No existe una manera simple de estimar el tamao de una pila que necesita un programa, y el diseo del 8088 no proporciona forma automtica alguna de detectar cundo se ha agotado el espacio de la pila o si sta es muy pequea. Es comn para los lenguajes de programacin usar automticamente un tamao de pila de 512 a 2K bytes, a menos que otra cantidad sea especificada. Puede asumirse con seguridad que este tamao de pila es suficiente, siempre y cuando no se tengan razones especiales para requerir ms espacio.

12

La arquitectura de la familia 80x86

1.2.5. Cmo se comunica la familia 8086


Puertos El 8086 se comunica con y controla muchas partes de la computadora mediante el uso de los puertos de entrada y salida (E/S). Los puertos de E/S son puertas a travs de las cuales pasa la informacin cuando viaja hacia o desde los dispositivos de E/S, tal como el teclado o la impresora. Cada puerto est identificado por un nmero de puerto de 16 bits, dentro del rango de 0 a 65,535. La UCP enva los datos o la informacin de control a un puerto en particular especificando el nmero del puerto, y ste responde pasando los datos o la informacin de estado de regreso a la UCP. Como en el acceso de memoria, la UCP usa los buses de direcciones y datos como canales de comunicacin con los puertos. Para accesar un puerto, primero la UCP enva una seal en el bus de control que notifica a todos los dispositivos de E/S que la direccin en el bus es la de un puerto y despus enva la direccin de un puerto. Entonces el dispositivo con la direccin del puerto equivalente responde. El nmero de puerto direcciona una localizacin de memoria que es parte del dispositivo de E/S pero no es parte de la memoria principal. Se utilizan instrucciones de E/S especiales (OUT e IN)para sealar un acceso a puerto y enviar informacin de regreso, etc. hacia los dispositivos de E/S. Algunos dispositivos de E/S, tales como los controladores de video, hacen que la UCP piensen que son parte de la memoria RAM. Esto es conocido como E/S con mapeo de memoria. Generalmente, los dispositivos con mapeo de memoria son ms fciles de programar debido a que permiten usar las instrucciones de memoria ms flexibles, en lugar de las instrucciones de E/S limitadas e inflexibles del conjunto de instrucciones del 8088. El uso de puertos especficos est determinado por los diseadores de hardware. Interrupciones Siempre que un dispositivo de hardware o un programa necesita la asistencia de la UCP, enva una seal o instruccin llamada una interrupcin al microprocesador, identificando la tarea particular que desea se realice. Cuando el microprocesador recibe la seal de interrupcin, generalmente detiene todas las dems actividades y activa una subrutina almacenada en memoria, llamada un manejador de interrupciones o rutina de servicio de interrupcin, que corresponde a ese nmero de interrupcin en particular. Despus de que el manejador de interrupciones ha finalizado su trabajo, las actividades de la computadora se reanudan en el lugar dnde estaban cuando ocurri la interrupcin. Hay tres categoras principales de interrupciones. Primero, estn las interrupciones generadas por la circuitera de la computadora en respuesta a algn evento, tal como presionar una tecla del teclado. Estas interrupciones son manejadas por el chip controlador de interrupciones (8259), que les asigna una prioridad en el orden de importancia antes de enviarlas a la UCP y son conocidas como interrupciones de hardware (o mascarables). Segundo, estn las interrupciones que son generadas por la UCP como producto de algn resultado inusual de programas, tal como la divisin por cero. Estas interrupciones son denominadas interrupciones internas. Y tercero, existen las interrupciones generadas deliberadamente por los programas como una manera de invocar a subrutinas distantes almacenadas en RAM o ROM. Estas interrupciones, tambin llamadas interrupciones de software, son usualmente generadas para lograr un servicio del BIOS o del sistema operativo. En adicin a estas interrupciones, existe tambin un tipo especial de interrupcin, llamada interrupcin no mascarable (NMI, por sus iniciales en ingls), que es usada para demandar atencin inmediata de la UCP. A menudo sealan una emergencia, como un desplome en el voltaje o la memoria,

13

La arquitectura de la familia 80x86

un error de paridad en memoria, etc. Cuando una NMI es enviada, se le da alta prioridad y la UCP la atiende antes que todas las otras interrupciones. Cuando una interrupcin se genera, el emisor de la interrupcin no necesita conocer la direccin de memoria del manejador de interrupcin requerido; nicamente necesita conocer el nmero de la interrupcin. El nmero apunta a la tabla almacenada en las localizaciones ms bajas de memoria, que contienen las direcciones segmentadas de la subrutina de servicio de la interrupcin. La direccin del manejador de interrupcin es conocida como vector de interrupcin, y la tabla es llamada tabla de vectores de interrupcin (Figura 1.9). La tabla de vectores normalmente es supervisada por el BIOS y el DOS. Las interrupciones salvan automticamente los valores actuales del cdigo de segmento (CS) y el apuntador de instruccin (IP) en la pila, para la computadora pueda retornar al lugar donde estaba trabajando cuando la interrupcin ocurri. Adems, el proceso de interrupcin salva el registro de banderas en la pila y aclara la bandera de interrupciones (IF), previniendo temporalmente la existencia de interrupciones adicionales. Vase la Figura 1.10.

Figura 1.9. La tabla de vectores de interrupcin.

14

La arquitectura de la familia 80x86

Figura 1.10. Mecanismo de guardar el estado del procesador durante la atencin a una interrupcin.

1.3. El Software
Encima de la mquina fsica, el software proporcionado con la PC construye otra capa de la mquina virtual. Este software inicia con el BIOS, que forma una vista estndar de la mquina que intenta ocultar los aspectos especficos del hardware instalado. Arriba del BIOS, el DOS construye la mquina con la que estamos familiarizados (en trminos de archivos y directorios). Los manejadores de dispositivos permiten que el DOS se comunique con nuevos dispositivos no estndares en el diseo original de la PC.

1.3.1. El Sistema Bsico de Entrada/Salida (BIOS).


El primer nivel de software en la mquina virtual es el BIOS (Basic Input/Output System, Sistema Bsico de Entrada/Salida). El BIOS consiste de un conjunto de programas del 8088 contenido en Memoria de Slo Lectura (ROM) que implementa las funciones bsicas de la mquina. Muchas descripciones tambin incluyen al software del Sistema de E/S como parte del BIOS. Este software, cargado de disco, extiende las funciones del BIOS para que sea posible manejar todos los requerimientos de Entrada/Salida. El propsito del BIOS es aislar a los niveles superiores de software de los posibles cambios de hardware en la computadora; el del Sistema de E/S es resguardar la interfase entre el BIOS y el DOS mismo. Juntos, el BIOS y el Sistema de E/S proporcionan un conjunto definido de servicios que son la base de los niveles superiores de software. Cada fabricante de computadora proporciona el BIOS, y adeca el Sistema de E/S, para sus mquinas. Microsoft proporciona un mdulo llamado SYSINIT que administra la inicializacin del sistema y la carga del DOS. La combinacin del BIOS y el Sistema de E/S debe ajustarse a ciertas especificaciones para permitir al software de niveles superiores funcionar apropiadamente. Por ejemplo, el kernel (ncleo) del DOS de Microsoft utiliza a los servicios del BIOS para implementar muchas de sus propias funciones. Un secreto de la programacin exitosa para la familia de computadoras PC o compatibles yace en el uso adecuado del software que est interconstruido en la mquina: los servicios del ROM-BIOS (Sistema Bsico de Entrada Salida en ROM). Conceptualmente, los servicios del ROM-BIOS se encuentran entre el hardware y los lenguajes de alto nivel (incluyendo al sistema operativo). Trabajan directamente con el hardware de la computadora y los dispositivos perifricos, realizando algunas de la tareas ms 15

La arquitectura de la familia 80x86

importantes, como leer y escribir bytes de datos individuales a la pantalla de video o al disco. Los servicios de los lenguajes de programacin y del sistema operativo por lo general se construyen a partir de estas funciones bsicas. De la misma manera, un programador puede mejorar sus programas haciendo uso directo del ROM-BIOS y, por lo tanto, ganando acceso a un conjunto de herramientas extremadamente poderoso. Los servicios del ROM-BIOS se agrupan de acuerdo a los dispositivos de hardware que soportan, as los servicios de video, los servicios de disco y los servicios del teclado pueden revisarse separadamente. La filosofa del BIOS Todos los servicios del ROM-BIOS son invocados a travs de interrupciones. Las instrucciones de interrupcin hacen referencia a una localizacin particular en la tabla de vectores de interrupcin, en memoria baja, que contiene un vector de interrupcin: la direccin de la rutina de servicio almacenada en ROM. Este diseo hace posible, para cualquier programa, requerir un servicio sin conocer la direccin de memoria especfica de la rutina de servicios del ROM-BIOS. Esto, tambin permite que los servicios del BIOS sean cambiados, expandidos o adaptados sin afectar los programas que usan los servicios. Los servicios del ROM-BIOS podran ser supervisados por una interrupcin maestra, sin embargo estn divididos en categoras subjetivas, y cada categora tiene su propio controlador de interrupciones. El beneficio primario de este diseo es que permite a cada manejador de interrupciones ser reemplazado con una cantidad mnima de perturbaciones. Por ejemplo, si un fabricante de hardware crea un dispositivo de video, una impresora o cualquier otro dispositivo que sea radicalmente diferente y que requiera un rutina del BIOS completamente diferente para operarlo, el fabricante deber proporcionar este nuevo BIOS junto con el hardware. El nuevo programa del BIOS deber ser almacenado en RAM en vez de ROM y deber reemplazar slo aquella parte del ROM-BIOS que fue usada con el anterior hardware. Los servicios del ROM-BIOS El ROM-BIOS cuenta con doce servicios de interrupcin (tabla xxx) que se dividen en cinco grupos: seis de las doce interrupciones sirven a dispositivos perifricos especficos; dos reportan el equipo de la computadora; un servicio trabaja la hora y la fecha; otro realiza la operacin de imprimir la pantalla (la accin de oprimir la tecla PrtScr); y finalmente, dos interrupciones cambian la computadora a otra estado, activando el ROM-BASIC y la rutina de inicializacin del sistema. La mayora de las interrupciones ofrecen subservicios que realizan tareas especficas al dispositivo. As, la interrupcin 16 (hex 10) de servicios de video tiene diecisiete subservicios que realizan desde la inicializacin del modo de video hasta la modificacin del tamao del cursor. Un subservicio de una interrupcin es invocado llamando a la interrupcin gobernante y especificando el nmero del subservicio en el registro AH. Caractersticas de operacin de los servicios del BIOS Los servicios del ROM-BIOS usan convenciones de llamadas comunes que proporcionan consistencia en el uso de registro, banderas, la pila y memoria. El registro de segmento de cdigo (CS) automticamente es salvado, cargado y restaurado como parte del proceso de interrupcin. Consecuentemente, el programador no debe preocuparse por el registro CS de su programa. Los registro DS y ES son preservados por las rutinas de servicio del ROM-BIOS, excepto en los pocos casos donde son utilizadas explcitamente. El registro de segmento de pila (SS) permanece sin cambios y los servicios del ROM-BIOS se basan en la misma pila utilizada por los programas.

16

La arquitectura de la familia 80x86

Relacionado con el registro del segmento de cdigo, el apuntador de instrucciones (IP) es preservado por el mismo mecanismo que preserva el segmento de cdigo. Adems, el apuntador de la pila (SP) se preserva debido a que todos los servicios del ROM-BIOS dejan limpia la pila, sacando (POPping) todo lo que se haya metido (PUSHed) durante la ejecucin de la rutina de servicio. Como es usual, los registros de propsito general, de AX a DX, y los registros ndice, SI y DI, son considerados de libre uso. La regla estndar de no esperar que el contenido de estos registros sean mantenidos cuando se pasa el control a otra rutina, se aplica tambin a los servicios del ROM-BIOS. Por lo general, cuando un resultado simple es retornado de una subrutina, se deja en el registro AX; esto se aplica al ROM-BIOS tambin.
Interrupcin Decimal Hexadecimal Servicios de dispositivos perifricos 16 10 19 13 20 14 21 15 22 16 23 17 Servicios de componentes de equipo 17 11 18 12 Servicio Hora/Fecha 26 1A Servicio Print-Screen 5 5 Servicios especiales 24 18 24 19 Uso Servicios de despliegue de video Servicios de disco flexible Servicios de comunicaciones Servicios de cinta de cassette Servicios de teclado estndar Servicios de impresora Servicio de lista de equipo Servicio de tamao de memoria Servicios de hora y fecha Servicio de Imprimir Pantalla Activa lenguaje ROM-BASIC Activa rutina de inicializacin del sistema

Las diferentes banderas del registro de banderas (FLAGS) son modificadas por las rutinas del ROMBIOS. Por tanto, no deber esperarse que sean preservadas. En algunos servicios las banderas de acarreo (CF) y de cero (ZF) son usadas para sealar el xito o fracaso general de una operacin requerida.

1.3.2. El Sistema Operativo de Disco (DOS)


El DOS es un programa de control que administra los recursos del sistema (UCP, memoria, almacenamiento secundario, etc.). Tambin proporciona el lenguaje de comandos con el que se puede controlar fcilmente el accionar de la computadora. Microsoft proporciona el ncleo del DOS como un programa propietario basado en los servicios estndares del BIOS. El ncleo del DOS suministra servicios independientes del hardware que pueden ser utilizados por los programas de aplicacin en una gran variedad de sistemas. Los servicios del DOS pueden ser divididos arbitrariamente en las siguientes categoras: E/S de caracteres. Operaciones de directorio. Control de disco. Localizacin dinmica de memoria.

17

La arquitectura de la familia 80x86

Manejo de errores. Operaciones con archivos. Miscelnea de funciones del sistema. Funciones de red. Iniciacin y terminacin de programas.

Pueden accesarse los servicios del DOS de 2 maneras. Algunos servicios, los ms importantes desde el punto de vista del programador, son accesados directamente utilizando interrupciones de software; otros, los usados por los usuarios finales, son accesados mediante el procesador de comandos (generalmente caracterizado por el programa COMMAND.COM). El trmino servicios del DOS define un conjunto de operaciones que el sistema operativo proporciona para usar en nuestros programas. En la propia terminologa del DOS, estos servicios se dividen en dos categoras: interrupciones del DOS y llamadas a funciones del DOS. Las interrupciones del DOS son invocadas por cdigos de interrupcin individuales mediante la instruccin INT. Las llamadas a funciones del DOS, por otra parte, son invocadas de la misma manera que los servicios del ROM-BIOS: a travs de una interrupcin coordinadora, la interrupcin 33 (hex 21). Como con los servicios del ROM-BIOS, las funciones individuales son seleccionadas mediante el registro AH. Existen nueve servicios de interrupcin listados en la tabla xxx. Cinco de ellos, las interrupciones 32, 37 a 39 y 47 (hex 20, 25 a 27 y 2F), son verdaderos servicios de interrupcin del DOS, cada una teniendo una tarea asociada especficamente definida. Las otras interrupciones tienen usos ms generales. Quiz la ms importante es la interrupcin 33 (hex 21), que es usada para invocar las llamadas a funciones del DOS. Las tres interrupciones restantes 34 a 36 (hex 22 a 24), son usadas para guardar direcciones segmentadas. Nuestros programas pueden establecer estas direcciones (preferentemente usando la llamada a la funcin 37 del DOS) para apuntar a rutinas especiales. Despus, cuando surjan las circunstancias apropiadas, el DOS invocar las rutinas localizadas en estas direcciones mediante estas tres interrupciones de direccin. Las cinco interrupciones principales del DOS De las nueve interrupciones del DOS, cinco son verdaderas interrupciones, significando que tienen programas de manejo de interrupcin interconstruidas asociadas con ellas, cada una realizando una tarea particular. La interrupcin 32 (hex 20): Terminacin del programa La interrupcin 32 es usada para salir de un programa y pasar el control de regreso al DOS. Es importante aclarar que esta interrupcin no cierra ningn archivo cuando termina el programa. Interrupciones 37 y 38 (hex 25 y 26): Lectura y escritura absoluta a disco Las interrupciones 37 y 38 son usadas para leer y escribir sectores especficos del disco, respectivamente. Son los nicos servicios del DOS que ignoran la estructura lgica de un disco y trabajan exclusivamente con sectores individuales, no prestando atencin a la existencia de archivos, directorios de archivo o FAT (tabla de localizacin de archivos). Todos los otros servicios del DOS trabajan dentro del contexto de una estructura lgica del disco. La interrupcin 39 (hex 27): Termina y permanece residente

18

La arquitectura de la familia 80x86

Como la interrupcin 32, la interrupcin 39 termina un programa, pero no lo elimina de la memoria. En su lugar, deja una porcin especificada del programa en memoria (el programa permanece residente), y el registro del DOS de la primera porcin usable de la memoria es cambiado a la direccin de prrafo que sigue inmediatamente despus del programa residente. La informacin de que se hace residente usando la interrupcin 39, convierte al programa en una extensin del DOS, no permitiendo que sea sobreescrito por otros programas. Los programas tpicamente usan este servicio para establecer una nueva rutina de manejo de interrupcin con la intencin de permanecer en efecto inmediatamente. Estas rutinas de manejo de interrupcin generalmente reemplazan a los manejadores de interrupciones originales para cambiar o extender su operacin. La interrupcin 47 (hex 2F): interrupcin de multiplexin A partir de la versin 3.0 del DOS se agreg una nueva interrupcin, numerada como 47 (hex 2F). Esta interrupcin establece una interface comn entre dos procesos. A pesar de que Microsoft e IBM documentan esta interrupcin para uso exclusivo del SPOOLer del DOS, puede ser utilizado por otros programas. Las tres interrupciones del DOS de manejo de circunstancias excepcionales El DOS usa tres interrupciones, 34 a 36 (hex 22 a 24), para manejar tres circunstancias excepcionales: la finalizacin de un programa; la accin de interrumpir (break) la ejecucin de un programa con el teclado estndar (usando las teclas Ctrl-Break o Ctrl-C), y cualquier error crtico (usualmente un error de disco o de otro tipo). Los programadores pueden afectar la accin efectuada en cada una de estas tres circunstancias cambiando el correspondiente vector de interrupcin para que apunte a la operacin que elijan. El DOS guarda una direccin segmentada por omisin para cada uno de estos vectores de interrupcin, que es preservado en el inicio de la operacin de un programa y restaurado despus de que el programa termina. Esto permite que los programadores puedan cambiar libremente estos vectores acorde a sus necesidades sin perturbar la operacin de subsecuentes programas o la operacin del mismo sistema operativo. La interrupcin 34 (hex 22): Direccin de terminacin La direccin asociada con la interrupcin 34 especifica dnde se pasar el control de la computadora cuando el programa termine su ejecucin. Esta direccin tambin est almacenada en el PSP del programa. Normalmente, este servicio es usado para retornar el control al intrprete de comandos del DOS, el COMMAND.COM, cuando un programa termina. La interrupcin 35 (hex 23): Direccin de interrupcin de programa La direccin asociada con la interrupcin 35 apunta a la rutina de manejo de interrupcin que ser invocada siempre que el DOS responda a una accin de interrupcin emitida por el teclado estndar (haciendo uso de las teclas Ctrl-Break o Ctrl-C). La respuesta habitual del DOS a esta circunstancia es terminar la ejecucin del programa. Al cambiar esta rutina de manejo de interrupcin, el programador puede hacer que el DOS efecte cualquier accin deseada, cada vez que se opriman las teclas Ctrl-Break o Ctrl-C, no importando lo compleja o extensa que sea. La interrupcin 36 (hex 24): direccin del manejador de errores crticos

19

La arquitectura de la familia 80x86

La direccin asociada con la interrupcin 36 apunta a la rutina de manejo de interrupcin que es invocada siempre que el DOS detecta un error crtico -una situacin de emergencia que previene la continuacin del programa. La interrupcin coordinadora de llamadas a funciones del DOS La interrupcin 33 coordina las llamadas a las funciones del DOS. Estas funciones se clasifican en funciones tradicionales, las funciones que son universales a todas las versiones del DOS, y funciones extendidas, los nuevos servicios introducidos a partir de la versin 2.0 del DOS. Es importante aclarar que, con cada nueva versin del sistema operativo, el conjunto de servicios extendidos se incrementa con nuevos funciones. Tanto las funciones tradicionales como extendidas son invocadas emitiendo la interrupcin 33 con el nmero de funcin requerida especificado en el registro AH. Los servicios tradicionales del DOS se muestran en la tabla xxx.
Interrupcin Decimal 0 1-12 13-36 37-38 39-41 42-46 38 Hexadecimal 00 01-0C 0D-24 25-26 27-29,2E 2A-2D 26 Grupo Funcin que no maneja dispositivos Dispositivos de E/S de caracteres Funciones de administracin de archivos Funciones que no manejan dispositivos Funciones de administracin de archivos Funciones que no manejan dispositivos Escritura absoluta a disco

La tabla xxx contiene la agrupacin de los servicios extendidos del DOS.


Interrupcin Decimal 47-56 57-59 60-70 71 72-75 76-79 84-87 88-98 Hexadecimal 2F-38 39-38 3C-46 47 48-4B 4C-4F 54-57 58-62 Grupo Grupo de funciones extendidas Funciones de directorio Funciones de administracin de archivos Funciones de directorio Funciones de administracin de memoria Grupo de funciones extendidas Grupo de funciones extendidas Adiciones versin 3.0

Acceso a las funciones del DOS desde Turbo Pascal Los lenguajes de alto nivel ofrecen diferentes maneras de realizar llamadas a las funciones del BIOS y del DOS. Cada lenguaje tiene un mtodo que puede o no parecerse a los de otro lenguaje. En esta seccin se examina la manera en que Turbo Pascal accesa los servicios del BIOS y del DOS. 20

La arquitectura de la familia 80x86

Turbo Pascal tiene un conjunto extenso de servicios que proporcionan acceso a los recursos del sistema y minimizan la necesidad de que los programadores escriban su propio cdigo a nivel del sistema. Las funciones de entrada/salida de archivo y perifricos se ajusta a las necesidades de casi cualquier programador; la mayora de las operaciones comunes de manejo de archivos y subdirectorios (obtener el tamao de un archivo, obtener el directorio actual, cambiar de directorio, crear un directorio, etc.) son completamente soportadas. A partir de la versin 4.0 de Turbo Pascal es posible escribir programas que procesen un grupo de archivos seleccionados mediante la especificacin de nombres de archivos con caracteres comodines. Sin embargo, algunas veces es necesario codificar alguna caracterstica que el lenguaje no proporciona y que es de vital importancia para tu programa. La estructura de datos principal de Turbo Pascal para accesar registros del microprocesador es el registro (record) Registers. La estructura de este registro, que est definida en la unidad Dos de Turbo Pascal a partir de la versin 4.0, es mostrada a continuacin. La versin 3.0 soportaba esta estructura de datos pero deba ser definida por el usuario.
type Registers = record case Integer of 0 : (AX,BX,CX,DX,BP,SI,DI,DS,ES,FLAGS : word); 1 : (AL,AH,BL,BH,CL,CH,DL,DH : byte); end;

Turbo Pascal tiene los siguientes dos procedimientos para generar interrupciones:
procedure MSDos(var Regs : Registers) procedure Intr(IntNo : byte; var Regs : Registers)

MSDOS genera la interrupcin 21h, la interrupcin coordinadora de llamadas a funciones del DOS. INTR puede generar cualquier interrupcin de software, incluyendo la interrupcin 21h (en la versin 3.0,

el primer argumento de INTR era de tipo integer).

1.3.3. Los manejadores de dispositivos


La mayora de los avances en el arte del software comprenden las formas de hacer desaparecer el hardware fundamental. Los lenguajes de alto nivel, por ejemplo, son un avance puesto que no requieren que el programador conozca los registros de la UCP, los modos de direccionar memoria, puertos, etc. Similarmente, los sistemas operativos son una gran mejora respecto a los das en que el programador tena que escribir sus propios manejadores para cada dispositivo que deseaba o necesitaba utilizar. El software del sistema operativo incluye un conjunto de manejadores de dispositivos (los manejadores residentes) que ejecutan al hardware. Cada manejador se ajusta a ciertas especificaciones para implementar su interfase de llamadas al dispositivo para que el DOS pueda operar el hardware sin tener que conocer cmo trabaja ste. Los manejadores de dispositivos instalables permiten agregar al sistema cualquier nuevo equipo, no considerado en su diseo original (MOUSE.SYS hace estos para el mouse y EMM386.EXE para la memoria expandida).

21

You might also like