Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Raton PDF
Raton PDF
INTERRUPCIONES
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.
En nuestro caso, algunas de las interrupciones que nos van a ser mas
utiles seran:
Interrupcin 14h: Acceso al puerto serie por la BIOS.
Interrupcin 21h: Funciones del DOS.
Interrupcin 17h: Servicios de acceso a la impresora de la
BIOS.
Cada interrupcin tiene asociadas varias funciones. Para usar cada una de
las funciones de la interrupcin que nos interese se debe:
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 {
unsigned int ax;
unsigned int bx;
unsigned int cx;
unsigned int dx;
unsigned int si;
unsigned int di;
unsigned int cflag;
unsigned int flags;
}
struct BYTEREGS {
unsigned char al;
unsigned char ah;
unsigned char bl;
unsigned char bh;
unsigned char cl;
unsigned char ch;
unsigned cha.r d1;
unsigned cha.r dh;
union REGS {
struct WORDREGS x;
struct BYTEREGS h;
}
Union Nombre_Union {
tipo1 elemento1;
tipo2 elemento2;
tipo3 elemento3;
..... .......
} variables;
Ejemplo:
union talla{
int numero; // 42,46,50
char letra; // p, m, g
char siglas[4]; // L, XL, XXL
}camisetas;
Ejemplo:
Y escribimos en ella:
registros.x.ax=0xFF11;
Uno de los dispositivos mas utiles y populares del PC es el ratn. Los ratones
Ilevan 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.
La interrupcin 33 h
Ejemplo:
Ejemplo:
La funcin 03h nos permite conocer el estado de los botones del ratn,
informacin que almacena en el registro bx de la siguiente forma:
Ejemplo:
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.
Ejemplo:
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
#include <graphics.h>
void main()
{ union REGS estado ;
int driver = DETECT, mode; /* para seleccionar el modo grafico */
clrscr() ;
estado.x.ax = 0;
int86 (0x33, &estado, &estado) ;
if ( !estado.x.ax) //si ax=0 no hay raton
printf ("\n ERROR: no hay ratn.") ;
exit (1) ;