Sei sulla pagina 1di 36

1

CMOS PROGRAMAS RESIDENTES Y MANEJO DE INTERRUPCIONES


ndice

1. Traer programas residentes tipeados de los textos especializados en algn lenguaje
pequeo portable.(Assembler, Basic, c std, pascal, etc.) ................................................................... 2
1.1. PROGRAMAS RESIDENTES ...................................................................................................... 2
1.2. LOCALIZACIN DE UN PROGRAMA RESIDENTE .............................................................. 3
1.3. EJEMPLOS DE PROGRAMAS RESIDENTES ........................................................................ 3
2. Describa la direccin base del reloj de tiempo real de la PC y realizar un programa para
poder tener acceso a dicho reloj en lectura y escritura. ..................................................................... 7
MOTOROLA MC146818: ........................................................................................................................... 7
REGISTROS DEL MC146818 ................................................................................................................... 8
FUNCIONAMIENTO DE LA ALARMA ................................................................................................ 10
PROGRAMA DE ACCESO ESCRITURA RELOJ DE TIEMPO REAL: .......................................... 12
3. Como podemos programar alarmas de acuerdo al uso del reloj de tiempo real de la PC.
Traer programa de alarmas. ..................................................................................................................... 18
4. Describir las interrupciones por hardware usadas en la PC cuales estn ocupadas y
cuales disponibles. ..................................................................................................................................... 19
5. Describir el procedimiento para acceder a una interrupcin. ................................................. 20
6. Describir las interrupciones por software usadas en la PC cuales estn ocupadas y
cuales disponibles. ..................................................................................................................................... 22
7. Realizar el diseo de un sistema de forma que podamos probar las interrupciones de
ambos tipos. Traer programa probado fuente y compilado ............................................................. 25
7.1. Programa de interrupcin por hardware.............................................................................. 25
7.2. Programa de Interrupcin por software ............................................................................... 26
8. Describir el SETUP de la PC, las opciones de configuracin y los parmetros. ............... 26
Configuracin bsica (Estndar Cmos Setup) ......................................................................................... 28
Opciones de la BIOS (Bios Feature Setup) ............................................................................................... 29
Configuracin avanzada y del chipset ............................................................................................... 31
Administracin de energa ......................................................................................................................... 32
Configuracin de PNP y slots PCI ............................................................................................................ 33
Autoconfiguracin de la BIOS ................................................................................................................... 34
Perifricos integrados ................................................................................................................................. 34
Control por password................................................................................................................................. 35
Autodeteccin de discos duros IDE ........................................................................................................... 35
Formateo de disco duro a bajo nivel ......................................................................................................... 36
Salir de la BIOS ........................................................................................................................................ 36
9. BIBLIOGRAFIA .................................................................................................................................... 36


2

CMOS PROGRAMAS RESIDENTES Y MANEJO DE INTERRUPCIONES

1. Traer programas residentes tipeados de los textos especializados en algn
lenguaje pequeo portable. (Assembler, Basic, c std, pascal, etc.)

1.1. PROGRAMAS RESIDENTES

Un programa residente o TSR es un programa normal y corriente que, tras ser
cargado, permanece parcial o totalmente en memoria al finalizar su ejecucin.
Ello es posible utilizando una funcin especfica del sistema operativo. Los
programas residentes pueden ser activados mediante una combinacin de teclas
o bien actuar con cierta periodicidad, asociados a la interrupcin del temporizador.
Tambin pueden interceptar funciones del DOS o de la BIOS para cambiar o
modificar su funcionamiento. Al final, casi siempre resulta totalmente inevitable
desviar alguna interrupcin hacia una nueva rutina que la gestione, con objeto de
activar el programa residente. Como en casi todos los aspectos de la
programacin, existen unos cuantos principios fundamentales que conviene
respetar:
1. Los programas residentes no deben alterar el funcionamiento normal del resto
del ordenador. Esto significa que deben preservar el estado de todo lo que van a
modificar durante su ejecucin, restaurndolo despus antes de retornar al
programa principal, lo cual no se limita por supuesto a los registros de la CPU,
sino que incluye tambin la pantalla, los discos, el estado de la memoria
expandida y extendida, etc. Cuando se produce la interrupcin que activa el
programa residente, los registros de la CPU pueden tener un valor que hay que
interpretar o bien pueden ser aleatorios. Este ltimo es el caso de la interrupcin
peridica del temporizador: el programa residente slo puede fiarse de CS: IP, los
dems registros debern ser inicializados antes de empezar a operar
(lgicamente, habrn de ser primero preservados para ser restaurados al final).
2. No se pueden invocar libremente desde un programa residente los servicios del
sistema operativo. Si el lector es la primera vez que oye esto, quiz se quede
extraado. Tal vez se pregunte qu sucedera si desde un programa residente se
llama (pongamos por ejemplo, una vez cada segundo) a la funcin de impresin
del DOS para sacar una 'A' por la pantalla. Lo que puede suceder -y acabar
sucediendo, si no a la primera 'A', a la segunda o la tercera- es que el ordenador
se cuelgue. Esto es debido a que el
DOS es un sistema operativo no reentrante, entre otras razones porque conmuta
a una pila propia al ser invocado. Por ello, si se llama a un servicio del DOS
desde un programa residente, es posible que en ese momento el DOS ya
estuviese realizando otra funcin del programa principal y lo que vamos a
conseguir es que se vuelva loco y pierda el control cuando se acabe la tarea
residente (el contenido previo de la pila ha sido destrozado). Para utilizar el DOS
desde un programa residente hay que conocer cmo estn organizadas las pilas
del sistema operativo, as como determinar el estado del DOS para saber si se
puede interrumpir en ese momento o si hay que esperar. Utilizar el DOS es
prcticamente indispensable a la hora de acceder al disco, por lo que ms
adelante en este captulo lo veremos con detenimiento. Para utilizar el DOS hay
que emplear funciones ms o menos secretas del sistema no documentadas por
Microsoft, si bien esto no es peligroso: esta empresa las utiliza y las ha utilizado
3

siempre profusamente en sus propios programas, por lo que resulta ms que
seguro esperar que futuras versiones del DOS sigan soportndolas.
3. La BIOS no es tampoco completamente reentrante. Por fortuna, la BIOS utiliza
la pila del programa que le llama. Por ello, para utilizar funciones de la BIOS
desde un programa residente basta con asegurar que el sistema no est ya
ejecutando una funcin BIOS incompatible (normalmente, una interrupcin 10h en
el caso de las funciones de vdeo o la 13h en las de disco).
4. El hardware puede ser accedido sin limitaciones desde los programas
residentes, si bien el nivel de uso que puede hacerse est limitado por el sentido
comn (puede haber problemas, por ejemplo, si un programa residente cambia la
posicin del cabezal de un disquete cuando el programa principal estaba
ejecutando una funcin del DOS o la BIOS para acceder al disquete).
5. Los programas residentes tienen una causa que provoca su activacin. Si
cuando ya estn activos, se vuelve a reproducir la causa, estamos ante un
problema de reentrada que compete exclusivamente al programador. Por lo
general, se suele denegar una demanda de activacin cuando el programa
residente ya estaba activo (si el programa tiene pila propia esto es adems
obligatorio). Pongamos por caso que se pulsa CTRL-ALT-R para mostrar un reloj
residente en pantalla, qu suceder si se vuelve a pulsar CTRL-ALT-R con el
reloj ya activado? Para solucionar esto, existen dos caminos: uno de ellos es
utilizar una variable que indique que el programa ya est activo. El otro, es utilizar
para desactivar el programa la misma secuencia de teclas que para activarlo.
Lgicamente, los programas que realicen algo peridicamente (pongamos por
caso 18,2 veces por segundo) basta con que se limiten a no pillarse los dedos,
esto es, utilizar menos de 1/18,2 segundos de tiempo de CPU para sus tareas.

1.2. LOCALIZACIN DE UN PROGRAMA RESIDENTE

Un programa residente que ya est instalado en memoria puede volver a ser
cargado desde disco y esto hay que tenerlo en cuenta. Puede que el programa
sea de stos que se cargan una sola vez y carecen de parmetros. En ese caso,
no suceder nada porque sea creada en memoria una nueva copia del mismo: es
problema del usuario. Sin embargo, si una recarga posterior puede provocar un
cuelgue del sistema o, simplemente, el programa tiene opciones y se pretende
modificar los parmetros de la copia ya residente, entonces se hace necesario
que el programa tenga capacidad para buscarse en memoria y encontrarse a s
mismo en el caso de que ya estuviera cargado.

1.3. EJEMPLOS DE PROGRAMAS RESIDENTES

El siguiente programa residente no realiza tarea alguna, tan slo es una
demostracin de la manera general de proceder para crear un programa
residente. En principio, el cdigo de instalacin est colocado al final, con objeto
de no dejarlo residente y economizar memoria. La rutina de instalacin (MAIN) se
encarga de preservar el vector de la interrupcin peridica y desviarlo para que
apunte a la futura rutina residente.
Tambin se instala una rutina de control de la interrupcin 10h. Finalmente, se
libera el espacio de entorno para economizar memoria y se termina residente. El
procedimiento CONTROLA_INT8 puede ser modificado por el lector para que el
programa realice una tarea til cualquiera 18,2 veces por segundo: de la manera
que est, se limita a llamar al anterior vector de la INT 8 y a comprobar que no se
4

est ejecutando ninguna funcin de vdeo de la BIOS (que no se ha interrumpido
la ejecucin de una INT 10h). Esto significa que el lector podr utilizar libremente
los servicios de vdeo de la BIOS, si bien para utilizar por ejemplo los de
disquetes habra que desviar y monitorizar tambin INT 13h; por supuesto
adems que no se puede llamar al DOS en este TSR (no se puede hacer INT
21h directamente desde el cdigo residente). Por cierto, si se fija el lector en la
manera de controlar la INT 10h ver que al final se retorna al programa principal
con IRET: los flags devueltos son los del propio programa que llam y no los de la
INT 10h real. Con la INT 10h se puede hacer esto, ya que los servicios de vdeo
de la BIOS no utilizan el registro de estado para devolver ninguna condicin. Sin
embargo, con otras interrupciones BIOS (ej. 16h) o las del DOS habra que actuar
con ms cuidado para que la rutina de control no altere nada el funcionamiento
normal.
Puede que el lector haya visto antes programas residentes que no toman la
precaucin de monitorizar la interrupcin 10h o la 13h de la BIOS, y tal vez se
pregunte si ello es realmente necesario. La respuesta es tajantemente que s.
Como se ver en el futuro en otro programa de ejemplo, reentrar a la BIOS sin
ms puede provocar conflictos.

demores SEGMENT
ASSUME CS:demores, DS:demores
ORG 100h
inicio:
JMP main
controla_int08 PROC
PUSHF
CALL CS:ant_int08 ; llamar al gestor normal de INT 8
STI
CMP CS:in10,0
JNE fin_int08 ; estamos dentro de INT 10h
;
; Colocar aqu el proceso a ejecutar 18,2 veces/seg.
; que puede invocar funciones de INT 10h
fin_int08:
IRET
controla_int08 ENDP
controla_int10 PROC
INC CS:in10 ; indicar entrada en INT 10h
PUSHF
CALL CS:ant_int10
DEC CS:in10 ; fin de la INT 10h
IRET
controla_int10 ENDP
in10 DB 0 ; mayor de 0 si hay INT 10h
ant_int08 LABEL DWORD
ant_int08_off DW ?
ant_int08_seg DW ?
ant_int10 LABEL DWORD
ant_int10_off DW ?
ant_int10_seg DW ?
; Dejar residente hasta aqu.
main: PUSH ES
MOV AX,3508h
INT 21h ; obtener vector de INT 8
MOV ant_int08_seg,ES
MOV ant_int08_off,BX
5

MOV AX,3510h
INT 21h ; obtener vector de INT 10h
MOV ant_int10_seg,ES
MOV ant_int10_off,BX
POP ES
LEA DX,controla_int08
MOV AX,2508h
INT 21h ; nueva rutina de INT 8
LEA DX,controla_int10
MOV AX,2510h
INT 21h ; nueva rutina de INT 10h
PUSH ES
MOV ES,DS:[2Ch] ; direccin del entorno
MOV AH,49h
INT 21h ; liberar espacio de entorno
3 de 38 12/10/00 19:13
PROGRAMAS RESIDENTES file:///C|/librosVirtuales/UniversoDigital/10.html
POP ES
LEA DX,main ; fin del cdigo residente
ADD DX,15 ; redondeo a prrafo
MOV CL,4
SHR DX,CL ; bytes -> prrafos
MOV AX,3100h ; terminar residente
INT 21h
demores ENDS
END inicio

Este programa emite un sonido en la PC al pulsar una tecla
FIRMA1 equ 2387h
FIRMA2 equ 7A8Dh
codigo segment
assume cs:cdigo
org 100h ;Inicio de programa .COM

inicio: jmp short verif_instalac ;Saltar al codigo de
instalacion.
viejo_int9 label dword
offset_int9 dw 0
segmento_int9 dw 0
Estado db 1 ;1: Habilitado; 0: No
habilitado.
Firma dw FIRMA1,FIRMA2
; Manejador de la interrupcion 9 (teclado)
int9handler: cmp Estado,0 ;Sonido habilitado?
jz ir_a_viejo_INT9 ;Saltar si no es asi.
push ax ;Preservar registros utilizados.
push cx
push dx
mov al,182 ;Generar onda cuadrada en timer
2
out 67,al ;para poder producir sonido.
in al,96 ;Leer el controlador de teclado.
cmp al,128 ;Ver si se apreto o solto una
tecla.
jnc silencio ;Saltar si se solto.
6

add al,al ;Ajustar el codigo de
exploracion:
jns hallar_frec ;cada dos valores se debe
incrementar
sub al,127 ;un semitono.
hallar_frec: mov cl,al ;CX = Cantidad de medios
semitonos
xor ch,ch ; por encima del LA (55 Hz).
mov ax,21690 ;AX = 55 Hz (LA)
ciclo_frec: mov dx,63670 ;DX = Medio semitono.
mul dx ;DX = Siguiente medio semitono.
mov ax,dx ;AX = Siguiente medio semitono.
loop ciclo_frec ;Continuar calculando
frecuencia.
jmp short sonar ;Ir a poner la nota.
silencio: mov ax,40 ;Silencio.
sonar: out 66,al ;Poner la parte baja del
contador.
mov al,ah
out 66,al ;Poner la parte alta del
contador.
in al,97 ;Habilitar salida del parlante.
or al,3
out 97,al
pop dx ;Restaurar registros utilizados.
pop cx
pop ax
ir_a_viejo_INT9:
jmp viejo_int9 ;Ir al viejo manejador de la
;interrupcion del teclado.
;
; Instalacion del TSR.
;
verif_instalac: xor ax,ax ;Apuntar a la tabla de
interrupcion.
mov es,ax
lds bx,es:9*4 ;DS:BX = Puntero al manejador de
la
;interrupcion del teclado.
cmp word ptr [bx-4],FIRMA1 ;Si la firma no coincide,
jne instalar ;instalar el TSR.
cmp word ptr [bx-2],FIRMA2 ;Si la firma no coincide,
jne instalar ;instalar el TSR.
xor ds:Estado,1 ;Cambiar estado: sonido si/no.
push cs
pop ds ;DS = Segmento de codigo.
mov dx,offset sonido_si ;Puntero a texto de sonido
activado.
jnz mostrar_texto
mov dx,offset sonido_no ;Puntero a texto de sonido
desactivado.
mostrar_texto: mov ah,9
int 21h ;Llamar a funcion DOS para
mostrarlo.
in al,97 ;Deshabilitar sonido.
and al,252
out 97,al
7

mov ax,4c00h ;Fin del programa.
int 21h
instalar: mov offset_int9,bx ;Preservar offset vieja
interrupcion 9.
mov segmento_int9,ds ;Preservar segmento vieja int 9.
cli ;Deshabilitar interrupciones.
mov es:9*4,offset int9handler ;Nuevo offset
interrupcion 9.
mov es:9*4+2,cs ;Nuevo segmento interrupcion 9.
sti ;Habilitar interrupciones.
push cs
pop ds ;DS = Segmento de codigo.
mov dx,offset sonido_si ;Mostrar texto de sonido
habilitado.
mov ah,9
int 21h
mov dx,offset verif_instalac ;Instalar TSR.
int 27h
sonido_si db "Sonido activado.",13,10,"$"
sonido_no db "Sonido desactivado.",13,10,"$"
codigo ends
end inicio


2. Describa la direccin base del reloj de tiempo real de la PC y realizar un
programa para poder tener acceso a dicho reloj en lectura y escritura.

Para comprender mejor el problema es necesario entender bsicamente como se
maneja la fecha y hora en las computadoras personales. En general una computadora
personal (PC) tiene dos relojes, uno interno, que llamaremos RTC (real-time clock)
que est en el hardware, y uno externo, reloj del sistema (RSO), que es mantenido
por el sistema operativo (SO). El RTC funciona an cuando la PC est apagada,
mediante una batera interna. Cuando la PC se enciende, el RSO, se inicializa con el
valor del RTC, a travs de funciones del BIOS (Basic Input Output System). El BIOS,
adems de permitir el arranque de la PC, provee interfaces para la comunicacin entre
el sistema operativo y el hardware en forma de varios servicios (ej. obtener fecha/hora,
inicializar fecha/ hora, etc.).

MOTOROLA MC146818:

DESCRIPCIN DEL INTEGRADO.
El MC146818 incorpora un completo reloj con alarma, calendario, interrupcin
peridica programable, generador de onda cuadrada y 64 bytes libres de RAM esttica
de bajo consumo. Los primeros 10 bytes de esta RAM son empleados para gestionar
la fecha y la hora y los 4 siguientes son registros (A, B, C y D); los 50 restantes
quedan a disposicin del usuario.


8















La lnea OSC1 (de entrada) puede conectarse a seales cuadradas de 4.194304 Mhz,
1.048576 Mhz y 32768 Hz. La frecuencia de esta base de tiempos, como se ver, ha
de indicarse en el registro A (bits DV0 a DV2). El chip provee una til salida de reloj en
CKOUT dependiente del nivel de la entrada CKFS, segn la siguiente tabla:


La salida SQW genera una onda cuadrada, cuya frecuencia es programable (til para
alarmas). La lnea -IRQ seencarga de solicitar las interrupciones peridicas si estn
habilitadas. La lnea de entrada -RESET reinicializa el integrado asignando valores por
defecto a ciertos bits de los registros B y C, aunque no afecta a la fecha/hora ni a la
memoria. La entrada PS debe mantenerse a nivel bajo cuando se alimenta el chip
hasta que la tensin se estabilice, ponindose despus en alto; esta entrada est
asociada al bit VRT del registro D que indica si el integrado est en condiciones de
operar. El bus bidireccional de direcciones y datos est multiplexado (lneas
AD0..AD7): en los flancos de bajada de la entrada de validacin de direcciones (lnea
AS) contiene direcciones, y datos en los flancos de subida de la entrada de validacin
de datos (lnea DS). La lnea -R/-W indica si la operacin es de entrada o salida; -CE
permite habilitar el chip o desconectarlo de los buses.

El cuadro de la derecha refleja la estructura de la memoria del MC146818. Los
primeros 14 bytes son empleados para la fecha y hora.

REGISTROS DEL MC146818
REGISTRO A (lectura/escritura, excepto UIP).
Este registro sirve para indicar al integrado qu tipo de reloj lo gobierna, as como
elegir la frecuencia de la interrupcin peridica programable y la de la salida SQW.
Tambin contiene un bit que indica si hay una actualizacin del reloj en curso, lo que
sucede una vez cada segundo, ya que en ese preciso instante no se pueden leer los
registros con objeto de evitar lecturas incorrectas.
9



El bit UIP (Update In Progress), de slo lectura, se pone a 1 mientras se actualizan los
primeros 14 bytes de la memoria y poco tiempo antes de que comience dicha
actualizacin. Antes de acceder a estos bytes, hay que esperar a que el bit UIP se
ponga a cero (si no lo estaba ya): con el bit UIP a 0, es seguro que en un intervalo de
al menos 244 microsegundos no se va a producir ninguna actualizacin, por lo que
hay tiempo suficiente para acceder (sin prisas, pero tampoco con pausas). La
actualizacin dura 248 microsegundos (1984 con relojes de 32768 Hz).

REGISTRO B (lectura/escritura).
En este registro hay bits tiles, entre otros, para controlar la inicializacin de la fecha y
hora, para habilitar o inhibir las diversas interrupciones y para establecer ciertas
caractersticas de operacin.



El bit SET puede ser establecido a 1, con lo que cualquier ciclo de actualizacin de los
primeros 14 bytes de la RAM resulta abortado: de este modo, es factible proceder a
inicializar la fecha y la hora sin el riesgo de que se produzca en medio una
actualizacin. Este bit no se ve afectado por la seal -RESET.

El bit PIE (Periodic Interrupt Enable) sirve para permitir la interrupcin peridica
cuando es puesto a 1; tras una seal -RESET es puesto a 0. El bit AIE (Alarm
Interrupt Enable) ha de estar a 1 para habilitar la interrupcin de alarma; tambin es
puesto a cero tras un -RESET. El bit UIE (Update Interrupt Enable) sirve para habilitar
o inhibir la interrupcin de fin de actualizacin, que se producira tras cada
actualizacin del reloj; la seal -RESET baja el bit UIE. Por ltimo, el bit SQWE
(Square Wave Enable) permite habilitar o inhibir la seal de onda cuadrada de la
salida SQW; tambin es borrado ante una seal -RESET.

El bit DM (Data Mode) permite seleccionar datos en binario (1) o BCD (0) en los bytes
de fecha y hora; la seal -RESET no afecta a este bit. El bit 24/12 sirve para elegir
entre el modo 12 horas del reloj (bit a 0) o el de 24 (bit a 1): en el modo de 12 horas, el
bit ms significativo del byte de la hora estar activo para indicar "PM". Si bit DSE est
activo, el ltimo domingo de abril la hora pasa de 1:59:59 AM a 3:00:00 AM; en el
ltimo domingo de octubre pasa de 1:59:59 AM a 1:00:00 AM (slo la primera vez,
claro) para ajustarse al cambio de hora oficial; este bit no es afectado por -RESET.

REGISTRO C (slo lectura).
Este registro contiene bits que informan de las interrupciones que se producen.
Permite identificar al ordenador qu o cules interrupcin(es) se ha(n) producido.
10



El bit IRQF (Interrupt ReQuest Flag) se activa cuando el bit PF y el PIE (registro B)
estn activos, o bien cuando el bit AF y el AIE (registro B) estn activos, o bien cuando
UF y el bit UIE (registro B) estn activos. Es decir, IRQF se pone en alto cuando es
necesario que se produzca una interrupcin: la lnea -IRQ se encarga de pedirla
entonces. Por su parte: PF (Periodic Flag), AF (Alarm Flag) y UF (Update Flag)
indican si es necesario que se produzca la interrupcin correspondiente. Todos los bits
de este registro son borrados ante una seal -RESET, pero tambin ante una lectura
por software del registro C.

REGISTRO D (slo lectura).
Este registro contiene slo el bit VRT (Valid RAM and Time). Este bit est a cero
cuando la patilla PS est a cero (PS se eleva a 1 cuando la tensin de alimentacin es
correcta). Por software, el bit VRT puede ser puesto a 1 mediante una simple lectura
del registro D (si la patilla PS=1), con objeto de indicar que la fecha y hora
establecidas son correctas; si fallara la alimentacin, al caer la tensin en la patilla PS
este bit pasara de nuevo a cero. VRT no es afectado por -RESET.


FUNCIONAMIENTO DE LA ALARMA
La interrupcin de alarma se produce todos los das cuando llega la hora en que ha
sido programada y el bit que permite esta interrupcin est habilitado. Existe un
mtodo alternativo para programar la alarma, basado en los cdigos indiferentes
almacenables en los bytes de la alarma. Un cdigo indiferente es cualquier valor
comprendido entre 0C0h y 0FFh. Si la hora de alarma es un cdigo indiferente, la
alarma se producir cada hora. Si la hora y minuto de alarma son cdigos indiferentes,
sta se producir cada minuto. Si tanto la hora como el minuto y segundo de la alarma
son cdigos indiferentes, la alarma se producir cada segundo.

EL MC146818 DENTRO DEL ORDENADOR.
El MC146818 es por lo general exclusivo de los AT y PS/2. En muchos ordenadores,
la implementacin fsica se realiza con circuitos totalmente compatibles que incluyen
128 bytes de RAM en lugar de 64. En la RAM que sobra por encima de los primeros
14 bytes se almacenan parmetros de la configuracin del sistema, modificables con
el programa SETUP durante el arranque.

Por defecto, la BIOS inicializa el chip para trabajar con un reloj de 32768 Hz y a un
ritmo de 1024 interrupciones peridicas por segundo (cuando estn habilitadas), al
escribir el valor 26h en el registro A. De la misma manera, el registro B se carga con 2
(modo 24 horas, datos en BCD y sin horario verano/invierno).

El MC146818 est diseado para ser conectado a un bus multiplexado, por lo que la
circuitera de apoyo de los AT se encarga de gestionar la comunicacin con el
microprocesador, estableciendo dos puertos de entrada/salida en las direcciones 70h
11

y 71h. Para leer o escribir cualquier registro de la RAM CMOS, basta con enviar al
puerto 70h el nmero de registro y, a continuacin, leer o escribir del puerto 71h. Entre
los accesos a ambos puertos debe mediar un tiempo mnimo; de lo contrario la
operacin fallar. En particular, las ltimas versiones de los compiladores de Borland
no permiten acceder al reloj de tiempo real en la mayora de las mquinas a travs de
las funciones outportb() e inportb(). La razn es que esas funciones estn en una
librera y es preciso llamarlas con paso de parmetros a travs de la pila, lo que
ralentiza excesivamente el proceso. Desde el lenguaje ensamblador, nunca hay
problemas, aunque como es costumbre es conveniente insertar algn estado de
espera (JMP SHORT $+2) entre dos operaciones E/S consecutivas, precaucin
necesaria en los ordenadores ms antiguos.

A nivel de interrupciones, la salida -IRQ del MC146818 est conectada a IRQ8 (INT
70h) a travs del segundo controlador de interrupciones (vase la documentacin del
mismo).
Desde la interrupcin 1Ah, la BIOS implementa una serie de servicios para acceder al
reloj de tiempo real, incluyendo la posibilidad de programar la alarma (que invoque
una INT 4Ah cuando llegue la hora). Las funciones de retardo de la INT 15h se apoyan
tambin en el reloj de tiempo real.
Conviene tener presente que es de vital importancia acceder a los primeros 14 bytes
de la CMOS slo si el bit UIP del registro A (bit 7) est a cero. Tambin es necesario
poner a 1 el bit SET del registro B (bit 7) antes de modificar dichos bytes,
devolvindolo a 1 despus. No respetar este principio puede provocar la lectura de
fechas u horas incorrectas o una errnea asignacin de valores. Para los dems bytes
de la CMOS no es necesario tomar esta precaucin.

UN MTODO PARA AVERIGUAR LA CONFIGURACIN DEL AT Y PS/2.
Como se dijo antes, los AT y superiores almacenan en los 50 114 ltimos bytes de
RAM libres de la CMOS informacin relativa a la configuracin del sistema. Los bytes
ms importantes y comunes a todas las mquinas se muestran a continuacin.

Byte
0Eh:
Diagnostics Status Byte. El bit 7 indica (si vale 1) que el MC146818 tiene
un dficit de corriente elctrica. El bit 6 indica (si es 1) que el chechsum o
suma de comprobacin de la CMOS ha fallado. El bit 5 indica (si vale 1)
que la configuracin del sistema es incorrecta (no hay al menos una
disquetera presente o el modo de vdeo de la configuracin no coincide con
el detectado en el hardware). El bit 4 es puesto a 1 si el tamao de la
memoria detectado no coincide con el indicado en la configuracin. El bit 3
activo indica que el adaptador o el disco fijo C: fall en la inicializacin,
siendo imposible botar desde l. El bit 2 activo indica que la hora del reloj
es incorrecta. Los bits 1 y 0 estn reservados.
Byte
0Fh:
Shutdown Status Byte. Los bits de este byte son asignados durante la
inicializacin del sistema por parte de la BIOS, informando de su desarrollo
(vase listado de la BIOS).
Byte
10h:
Diskette Drive Type Byte. Los bits 7..4 indican el tipo de la disquetera A y
los bits 3..0 el tipo de la disquetera B. Los valores posibles son 0 (no existe
esa disquetera), 1 (5-360K), 2 (5-1.2M), 3 (3-720K), 4 (3-1.44M) y 5
(3-2.88M en BIOS AMI) 6 (3-2.88M en BIOS IBM).
Byte Reservado.
12

11h:
Byte
12h:
Fixed Disk Type Byte. Los bits 7..4 indican el tipo del primer disco fijo y los
bits 3..0 el tipo del segundo. Existe una tabla definida por IBM cuando lanz
el AT con 14 tipos de disco; ninguno que se vende hoy en dia est en la
tabla, por lo que es frecuente que estos campos estn inicializados con el
valor 1111b ( 0 si no hay disco duro instalado) para indicar simplemente la
presencia de disco duro.
Byte
13h:
Reservado.
Byte
14h:
Equipment Byte. Los bits 7 y 6 indican el nmero de disquetes instalados;
los bits 5 y 4 el tipo de adaptador de vdeo primario (00: EGA/VGA, 01:
CGA-80, 10: CGA-40, 11: MDA); los bits 3 y 2 no se emplean. El bit 1
indica si hay coprocesador aritmtico y el bit 0 est activo para confirmar
que hay disqueteras.
Byte
15h-
16h:
Low and High Base Memory Bytes. El 15h es el bajo y el 16h el alto.
Entre ambos forman una palabra de 16 bits que indica la cantidad de
memoria convencional (tpicamente 640 Kb).
Byte
17h-
18h:
Low and High Memory Expansion Bytes. El 17h es el bajo y el 18h el
alto. Entre ambos forman una palabra de 16 bits que indica la cantidad de
memoria extendida, en Kbytes.
Byte
19h:
Nmero del primer disco duro. Nmero de identificacin que la BIOS
asigna al primer disco duro instalado.
Byte
1Ah-
2Dh:
Reservados.
Byte
2Eh-
2Fh:
Checksum. El 2Eh es el alto y el 2Fh el bajo. Entre ambos forman una
palabra de 16 bytes que constituye el checksum o suma de comprobacin
de los bytes 10h-20h.
Byte
30h-
31h:
Low and High Memory Expansion Bytes. Habitualmente es el mismo
valor que el almacenado en los bytes 17h y 18h; esta variable refleja slo la
memoria extendida ubicada por encima del primer megabyte que detecta la
BIOS en el momento de arrancar.
Byte
32h:
Date Century Byte. Valor BCD del siglo actual-1. Para 1992, por ejemplo,
es 19h.
Byte
33h:
Information Flag. El bit 7 indica si est instalada la vieja opcin de
ampliacin de 128 Kb (hasta los 640 Kb) del IBM AT original: hoy en da
suele estar siempre activo. El bit 6 es empleado por el programa SETUP
para eliminar el mensaje inicial al usuario tras el primer SETUP. Los dems
bits estn reservados.
Byte
34h-
3Fh:
Reservados.

PROGRAMA DE ACCESO ESCRITURA RELOJ DE TIEMPO REAL:

; Programa de reloj residente

13

.MODEL TINY ; .COM
; Se ensambla con TASM RELOJRES
; TLINK RELOJRES /t = COM (ver TLINK para ayuda)

.CODE

PushA Macro
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
PUSH DS
PUSH ES
EndM

POPA Macro
POP ES
POP DS
POP DI
POP SI
POP DX
POP CX
POP BX
POP AX
EndM

ORG 100h
Start: JMP Inicializa

; Variables
Horas DB ?
Minutos DB ?
Segundos DB ?
PMFlag DB 0
DivHi DW 0
DivLo DW 0
ResultHi DW 0
ResultLo DW 0
Actual DB 0
Divisor DB 0
Contador DB 0

LeeReloj Proc Near
; Regresa en DX:AX el valor actual del reloj contador interno
de BIOS.
PUSH ES
MOV AX,40h
MOV ES,AX
MOV DI,6Ch
MOV AX,ES:[DI]
PUSH AX
ADD DI,2
MOV AX,ES:[DI]
POP DX
POP ES
14

RET
LeeReloj EndP

DobleDiv Proc Near
; Hace una divisin de Doble Palabra entre Byte dejando Doble
Palabra
; Rutina para estar orgulloso, fue latosa y est basada en
corrimientos, tal
; como se divide binario a mano.
XOR AX,AX
MOV Actual,AL
MOV ResultLo,AX
MOV ResultHi,AX
MOV CX,33 ; 32 ciclos
Ciclo: MOV AL,Actual
CMP AL,Divisor
PUSHF
JB NoCarry
STC ; Encender el Carry si es mayor o igual
JMP SHORT Rotar
NoCarry: CLC ; Apagar el Carry
Rotar: RCL ResultLo,1
RCL ResultHi,1
POPF
JB ContCiclos
; Si Actual es menor al Divisor, restar Divisor al Actual
SUB AL,Divisor
MOV Actual,AL
ContCiclos:
; Rotar el dividendo
ROL DivLo,1
RCL DivHi,1
; El bit m s significativo entra a Actual
RCL Actual,1
LOOP Ciclo
; En Actual qued el residuo
RET
DobleDiv EndP

; Calcular la hora en base al valor del contador de reloj de BIOS

Calcula2 Proc Near
; Primero multiplicar DX:AX por 5
XCHG AX,DX
PUSH DX
PUSH AX
PUSH DX
PUSH AX
ROL AX,1
RCL DX,1
ROL AX,1
RCL DX,1
POP BX
POP CX
ADD AX,BX
ADC DX,CX
; Ahora, dividir DX:AX entre 91
15

MOV DivHi,DX
MOV DivLo,AX
MOV Divisor,91
CALL DobleDiv
; Calcular el factor de correccin como Ciclos/50269
; Aproximadamente cada 50000 ciclos se adelanta un segundo
; Las pruebas que hice dan resultados entre 50200 y 50300
; Como factor promedio usar 50260
; Con esto el error se reduce a 1 segundo, 1 segundo y medio
; El factor es m s exacto por la noche, mientras que el
; c lculo de Ciclos*5/91 es m s exacto temprano, lo que los
; equilibra bastante.
POP AX
POP DX
MOV CX,50260
DIV CX
MOV BX,AX
; Sacar el resultado de la doble divisin
MOV DX,ResultHi
MOV AX,ResultLo
CLC
SUB AX,BX ; Restar factor de correccin
SBB DX,0
; Dividir entre 60 para obtener minutos y segundos.
MOV CX,60
DIV CX
MOV Segundos,DL
DIV CL
MOV Minutos,AH
MOV Horas,AL
; Establecer la bandera de AM/PM
MOV PMFlag,0
CMP Horas,12
JL FinCalcula
INC PMFlag
CMP Horas,12
JE FinCalcula
SUB Horas,12
FinCalcula:
RET
Calcula2 EndP

; Pintar el valor de dos dgitos en la posicin actual ES:DI
DespByte Proc Near
MOV CL,10
XOR AH,AH
DIV CL
ADD AX,3030h
MOV BL,AH
MOV AH,31 ; Blanco sobre azul
MOV ES:[DI],AX
ADD DI,2
MOV AL,BL
MOV ES:[DI],AX
ADD DI,2
RET
DespByte EndP
16


; Pintar el reloj por acceso directo a memoria
Despliega Proc Near
PUSH ES
MOV AX,0B800h
MOV ES,AX
MOV DI,138 ; Columna 80-11 de ancho=69*2 bytes
c/columna=138
MOV AL,Horas
CALL DespByte
MOV AL,':'
MOV ES:[DI],AX
ADD DI,2
MOV AL,Minutos
CALL DespByte
MOV AL,':'
MOV ES:[DI],AX
ADD DI,2
MOV AL,Segundos
CALL DespByte
MOV AL,' '
MOV ES:[DI],AX
ADD DI,2
MOV AL,'a'
CMP PMFlag,1
JNE ImpAMPM
MOV AL,'p'
ImpAMPM: MOV ES:[DI],AX
ADD DI,2
MOV AL,'m'
MOV ES:[DI],AX
POP ES
RET
Despliega EndP

; Rutina residente!!!
; Podra ser PROC

Inicio: PUSHA ; Guardar todos los registros
PUSHF ; y adems las banderas
CALL LeeReloj
CALL Calcula2
CALL Despliega
Salir: POPF ; Restaurar banderas
POPA ; y registros
IRET ; Terminar rutina de interrupcin; esto solamente
porque es la
; interrupcin 1Ch, que no tiene una funcin predefinida.
Si fuera
; otra, habra que saltar a la rutina que anteriormente
atenda la
; interrupcin

; Parte no residente del programa; debe ponerse al final, para que se
use la
; Interrupcin 27h

17

Inicializa:
; Ajustar DS
PUSH DS
PUSH CS
POP DS
PUSH ES
; Apuntar ES al segmento 0
XOR AX,AX
MOV ES,AX
; Muy importante: Desactivar Interrupciones cuando vamos a ajustar
el vector
CLI
LEA BX,Inicio
MOV AX,CS
; Ajustar el vector de interrupcin del Reloj: en BX el
desplazamiento de la
; rutina que atiende al reloj, en AX el segmento.
MOV ES:[1Ch*4],BX
MOV ES:[1Ch*4+2],AX
STI
; Restaurar ES
POP ES
; DS:DX apuntan al final de la zona que va a quedar residente
LEA DX,Inicializa
INT 27h ; Terminar pero dejar parte residente
END Start


18

3. Como podemos programar alarmas de acuerdo al uso del reloj de tiempo real de
la PC. Traer programa de alarmas.

La interrupcin de alarma se produce cada da cuando llega la hora en que ha sido
programada y el bit que permite esta interrupcin est habilitado. Una forma de
programar la alarma, basado en los cdigos indiferentes almacenables en los bytes de
la alarma; un cdigo indiferente es cualquier valor comprendido entre 0C0h y 0FFh. Si
el valor de la hora de alarma es un cdigo indiferente, la alarma se producir cada
hora. Si el valor de la hora y minuto de alarma son cdigos indiferentes, sta se
producir cada minuto. Si el valor de la hora como el minuto y segundo de la alarma
son cdigos indiferentes, la alarma se producir cada segundo.
Para configurar la alarma tenemos que tener en cuenta las direcciones de la CMOS:



Como vemos entonces almacenando los valores especificados en los bytes 01, 03 y
05 podremos activar las alarmas, pero adems debemos configurar el registro B.

REGISTRO B (lectura/escritura)
En este registro se encuentran los bits para controlar la inicializacin de la fecha y
hora, para habilitar o inhibir las diversas interrupciones y para establecer ciertas
caractersticas de operacin.



El bit PIE (Periodic Interrupt Enable) sirve para permitir la interrupcin peridica
cuando es puesto a 1; tras una seal -RESET es puesto a 0. El bit AIE (Alarm
Interrupt Enable) ha de estar a 1 para habilitar la interrupcin de alarma; tambin es
puesto a cero tras un -RESET. El bit UIE (Update Interrupt Enable) sirve para habilitar
19

o inhibir la interrupcin de fin de actualizacin, que se producira tras cada
actualizacin del reloj. El MC146818 est diseado para ser conectado a un bus
multiplexado, por lo que la circuitera de apoyo se encarga de gestionar la
comunicacin con el microprocesador, estableciendo dos puertos de entrada/salida en
las direcciones 70h y 71h. Para leer o escribir cualquier registro de la RAM CMOS,
basta con enviar al puerto 70h el nmero de registro y a continuacin leer o escribir
del puerto 71h. Entre los accesos a ambos puertos debe mediar un tiempo mnimo; de
lo contrario la operacin fallar.

A nivel de interrupciones, la salida -IRQ del MC146818 est conectada a IRQ8 (INT
70h) a travs del segundo controlador de interrupciones. Desde la interrupcin 1Ah, la
BIOS implementa una serie de servicios para acceder al reloj de tiempo real,
incluyendo la posibilidad de programar la alarma (que invoque una INT 4Ah cuando
llegue la hora). Las funciones de retardo de la INT 15h se apoyan tambin en el reloj
de tiempo real.

Conviene tener presente que es de vital importancia acceder a los primeros 14 bytes
de la CMOS slo si el bit UIP del registro A (bit 7) est a cero. Tambin es necesario
poner a 1 el bit SET del registro B (bit 7) antes de modificar dichos bytes,
devolvindolo a 1 despus. No respetar este principio puede provocar la lectura de
fechas u horas incorrectas o una errnea asignacin de valores. Para los dems bytes
de la CMOS no es necesario tomar esta precaucin.
Otra forma de realizar es con la programacin directa del hardware de la
computadora, estableciendo un flag, dentro de un programa residente que se
encargue de la programacin del timer de la computadora.

4. Describir las interrupciones por hardware usadas en la PC cuales estn
ocupadas y cuales disponibles.

Durante la ejecucin de un programa, el procesador debe interactuar con una serie de
dispositivos de entrada/salida: El teclado, las unidades de disco, los puertos serie y
paralelo, la tarjeta de red, etc.
Normalmente, la velocidad de procesamiento de estos dispositivos es inferior a la del
procesador. As que el procesador tendr que esperar un tiempo para que el
dispositivo se desocupe antes de hacerle una nueva solicitud. Cmo sabe el
procesador que el dispositivo ya est listo para la nueva peticin?
Tambin, algunos dispositivos requieren la atencin del procesador en forma
asncrona, es decir, no en forma peridica. Cmo sabe el procesador que el
dispositivo requiere que se le atienda? Hay dos formas en que el procesador puede
saber si el dispositivo est listo o si el dispositivo requiere atencin:
La primera forma es que el procesador est peridicamente sondeando al dispositivo
en cuestin. A fin de asegurarse de poder atender rpidamente a un dispositivo
cuando se lo solicita, la frecuencia con el que procesador sondea a los dispositivos
debe ser muy alta. Lo anterior produce que el procesador ocupa mucho tiempo
interrogando a los dispositivos y en la mayora de las veces stos no estn listos o
requieren de la atencin del procesador. La segunda forma, una ms eficiente, es
hacer que sea el dispositivo el que le avise al procesador cuando est listo o requiera
atencin, interrumpiendo al procesador. El procesador dejar de hacer lo que est
haciendo para atender al dispositivo para posteriormente regresar a la tarea que
estaba ejecutando antes de ser interrumpido. Los dispositivos utilizan una de las
lneas del procesador para interrumpirlo. A este tipo de interrupcin se le conoce como
20

Interrupcin por Hardware. Para atender a un dispositivo el procesador ejecuta una
rutina especial llamada Rutina de Servicio a Interrupciones. Las rutinas de servicio
a interrupciones, por lo general, se cargan a la memoria RAM como parte del proceso
de iniciacin de la computadora.
Las interrupciones de cada dispositivo estn priorizadas de tal manera que si dos
dispositivos desean interrumpir al procesador al mismo tiempo, slo la de mayor
prioridad interrumpir al procesador.

Estas interrupciones no son enviadas directamente a la UCP, sino que se mandan a
un circuito integrado cuya funcin es exclusivamente manejar este tipo de
interrupciones. El circuito, llamado PIC 8259A, si es controlado por la UCP utilizando
para tal control una serie de vas de comunicacin llamadas puertos.

Lista de interrupciones y su disponibilidad
Nmero Direccin Nombre Propietario
IRQ 00 055F:0000 Salida reloj 0 vmm32
IRQ 01 CE67:08D2 Teclado UMB
IRQ 02 F000:EF6F [Cascada] BIOS
IRQ 03 F000:EF6F COM2 BIOS
IRQ 04 F000:EF6F Ratn BIOS
IRQ 05 F000:EF6F LPT2 BIOS
IRQ 06 CDA4:009A Disquete UMB
IRQ 07 0070:0465 LPT1 DOS
IRQ 08 CDA4:0035 Reloj tiempo real UMB
IRQ 09 F000:ECF3 Reservado BIOS
IRQ 10 F000:EF6F Reservado BIOS
IRQ 11 F000:EF6F Reservado BIOS
IRQ 12 CDA4:00E2 Reservado UMB
IRQ 13 F000:F0FC Coprocesador BIOS
IRQ 14 CDA4:00FA Disco duro UMB
IRQ 15 CDA4:0112 Reservado UMB

5. Describir el procedimiento para acceder a una interrupcin.

Las interrupciones del procesador, hardware y software son invocadas de diferente
manera:
Procesador: Las interrupciones del procesador o
interrupciones lgicas son invocadas por el procesador como consecuencia
de un resultado inusual del programa, tal como un intento de divisin por cero.
Hardware: Las interrupciones de hardware son
invocadas por mecanismos perifricos estos fijan sus respectivas lneas de
peticin de interrupcin (IRQ). Cada vez que una tecla es presionada,
por ejemplo, el teclado genera una interrupcin. Las interrupciones de hardware
son vectoreadas a rutinas de servicio de interrupcin (ISRs) estas generalmente
residen en el BIOS.
Software:
Las interrupciones de software son invocadas a travs de la instruccin INT
del 8086. La mayora de las interrupciones de software
son vectoreadas a (DSRs) localizado en el BIOS, o en programas de aplicacin
Una interrupcin puede ser iniciada especficamente por un proceso en ejecucin
(en cuyo caso se suele denominar trampa (trap), y se dice que est sincronizada
21

con la operacin del proceso) o puede ser causada por algn evento que puede
estar relacionado o no con el proceso en ejecucin (en cuyo caso se dice que es
asncrona con la operacin del proceso).

Los sistemas orientados hacia las interrupciones pueden sobrecargarse. Si ests
llegan con mucha frecuencia, el sistema no ser capaz de atenderlas. En algunos
sistemas orientados hacia el teclado, cada tecla presionada almacena en la memoria
un cdigo de un byte y genera un interrupcin para informar a la UCP que un carcter
est listo para ser procesado. Si la UCP no puede procesar el dato antes de que se
presione la siguiente tecla, se pierde el primer carcter.
A partir del offset 0 del segmento 0 hay una tabla de 256 vectores de interrupcin,
cada uno de 4 bytes de largo (lo que significa que la tabla tiene una longitud de 1KB).
Cada vector est compuesto por dos partes: offset (almacenado en la direccin ms
baja) y segmento (almacenado en la direccin ms alta). Cuando se llama a una
interrupcin (no importa si es por hardware o por software), el procesador ejecuta las
siguientes operaciones:

1. PUSHF (guarda las banderas en el stack)
2. CTF/DI (borra la bandera de Trap y deshabilita interrupciones)
3. CALL FAR [4 * INT#] (salta a nueva CS:IP, almacenando direccin de retorno en
stack)

La expresin 4 * INT# es la forma de calcular la direccin de inicio del vector de
interrupcin a utilizar en el salto. Por ejemplo, el vector de la INT21h estar en la
direccin 84h Al efectuarse el salto, la palabra almacenada en la direccin ms baja
del vector sustituye al contenido del registro IP (que previamente fue salvado en el
stack) y la palabra almacenada en la direccin ms alta sustituye al contenido del
registro CS (tambin salvado en el stack). Por ejemplo:
La instruccin INT 21h es la usada para efectuar llamadas a las funciones del DOS.
Supongamos que en la posicin de memoria 0000:0084 est almacenada la palabra
1A40h y en la direccin 0000:0086 est almacenada la palabra 208Ch. La prxima
instruccin que se ejecute es la que est en la posicin 20C8:1A40 (nuevo CS:IP).
El final de una rutina de interrupcin debe terminarse con la instruccin IRET, que
recupera del stack los valores de CS, IP y Flags.
Notemos que un llamado a interrupcin implica el cambio de estado automtico de la
bandera de habilitacin de interrupciones. En pocas palabras, esto significa que al
producirse una interrupcin, esta bandera inhabilita futuras interrupciones. Como la
instruccin IRET restablece el registro de flags al estado anterior que tenia antes de
producirse la interrupcin, las prximas interrupciones se habilitan en el mismo
momento en que se produce el retorno desde la rutina de servicio.
Pasos durante una interrupcin
El CPU suspende lo que estaba realizando. El hw transfiere el control al sistema
de operacin.
Deshabilita las interrupciones. Mientras se atiende una interrupcin no se puede
atender otra que llegue. Algunas arquitecturas con manejo de interrupciones
sofisticadas permiten, mediante un esquema de prioridades, interrumpir un servicio
de interrupcin para atender otra de mayor prioridad. Aquellas interrupciones de
menor o igual prioridad son deshabilitadas.
El kernel del sistema de operacin salva el estado actual del proceso interrumpido
Transfiere su ejecucin a una direccin fija. Esta direccin por lo general contiene
la direccin de comienzo donde la rutina de servicio de la interrupcin se
22

encuentra. Cada diseo de computador tiene su propio mecanismo de
interrupciones. Una forma de manejar las interrupciones es invocando una rutina
general que examine la informacin de la interrupcin y determine el tipo de
interrupcin ocurrida, y de alli llama a la rutina que se encarga de atender dicha
interrupcin. Por lo general se maneja mediante un vector de interrupciones,
indexado por el tipo de interrupcin. En este vector se encuentra la direccin de
comienzo de la rutina que da servicio a dicho tipo. Se le conoce como vector de
interrupcin. Otra forma de localizar la rutina apropiada es mediante el pooling, es
decir, preguntando a cada dispositivo pare ver quien requiri el servicio.
Se ejecuta la rutina de interrupcin
Se restaura el estado anterior
Se habilitan las interrupciones.
La arquitectura de interrupciones debe tambin almacenar la direccin de la
instruccin interrumpida.

Los sistemas de operacin modernos operan por interrupciones (interrupt driven). Es
decir, el sistema de operacin estar ocioso esperando a que algn evento ocurra
(proceso a ejecutar, servicio de E/S, etc). Los eventos son indicados por la ocurrencia
de una interrupcin o trap. Un trap es una excepcin causada por software.

6. Describir las interrupciones por software usadas en la PC cuales estn
ocupadas y cuales disponibles.

Las interrupciones software son provocadas por los programas usando una funcin
especial del lenguaje. Tienen como objetivo el que la CPU ejecute algn tipo de
funcin. Al terminar de ejecutarse esta funcin, se seguir ejecutando el programa que
provoc la interrupcin.
Este tipo de interrupciones es la forma mas importante que tendrn los programas de
ejecutar funciones especiales del DOS (Disk Operating System) o del BIOS
(Basic Input Output System).

Las interrupciones de software pueden ser activadas directamente por el ensamblador
invocando al nmero de interrupcin deseada con la instruccin INT.
El uso de las interrupciones nos ayuda en la creacin de programas, usndolas,
nuestros programas son ms cortos, es ms fcil entenderlos y usualmente tienen un
mejor desempeo debido en gran parte a su menor tamao.
Este tipo de interrupciones podemos separarlas en dos categoras: las interrupciones
del sistema operativo DOS y las interrupciones del BIOS.
La diferencia entre ambas es que las interrupciones del sistema operativo son ms
fciles de usar pero tambin son ms lentas ya que estas interrupciones hacen uso
del BIOS para lograr su cometido, en cambio las interrupciones del BIOS son mucho
ms rpidas pero tienen la desventaja que, como son parte del hardware son muy
especficas y pueden variar dependiendo incluso de la marca del fabricante del
circuito. La eleccin del tipo de interrupcin a utilizar depender nicamente de las
caractersticas que le quiera dar a su programa: velocidad (utilizando las del BIOS) o
portabilidad (utilizando las del DOS).
23

Este tipo de interrupciones son de prioridad ms alta que las de hardware
(enmascarables y no enmascarables), de forma que si se recibe una interrupcin
hardware mientras que se ejecuta una software, esta ltima tiene prioridad.
Niveles de IRQ (Lneas de interrupcin)
Para ganar la atencin de la CPU, se utilizan lneas de solicitud de interrupcin (IRQ-
Interrupt Request). El bus de la PC ofrece las lneas 2 a 7. Respetan prioridades,
siendo la lnea 2 ms importante que la lnea 7. Cuando se activa una lnea, el
procesador deja todo lo dems y carga una subrutina especial para encargarse de
(dar servicio a) esa lnea de interrupcin en particular.
Interrupciones ms usuales:

Int 21H (interrupcin del DOS)
Int 10H (interrupcin del BIOS)
Int 16H (Interrupcin del BIOS)
Int 17H (Interrupcin del BIOS)
Interrupcin 21H
Propsito: Llamar a diversas funciones del DOS.
Int 21H
Nota: Cuando trabajamos en MASM es necesario especificar que el valor que estamos
utilizando es hexadecimal.
Esta interrupcin tiene varias funciones, para accesar a cada una de ellas es
necesario que el registro AH se encuentre el nmero de funcin que se requiera al
momento de llamar a la interrupcin.
Funciones para desplegar informacin al video.
02H Exhibe salida
09H Impresin de cadena (video)
40H Escritura en dispositivo/Archivo
Funciones para leer informacin del teclado.
01H Entrada desde teclado
0AH Entrada desde teclado usando buffer
3FH Lectura desde dispositivo/archivo
Funciones para trabajar con archivos.
En esta seccin nicamente se expone la tarea especfica de cada funcin,
para una referencia acerca de los conceptos empleados refirase a la unidad
7, titulada: "Introduccin al manejo de archivos".
Mtodo FCB
0FH Abrir archivo
24

14H Lectura secuencial
15H Escritura secuencial
16H Crear archivo
21H Lectura aleatoria
22H Escritura aleatoria
Handles
3CH Crear archivo
3DH Abrir archivo
3EH Cierra manejador de archivo
3FH Lectura desde archivo/dispositivo
40H Escritura en archivo/dispositivo
42H Mover apuntador de lectura/escritura en archivo
Interrupcin 10H
Propsito: Llamar a diversas funciones de video del BIOS.
Int 10H
Esta interrupcin tiene diversas funciones, todas ellas nos sirven para controlar la
entrada y salida de video, la forma de acceso a cada una de las opciones es por
medio del registro AH.
Funciones comn de la interrupcin 10H.
02H Seleccin de posicin del cursor
09H Escribe atributo y caracter en el cursor
0AH Escribe caracter en la posicin del cursor
0EH Escritura de caracteres en modo alfanumrico

El controlador de interrupciones genera 15 interrupciones.
Interrupcin 16H
Propsito: Manejar la entrada/salida del teclado.
Int 16H
Veremos dos opciones de la interrupcin 16H, estas opciones, al igual que las de
otras interrupciones, son llamadas utilizando el registro AH.
Funciones de la interrupcin 16H
00H Lee un caracter de teclado
01H Lee estado del teclado
Interrupcin 17H
Propsito: Manejar la entrada/salida de la impresora.
Int 17H
25

Esta interrupcin es utilizada para escribir caracteres a la impresora, inicializarla y leer
su estado.
Funciones de la interrupcin 16H
00H Imprime un caracter ASCII
01H Inicializa la impresora
02H Proporciona el estado de la impresora

7. Realizar el diseo de un sistema de forma que podamos probar las
interrupciones de ambos tipos. Traer programa probado fuente y compilado

7.1. Programa de interrupcin por hardware

#include <dos.h>
#include <stdio.h>
#include <conio.h>

#ifdef __cplusplus
#define __CPPARGS ...
#else
#define __CPPARGS
#endif

#define INTVECT 0x0F

char ch=0;

void interrupt ( *oldport1isr)(__CPPARGS);

void interrupt PORT1INT(__CPPARGS)
{
printf("Se ha producido una interrupcin.\n");
outportb(0x20,0x20); // pic
}

void main(void)
{
int c;

oldport1isr = getvect(INTVECT);

outportb(0x37A,(inportb(0x37A) | 0x10)); //Seteamos el bit C4 egisto de contol pto

setvect(INTVECT, PORT1INT);

/* Habilitamos la interrupcion del puerto */
outportb(0x21,(inportb(0x21) & 0x77)); setea con pic
clrscr();
printf("\nPrueba de la interrupcion del puerto paralelo.\n");
do
{}
while (!kbhit());

/* Deshabilita la interrupcion del puerto */
outportb(0x21,(inportb(0x21) | 0x80));
outportb(0x37A,(inportb(0x37A) & 0xEF));
26

setvect(INTVECT, oldport1isr); /* Restaura el vector de interrupcion */
}
/s6 a tie mas o manos 14 15 o 16 al 25

7.2. Programa de Interrupcin por software

#include <stdio.h>
#include <dos.h>
#include <conio.h>
//18.5 ms
#define INTR 0X1C /* Interrupcion del timer */

#ifdef __cplusplus
#define __CPPARGS ...
#else
#define __CPPARGS
#endif

void interrupt ( *oldhandler)(__CPPARGS);
int sec_ant;

void interrupt handler(__CPPARGS)
{
struct time t;
gettime(&t);
if(sec_ant!=t.ti_sec)
{
gotoxy(70,1);
printf("%02d:%02d:%02d",t.ti_hour,t.ti_min,t.ti_sec);
}
sec_ant=t.ti_sec;
oldhandler();
}

int main(void)
{
char key,px,py;
oldhandler = getvect(INTR);

setvect(INTR, handler);
printf("\nPresione ESC para salir.\n");
py=wherey();
px=wherex();
gotoxy(1,1);clreol();
do
key=getch();
while (key!=27);
gotoxy(px,py);
setvect(INTR, oldhandler);
return 0;
}

8. Describir el SETUP de la PC, las opciones de configuracin y los parmetros.
Es el programa que modifica la BIOS y se denomina "CMOS Setup".
27

El Setup se activa en la mayora de los casos en los equipos clnicos pulsando la
tecla DEL, DELETE ( Supr en teclados en castellano), CTRL-ALT-ESC y F2, F1,
el "Esc" u otra combinacin de teclas (Alt-Esc, Alt-F1...).
Algunas placas madre muestran claramente en pantalla la opcin para abrir el Setup
(como: pulse SPACEBAR para entrar al Setup, etc.).
La pantalla principal de una BIOS clsica es algo as:

Mientras que la de una WinBIOS tiene este aspecto:


28

De cualquier modo, observamos que existen varios apartados comunes a todas las
BIOS:
Configuracin bsica, llamado generalmente "Standard CMOS Setup" o bien
"Standard Setup".
Opciones de la BIOS, llamado "BIOS Features Setup" o "Advanced Setup".
Configuracin avanzada y del chipset, "Chipset Features Setup".
Otras utilidades, en uno o varios apartados (autoconfiguracin de la BIOS,
manejo de PCI, introduccin de contraseas -passwords-, autodeteccin de
discos duros...).
Configuracin bsica (Estndar Cmos Setup)
Bajo el nombre de Standard CMOS Setup o similar, se suele englobar la
puesta al da de la fecha y hora del sistema, as como la configuracin de
discos duros y disqueteras. La pantalla de manejo suele ser similar a sta:

Para cambiar la fecha y hora se debe situarse sobre ella e introducir la nueva, bien
mediante el teclado, el ratn, los cursores o las teclas de avance y retroceso de
pgina.De acuerdo a la sealizacin en la parte inferior de la pagina.
El tipo de disquetera y pantalla es tambin sencillo de entender y manejar.
Lo ms interesante y difcil est en la configuracin de los discos duros. En general
sern nicamente discos del tipo IDE (incluyendo los EIDE, Ata-4, Ultra-DMA y dems
ampliaciones del estndar).
Los campos a rellenar suelen ser:
29

Tipo (Type): o uno predefinido, o Auto para que calcule el ordenador los valores
correctos, o User para introducir los valores a mano, o bien None para indicar que
no hay ningn disco.
Tamao (Size): lo calcula el ordenador a partir de los datos que introducimos.
Cilindros (Cylinders): Cuantos cilindros son.
Cabezas (Heads): La cantidad de cabezas.
Precompensacin de escritura (WritePrecomp): un parmetro muy tcnico,
usado sobre todo en los discos antiguos. En los modernos suele ser cero.
Zona de aparcado de las cabezas (LandZone): otro tecnicismo, que
modernamente suele ser cero o bien 65535 (que en realidad significa cero).
Sectores (Sectors): Cuntos sectores hay por cada pista.
Modo de funcionamiento (Mode): para discos pequeos, de menos de 528 MB,
el modo Normal. Para discos de ms de 528 MB (cualquiera moderno tiene 4 5
veces esa capacidad), el modo LBA o bien el Large, menos usado y slo
recomendado si no funcionara el LBA. En muchos casos se permite la
autodeteccin (opcin Auto).
Opciones de la BIOS (Bios Feature Setup): Generalmente, en ingls, BIOS
Features. Se trata de las diversas posibilidades que ofrece la BIOS para realizar
ciertas tareas de una u otra forma, adems de habilitar (enable) o deshabilitar
(disable) algunas caractersticas. Las ms importantes son:
CPU Internal cache: el habilitado o deshabilitado de la cach interna del
microprocesador. Debe habilitarse (poner en Enabled) para cualquier chip con
cach interna (todos desde el 486).
External Cach: La cach externa o de segundo nivel. No tiene tanta
trascendencia como la interna, pero influye bastante en el rendimiento.
Quick Power On Self Test: que el test de comprobacin al arrancar se haga ms
rpido. Si estamos seguros de que todo funciona bien, merece la pena hacerlo
para ganar unos cuantos segundos al arrancar.
Boot Sequence: para que el ordenador busque primero el sistema operativo en un
disquete y luego en el disco duro si es "A,C" o al revs si es "C,A". til para
arrancar o no desde disquetes, o en BIOS modernas incluso desde una unidad Zip
o SuperDisk internas.
Swap Floppy Drive: si tenemos dos disqueteras (A y B), las intercambia el orden
temporalmente.
Boot Up NumLock Status: para los que prefieran arrancar con el teclado
numrico configurado como cursores en vez de cmo nmeros.
IDE HDD Block Mode: un tipo de transferencia "por bloques" de la informacin del
disco duro. Casi todos los discos duros de 100 MB en adelante lo soportan.
30


Gate A20 Option: un tecnicismo de la RAM; mejor conectado.
Above 1 MB Memory Test: por si queremos que verifique slo el primer MB
de RAM o toda (above = "por encima de"). Lo primero es ms rpido pero
menos seguro, evidentemente, aunque si no ha fallado nunca.
Memory Parity Check: verifica el bit de paridad de la memoria RAM. Slo
debe usarse si la RAM es con paridad, lo que en la actualidad es muy raro,
tanto en FPM como EDO o SDRAM. Las nicas memorias con paridad suelen
estar en 486s o Pentium de marca, como algunos IBM.
Typematic Rate: para fijar el nmero de caracteres por segundo que aparecen
cuando pulsamos una tecla durante unos instantes sin soltarla.
Numeric Processor: para indicar al ordenador que existe un coprocesador
matemtico. Puesto que desde la aparicin del 486 DX esto se da por
supuesto, est en proceso de extincin.
Security Option: aunque a veces viene en otro men, esta opcin permite
elegir si queremos usar una contrasea o password cada vez que
arranquemos el equipo (System), slo para modificar la BIOS (Setup o BIOS) o
bien nunca (Disabled).
IDE Second Channel Option: indica si vamos a usar o no el segundo canal
IDE (slo en controladoras EIDE, claro), en cuyo caso le reserva una IRQ,
generalmente la 15.
PCI/VGA Palette Snoop: se suele utilizar cuando tenemos dos tarjetas de
vdeo (o una tarjeta aadida sintonizadora de televisin) y los colores no
aparecen correctamente. Remtase al manual de su tarjeta grfica para ver si
debe habilitarlo.
Video Bios ROM Shadow: si se habilita, copiar la BIOS de la tarjeta grfica
desde la lenta ROM en la que est a la rpida RAM del sistema, lo que acelera
el rendimiento. Suele estar habilitada sin dar problemas, salvo quiz en Linux.
(Adaptor) ROM Shadow: lo mismo pero para otras zonas de la BIOS. En este
caso se suelen deshabilitar, para evitar problemas innecesarios, aunque puede
probar y ver si aumenta la velocidad.
31

Configuracin avanzada y del chipset
Son parmetros que indican qu caractersticas del chipset deben habilitarse y cmo.
Afecta habitualmente a la memoria RAM, a las cachs (interna y externa) y a veces al
micro, a los buses ISA, Vesa, PCI y AGP y a otros dispositivos como los puertos serie
y paralelo.
Este terreno puede ser algo peligroso, as que apunte todo antes de cambiar nada;
lo ms fcil es dejar las ms opciones que pueda en Auto, aunque con eso puede que
no saque el mximo de rendimiento. Y es que para ganar hay que sufrir...

Auto Configuration: pues eso, configuracin automtica; la tabla de salvacin
cuando no se consigue hacer a mano. Los valores que da tras una primera
autoconfiguracin pueden ser vlidos como punto de partida.
ISA Bus Clock: la velocidad del bus ISA, que en teora debe ser unos 8 MHz. A
veces se introduce como una cifra en MHz y otras veces en funcin del bus del
sistema (el PCLK.
Velocidad de la RAM: en esto existen mltiples formas de proceder.
Evidentemente, cuanto mayor le indiquemos que es la velocidad de la RAM ms
rpido ir el sistema, pero en muchas ocasiones la RAM no es tan rpida o de
calidad como sera deseable y la estabilidad del sistema se resiente, sobre todo al
cargarlo de trabajo. Los valores que indican esta velocidad son los ciclos de
acceso a RAM, los ciclos de espera (Clock Cycles o, a veces, Wait States) que el
rpido microprocesador concede a la lenta RAM antes de mandarle o leer de ella
la informacin.
Ajustes de la cach: similares a los de la RAM. Algunos consisten en modificar
los tiempos de acceso, otros en modificar la forma de acceder a la cach. De
cualquier forma, esto depende enteramente de las capacidades de la cach
misma.
32

Vdeo y System Cacheable (Shadow): como se coment en el apartado de
opciones de la BIOS, copiar la BIOS de la tarjeta de vdeo o del sistema de la lenta
ROM a la rpida RAM o, en este caso, usar la cach para lo mismo.
Manejo de dispositivos: hoy en da los chipsets deben manejar las controladoras
de dispositivos tales como discos duros, puertos serie, etc., que suelen estar
incorporadas a la placa base.
Configuracin por software de la CPU: en la actualidad, bastantes placas base
han dejado de lado el mtodo clsico para configurar la CPU y han optado por
soluciones jumperless (literalmente, "sin jumpers"), autodetectando los valores
correctos de velocidad de bus, multiplicador y voltaje y/o permitiendo que el
usuario los seleccione mediante un sencillo men en la BIOS.






Administracin de energa
En este men (no se implant hasta bien entrada la poca de los 486), es donde se
configuran las caractersticas de ahorro de energa del ordenador.
Esto puede ser algo totalmente superfluo, por ejemplo si vamos a usar el ordenador
de forma continuada al mximo de potencia, o bien algo fundamental, como ocurre en
ordenadores porttiles o sencillamente si tenemos la mala costumbre de encender el
ordenador al llegar a la oficina y no apagarlo hasta la hora de salir, tanto si lo vamos a
usar como si no.
Power Management: literalmente, administracin de energa. Es donde se
selecciona si queremos habilitar el ahorro de energa y de qu forma;
generalmente se ofrecen Disable (deshabilitado), User define (definido por el
usuario) y algunas opciones predeterminadas para un ahorro mnimo o mximo.
PM Control by APM: una opcin muy importante; determina si el control de
energa deber hacerse segn el estndar APM (Advanced Power Management,
administracin avanzada de energa), lo que entre otras cosas permite que
Windows sea capaz de suspender el equipo a voluntad .
Video Off Method: ofrece diversas opciones para reducir el consumo del sistema
de vdeo, de las cuales la ms interesante es DPMS, aunque no todos los
monitores y tarjetas grficas la soportan
33


PM Timers: para controlar el tiempo que debe permanecer inactivo el ordenador
(System) o el disco duro (HDD) antes de que se active el ahorro de energa.
Existen 3 grados de ahorro de energa:
PM Events: una larga serie de eventos o sucesos que deben ser controlados para
saber si el ordenador est inactivo o trabajando. Es habitual no controlar (Disable)
la actividad de la IRQ8 (reloj de la BIOS), ya que rara vez se la puede considerar
como totalmente inactiva.
CPU Fan Off in Suspend: si el ventilador de la CPU va conectado a la placa base,
lo apaga cuando el equipo est en suspenso, ya que en ese momento la CPU est
prcticamente parada.
Modem Wake Up: activa el equipo cuando se detecta una llamada entrante en el
mdem. Necesita que el mdem soporte esta caracterstica y que est conectado
a la placa base mediante un cable especial.
LAN Wake Up: igual que la anterior, pero para la tarjeta de red. Tambin necesita
estar conectado a la placa base mediante un cable.

Configuracin de PNP y slots PCI
Resulta raro la sentencia PNP con PCI; pues bien, la gran mayora de dispositivos PCI
soportan PNP, a diferencia de las tarjetas ISA, mucho ms problemticas
El Plug&Play, PNP o P&P, es una tecnologa que facilita la conexin de dispositivos,
ya que se supone que basta con enchufar y listo.
PNP OS Installed: informa al sistema de si hay un sistema operativo PNP
instalado.
Resources Controlled by: Recursos controlados bien manual, bien
automticamente. IRQx/DMAx assigned to: una lista de las interrupciones (IRQs)
34

y canales DMA que podemos asignar manualmente, bien a tarjetas PCI/ISA PnP
(compatibles con PNP), bien a tarjetas Legacy ISA (tarjetas ISA no PNP, que son
las ms conflictivas). Necesitaremos conocer los valores de IRQ y/o DMA a
reservar, que vendrn en la documentacin del dispositivo problemtico.
PCI IDE IRQ Map to: algo que muy probablemente no necesite cambiar nunca, ya
que slo afecta a controladoras IDE no integradas en la placa base, sino en forma
de tarjeta, que no sean PNP.
Assign IRQ to USB: pues eso, si el puerto USB debe tener una interrupcin
asignada o no. Si no tiene ningn dispositivo USB conectado, puede liberar esa
IRQ para otros usos; suele ser la misma interrupcin que para uno de los slots PCI
o ISA.
Autoconfiguracin de la BIOS
Este apartado comprende diversas opciones que se proporcionan para facilitar la
configuracin de la BIOS, de las cuales las ms comunes son:
LOAD BIOS DEFAULTS: carga una serie de valores por defecto con poca o nula
optimizacin, generalmente tiles para volver a una posicin de partida segura y
resolver problemas observados al arrancar.
LOAD SYSTEM DEFAULTS: una opcin cuyos efectos varan de unas BIOS a
otras. En unos casos carga unos valores por defecto seguros (como LOAD BIOS
DEFAULTS), en otros carga unos valores ya optimizados para conseguir un
rendimiento adecuado, o incluso puede servir para cargar la ltima serie de
valores guardados por el usuario.
LOAD TURBO DEFAULTS: carga los valores que estima ptimos para
incrementar el rendimiento.
En cualquier caso, debe tenerse en cuenta que los cambios no suelen ser
guardados automticamente, sino que deben confirmarse al salir de la BIOS.
Perifricos integrados
Las placas base modernas (desde las de los ltimos 486) suelen tener integrados
los chips controladores del disco duro, y en muchas ocasiones manejan tambin
las disqueteras, los puertos serie y el puerto paralelo. Por ello, las BIOS tienen
diversos apartados para manejar estos dispositivos, entre ellos:
Conexin o desconexin de dichas controladoras: de especial importancia en
el caso del segundo canal IDE, que en ocasiones est deshabilitado por defecto, y
que deberemos habilitar para conectar ms de dos dispositivos IDE (o bien uno
lento y uno rpido sin mezclarlos en el mismo canal, lo que baja el rendimiento).
Modos de acceso a discos duros (PIO y/o UltraDMA): los discos modernos
admiten 5 modos PIO, del ms lento, el PIO-0 o no soporte de este tipo de acceso
(en discos antiguos, de 100 MB o menos), hasta el ms rpido, el modo PIO-4.
Adems, recientemente ha aparecido el modo UltraDMA, an ms rpido. Si la
controladora est integrada en la placa base, aqu debe especificar esos datos.
Bsquelos en el manual de su disco duro, en Internet en la pgina del fabricante o
bien seleccione Auto y no se complique ms.
Direcciones e interrupciones (IRQs) de los puertos: bien sean los puertos serie
o el paralelo. Resulta muy raro necesitar cambiar los valores por defecto, pero
podra ser necesario para evitar conflictos con otros dispositivos que usen esos
mismos valores.
35

Tipo de puerto paralelo: el antiguo estndar de puerto paralelo se ha quedado un
tanto anticuado hoy en da, sobre todo si lo que queremos conectar no es una
impresora sino un escner o una unidad Zip; por ello, se suele poder seleccionar
otras posibilidades ms avanzadas como ECP o EPP. Busque en el manual del
perifrico para saber qu modo debe escoger.
Control del puerto de infrarrojos: aunque muy pocas placas base incluyen los
adaptadores y cables necesarios, modernamente casi todas traen los conectores
para instalar un puerto de infrarrojos en su sistema. Generalmente deber
habilitarse y seleccionar su tipo, direccin de memoria, IRQ y si debe redireccionar
la informacin de COM2 a este puerto.

Control por password
Se suele poder seleccionar, bien en un men especfico o en las BIOS Features, entre
tener que introducir la clave cada vez que se arranca el ordenador o slo cuando se
van a cambiar datos de la BIOS. Lo primero es el mtodo ideal para seguridad, y
adems es gratis; lo segundo es til cuando gente inexperta.
Autodeteccin de discos duros IDE
Esta opcin permite detectar los discos duros que estn conectados al sistema, as
como su configuracin. Resulta muy til para simplificar la tarea de instalar un disco
nuevo, as como cuando los datos del disco no estn completos o no parecen
funcionar en nuestra BIOS.

36

Formateo de disco duro a bajo nivel
O, en ingls, HDD Low Level Format. Se trata de un formateo mucho ms intenso
que el normal; no slo elimina los datos, sino que reorganiza la propia estructura del
disco. Generalmente slo debe usarse cuando el disco est fallando muy a menudo o
ha sido infectado por un virus tremendamente resistente, y aun as no resulta
recomendable.
Salir de la BIOS
Save and Exit Setup: o bien Write to CMOS and Exit o algo similar; pues eso,
grabar los cambios y salir, con lo cual se reinicia el equipo. Debera pedirle
confirmacin, en forma de "Y/N?" (Yes o No).
Exit Without Saving: o Do Not Write to CMOS and Exit o Discard Changes and
Exit o similar; lo contrario, salir sin grabar los cambios.


9. BIBLIOGRAFIA

EL UNIVERSO DIGITAL DEL IBM PC, AT Y PS/2
Edicin 4.0 (4) Autor: Ciriaco Garca de Celis
Interrupciones del Microprocesador, Ing. Jos Francisco Andaluz Guzmn, U
NIVERSIDAD CATLICA DE OCCIDENTE
Interrupciones en la arquitectura Intel IA-32, Jose Blzquez Soriano, Diciembre del
2004
EL RELOJ DE TIEMPO REAL (RTC), Departamento de Ingeniera Electrnica,
Universidad de Madrid
Conceptos generales de Sistemas Operativos, Escuela Universitaria de
Informtica (Segovia)
Manual Bsico BIOS, www.netspacesoluciones.com

Pginas Web consultadas:

www.geocities.com/eidan.rm/interrupciones.htm
http://www.modelo.edu.mx/univ/virtech/circuito/paralelo.htm
http://www.angelfire.com/pa2/jcgr/tecnica/PP/pp.htm
http://www.pchardware.org/puertos/paralelo.php
http://perso.wanadoo.es/luis_ju/puerto/port02.html
http://www.ing.unlpam.edu.ar/~material/arquitectura/Arquitectura-PC-dos.html
http://www.tlm.unavarra.es/asignaturas/ldc/sxi/5-1.pdf
http://perso.wanadoo.es/luis_ju/soft/soft.html
http://sercivioalpc.com/html

Potrebbero piacerti anche