Hola te mando algunas rutinas para el manejo del mouse. Las rutinas estan en lenguaje C, pero también te paso su optimización en lenguaje assambler, ya que es mucho mas rápido y, a parte, solo son un par de lineas fácilmente comprensibles.
En lenguaje C, debemos declarar los registros mediante: "union REGS reg;" a modo global. Las funciones para mostrar y ocultar el mouse:
void MostrarMouse()
{
reg.x.ax = 0x1;
int86(0x33, ®, ®);
}
void OcultarMouse()
{
reg.x.ax = 0x2;
int86(0x33, ®, ®);
}
Sus optimizaciones en ensamblador:
void MostrarMouse()
{
asm mov ax, 01h
asm int 33h
}
void OcultarMouse()
{
asm mov ax, 02h
asm int 33h
}
Aquí te listo algunas de las funciones de la interrupción 33h:
01h mostrar el mouse (0x1 en C)
02h ocultar el mouse (0x2)
03h leer posicion y botones (0x3)
Aquí va la funcion para controlar la posicion del mouse en C:
int MouseX(int ModVid)
{
reg.x.ax = 0x3;
int86(0x33, ®, ®);
return reg.x.cx/ModVid;
}
int MouseY(int ModVid)
{
reg.x.ax = 0x3;
int86(0x33, ®, ®);
return reg.x.dx/ModVid;
}
Donde ModVid es el modo que utilizamos:
1 - gráfico
8 - texto
La rutina para comprobar la pulsacion (devuelve 1 si se ha pulsado el boton izquierdo o 0 si no se ha pulado nada) del boton del mouse es:
int MouseClick()
{
reg.x.ax = 0x5;
reg.x.bx = 0;
int86(0x33, ®, ®);
if ((reg.x.ax) & 1) return 1;
return 0;
}
Espero que te sirva. Un saludo.