Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Interrupciones 130425151448 Phpapp01 PDF
Interrupciones 130425151448 Phpapp01 PDF
Las interrupciones son un metodo del que disponen los dispositivos e incluso los procesos
para hacer notar a la CPU la aparicin de alguna circunstancia que requiera su
intervencin. De este modo, los dispositivos pueden provocar que la CPU deje por el
momento la tarea que estaba realizando y atienda la interrupcin. Una vez atendida,
seguira con su labor anterior.
Todo ese tiempo que el procesador estaba sondeando el estado de los dispositivos era
tiempo que no se poda dedicar a otros procesos, con lo que significa esto en cuanto a
rendimiento. Por todo ello se. pens que lo mejor era que existiera una lnea especial
entre el procesador y los dispositivos, por la que los dispositivos indicaban al procesador
que ya estaban listos. Cuando al procesador le llega una interrupcin, la atiende
inmediatamente dejando de hacer lo que estuviera haciendo. Para poder atenderla de la
forma correcta, debe saber con anterioridad cmo tratarla. Por ello, las computadoras
tienen en un sitio. conocido de memoria las distintas rutinas de tratamiento para las
diferentes interrupciones. El procesador reconoce la interrupcin de la que se trata y
busca en memoria la rutina correspondiente.
Interrupciones software
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 OperatingSystem) o del BIOS (Basic Input
Output System). Estas funciones tienen un nmero de interrupcin software asociada.
Cuando un programa lanza una interrupcin de este tipo, la CPU ejecuta su funcin de
tratamiento asociada. Por debemos saber que es lo que hace cada interrupcin para
conseguir el efecto deseado. Metodologa de Programacin, Programacin en C,
Aplicaciones electrnicas 2 / 10
Las funciones que se ejecutan con cada interrupcin software son un estndar en el
mundo PC.
En nuestro caso, algunas de las interrupciones que nos van a ser mas tilessern:
BIOS.
Cada interrupcin tiene asociadas varias funciones. Para usar cada una de las funciones de
la interrupcin que nos interese se debe:
- Lanzar la interrupcin.
El lenguaje C nos proporciona una serie de estructuras en la librera dos. h que nos
permiten escribir en los registros de la CPU. Estas son:
struct WORDREGS {
unsignedint ax;
unsignedintbx;
unsignedint cx;
unsignedint dx;
unsignedintsi;
unsignedint di;
unsignedintcflag;
unsignedint flags;
struct BYTEREGS {
unsignedcha.r d1;
union REGS {
struct WORDREGS x;
struct BYTEREGS h;
BYTEREGS son registros de 8 bits, que adems coinciden con la parte alta y baja de los
WORDREGS. Por ejemplo, escribir OxFF11 en el registro ax es 10 mismo que escribir en el
registro ah OxFF y en el al Ox11.
Una unin es un tipo de dato definible por el programador, como las estructuras, en la
que se pueden almacenar datos de diferentes tipos en cada ocasin, es decir, en cada
instante solo podra hacerse referencia a uno de los datos componentes de la unin. La
palabra clave para definir y para declarar variables de tipo unin es union y, tanto las
variables de tipo unin como sus miembros, o elementos, son tratados de igual forma que
en el caso de las estructuras.
Cuando se declara una variable de tipo unin, se asigna una porcin de memoria que es
compartida por variables diferentes en distintos momentos.
UninNombre Unin {
tipo1 elemento1;
tipo2 elemento2;
tipo3 elemento3;
..... .......
Ejemplo:
union talla{
char letra; // p, m, g
}camisetas;
scanf("%d", &camisetas.numero);
camisetas.letra = getchar() ;
gets(camisetas.siglas);
Ejemplo:
Y escribimos en ella:
registros.x.ax=0xFF11;
Para lanzar la interrupcin, usaremos la funcin de la librera dos.h int86, que se define
en Turbo C como:
Uno de los dispositivos mstiles y populares del PC es el ratn. Los ratones llevan
existiendo mucho tiempo, pero su popularidad masiva surgi a partir del uso de entornos
grficos tipo Windows, cuyo manejo requiere el uso de un ratn.
Como ocurre casi siempre que se quiere acceder directamente al hardware, la forma mas
cmoda de hacerlo es usar las funciones que nos proporcionan las interrupciones
software. En este caso, la interrupcin que se encarga de controlar, el ratn es la numero
33h. Esta interrupcin nos proporciona nada menos que 53 funciones distintas, que
seleccionaremos poniendo su numero en el registro ax.
ax=0 si no hay
ratn
ratn
dx= fila
cx=H minima
dx=H mxima
08h Rango desplazVert. ax=8
cx=V minima
Antes de pasar a mostrar cmo trabajar con estas funciones, es importante destacar que
la zona sobre la que trabaja el ratn no coincide con la pantalla real.
EI ratn se mueve sobre una pantalla virtual, que depende del modo de vdeo en el que
se est trabajando, es decir, de la resolucin. En las funciones bsicas de manejo de1
ratn, referidas a pantalla de texto se hace necesario traducir estas coordenadas virtuales
a coordenadas de texto. Esto se consigue dividiendo entre ocho las coordenadas graficas,
pues cada caracterocupa ocho pixels de pantalla, labor que realizaremos antes de llamar
a las funciones.
Lo primero que debe hacer cualquier programa antes de usar el ratn es prepararlo
reinicializarlo o resetearlo. Con esto conseguimos dejar al ratn en el centro de la pantalla
con el cursor apagado. Para seleccionar esa funcin, ponemos su numero en el registro ax
y lanzamos la interrupcin 33h. Como resultado de la operacin, la funcin nos devuelve
el estado del ratn, es decir, si hay o no ratn instalado. Ese resu1tado lo deja de nuevo
en el registro ax.
Ejemplo:
intResetRaton (void)
return 1;
Ejemplo:
voidMostrarCursor (void)
registros.x.ax = 1;
voidApagarCursor (void)
registros.x.ax = 2;
Ejemplo:
intBotonDerecho (void)
registros.x.ax = 3;
intBotonIzquierdo (void)
registros.x.ax = 3;
registros.x.ax = 3;
int86 (0x33, ®istros, ®istros);
*x = registros.x.cx;
*y = registros.x.dx;
Para colocar el cursor del ratn en una posicin determinada, contamos con la funcin
04h. A esta funcin se le debe pasar la coordenada horizontal en el registro cx, y la
vertical en el dx.
Cuando se trabaja en modo texto hay que tener en cuenta, que las coordenadas hay que
multiplicarlas por 8 antes de pasarlas a la funcin.Metodologa de Programacin,
Programacin en C, Aplicaciones electrnicas 9 / 10
Ejemplo:
registros.x.ax = 4;
registros.x.cx = x;
registros.x.dx = y;
Cuando se mueve el ratn, el controlador del ratn ( el programa driver) mueve el cursor
horizontal y verticalmente un numero de pixels que depende de la sensibilidad del ratn.
Por defecto, cuando se instala el controlador del ratn, para conseguir un desplazamiento
de 8 pixels se precisan 8 mickeys en horizontal y 16 en vertical. EI control del ratn se
realizaba mediante la interrupcin int 0x33.
A continuacin se muestra, como ejemplo, un programa que activa el ratn y muestra las
coordenadas del cursor:
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
#include <graphics.h>
void main()
estado.x.ax = 0;
no hay raton
exit (1) ;
while (!kbhit())
{ gotoxy(24,1) ;