Академический Документы
Профессиональный Документы
Культура Документы
INTERRUPCIONES
Interrupciones software
Las interrupciones software son provocadas por los programas usando una
función especial del lenguaje. Tienen como objetivo el que la CPU ejecute algún
tipo de función. Al terminar de ejecutarse esta función, se seguirá ejecutando el
programa que provocó la interrupción.
En nuestro caso, algunas de las interrupciones que nos van a ser mas
utiles seran:
• Interrupción 14h: Acceso al puerto serie por la BIOS.
• Interrupción 21h: Funciones del DOS.
• Interrupción 17h: Servicios de acceso a la impresora de la
BIOS.
Cada interrupción tiene asociadas varias funciones. Para usar cada una de
las funciones de la interrupción que nos interese se debe:
El lenguaje C nos proporciona una serie de estructuras en la librería 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 ratón. Los ratones
Ilevan existiendo mucho tiempo, pero su popularidad masiva surgió a partir del uso
de entornos gráficos tipo Windows, cuyo manejo requiere el uso de un ratón.
La interrupción 33 h
Ejemplo:
Ejemplo:
La función 03h nos permite conocer el estado de los botones del ratón,
información que almacena en el registro bx de la siguiente forma:
Ejemplo:
Para colocar el cursor del ratón en una posición determinada, contamos con
la función 04h. A esta función 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 función.
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 ratón.") ;
exit (1) ;