Está en la página 1de 11

INT 33H Esta es una interrupcin de DOS y ayuda a controlar el uso del mouse.

Se puede establecer el uso del ratn en modo texto y en modo grfico. Para hacer uso del mouse se debe establecer el modo de video, inicializar mouse, mostrar el puntero, realizar acciones de desplazamiento, seleccin, etc., y al final ocultar el puntero. Iniciacin del mouse El servicio utilizado es el 00, este servicio inicializa el controlador del mouse como sigue: Establece el puntero en el centro de la pantalla Si esta visible el apuntador lo oculta Fija la pagina de despliegue del apuntador del ratn en cero Establece el puntero de acuerdo al modo de video Modo texto: rectngulo, color inverso Modo grafico: forma de flecha Establece la razn mickey a pxel Razn hor: 8 a 8 Razn Vert: 16 a 8 Establece los limites horizontal y vertical para el puntero mximo y mnimo Establece el umbral de velocidad doble a 64 mickey por segundo

Descripcin del servicio: Registro Valor Servicio:00 AX Retorna Registro Valor 0000h, si no est disponible AX controlador FFFFFh, si esta disponible Nmero de botones del ratn BX

Despliegue del puntero del mouse Servicio utilizado 01,para mostrar el puntero del mouse Descripcin del servicio: Registro Servicio:01 AX Valor

Oculta el puntero del mouse Servicio utilizado 02, se utiliza al final de la ejecucin del programa. Descripcin del servicio:

Registro Servicio:02 AX

Valor

Obtiene el estado del botn y la posicin del puntero del mouse Servicio utilizado 03, retorna informacin til para el manejo del mouse. Descripcin del servicio: Registro Valor Servicio:03 AX Retorna Registro Valor Estado de los botones de acuerdo a BX la posicin del bit, como sigue: Bit 0: botn izquierdo, donde 0= arriba, 1= abajo Bit 1: botn derecho, donde 0= arriba, 1= abajo Bit 2: botn central, donde 0= arriba, 1= abajo Bits 3-15: reservados Coordenada horizontal: x CX Coordenada vertical: y DX Nota: Las coordenadas son expresadas en trminos de pxeles, aun en modo texto (8 x byte para modo video 03)

Establece la posicin del puntero del mouse Servicio utilizado 04, coloca el puntero en la nueva posicin, ajustando como sea necesario si est fuera de los lmites mnimo y mximo. Descripcin del servicio: Registro Valor Servicio:04 AX Posicin horizontal CX Posicin vertical DX

Obtiene informacin de la pulsacin de los botones del mouse Servicio utilizado 05, retorna el estado arriba-debajo de todos los botones, el conteo de las presiones y posicin del botn requerido. Descripcin del servicio:

Registro Valor Servicio:05 AX Nmero del BX botn: 0 = izquierdo 1 = derecho 2 = central

Retorna Registro Valor Estado de los botones de a AX cuerdo a la posicin del bit como sigue: Bit 0: botn izquierdo, donde 0= arriba, 1= abajo Bit 1: botn derecho, donde 0= arriba, 1= abajo Bit 2: botn central, donde 0= arriba, 1= abajo Bits 3-15: reservados Contador de presiones del BX botn Coordenada horizontal de la CX ltima presin del botn Coordenada vertical de la DX ltima presin del botn

Nota: La operacin restablece el contador de presiones del botn en cero.

Fija los limites horizontales para el puntero del mouse Servicio utilizado 07, fija los lmites horizontales mnimo y mximo para el puntero. Descripcin del servicio: Registro AX CX DX Valor Servicio:07 Lmite inferior Lmite superior

Nota: Si el nmero mnimo es mayor que el mximo, la operacin intercambia los nmeros, tambin la operacin mueve al puntero al rea nueva.

Fija los limites verticales para el puntero del mouse Servicio utilizado 08, fija los lmites verticales mnimo y mximo para el puntero. Descripcin del servicio: Registro AX CX DX Valor Servicio:08 Lmite inferior Lmite superior

Nota: Si el nmero mnimo es mayor que el mximo, la operacin intercambia los nmeros, tambin la operacin mueve al puntero al rea nueva.

;-----------------------------------------------MANEJO DEL MOUSE EN MODO TEXTO ;-----------------------------------------------.MODEL SMALL .STACK 100H .DATA MEN1 DB ' MOUSE NO DETECTADO$' .CODE MAIN PROC FAR ; Protocolo PUSH DS SUB AX, AX PUSH AX MOV AX, @DATA MOV DS, AX ; Protocolo (End)

; Inicializacion del mouse (begin) CALL INIT_MOUSE CMP AX,00 JE ERROR CALL SHOW_CURSOR MOV CX, 320 MOV DX, 240 CALL PUT_CURSOR JMP EXIT ; Inicializacion del mouse (end) ERROR: LEA DX,MEN1 CALL MENSAJE CALL LEE JMP SALTE EXIT: CALL CALL CALL SALTE: CALL RET MAIN ENDP LEE OCULTA_MOUSE RESTAURA SAL_DOS

RESTAURA PROC MOV AH, 00H MOV AL, 03H INT 10H RET RESTAURA ENDP SAL_DOS PROC MOV AH,4CH INT 21H RET SAL_DOS ENDP INIT_MOUSE PROC NEAR MOV AX, 00H INT 33H RET INIT_MOUSE ENDP

OCULTA_MOUSE PROC NEAR MOV AX, 02H INT 33H RET OCULTA_MOUSE ENDP

SHOW_CURSOR PROC NEAR PUSH AX MOV AX, 01H INT 33H POP AX RET SHOW_CURSOR ENDP PUT_CURSOR PROC NEAR PUSH AX MOV AX, 04H INT 33H POP AX RET PUT_CURSOR ENDP

LEE PROC PUSH AX MOV AH,01 INT 21H POP AX RET LEE ENDP MENSAJE PROC PUSH AX MOV AH,09H INT 21H POP AX RET MENSAJE ENDP END MAIN

;-----------------------------------------------MANEJO DEL MOUSE EN MODO GRAFICO ;-----------------------------------------------.MODEL SMALL .STACK 100H .DATA MEN1 DB 'NO MOUSE DETECTADO$' .CODE MAIN PROC FAR ; Protocolo PUSH DS SUB AX, AX PUSH AX MOV AX, @DATA MOV DS, AX ; Protocolo (End) CALL GRAFICO ; Inicializacion del mouse CALL INIT_MOUSE CMP AX,0000 JE ERROR CALL SHOW_CURSOR MOV CX, 620 MOV DX, 410 CALL PUT_CURSOR JMP EXIT ERROR: LEA DX,MEN1 CALL MENSAJE CALL LEE JMP SALTE EXIT: CALL LEE CALL OCULTA_MOUSE SALTE: CALL RESTAURA CALL SAL_DOS RET MAIN ENDP RESTAURA PROC MOV AH, 00H MOV AL, 03H INT 10H RET RESTAURA ENDP SAL_DOS PROC MOV AH,4CH INT 21H RET SAL_DOS ENDP

GRAFICO PROC NEAR ; Inicializa modo grafico 640x480x16 (Begin) MOV AH, 00H MOV AL, 12H

INT 10H ; Inicializa modo grafico 640x480x16 (End) RET GRAFICO ENDP INIT_MOUSE PROC NEAR MOV AX, 00H INT 33H RET INIT_MOUSE ENDP OCULTA_MOUSE PROC NEAR MOV AX, 02H INT 33H RET OCULTA_MOUSE ENDP

SHOW_CURSOR PROC NEAR PUSH AX MOV AX, 01H INT 33H POP AX RET SHOW_CURSOR ENDP PUT_CURSOR PROC NEAR PUSH AX MOV AX, 04H INT 33H POP AX RET PUT_CURSOR ENDP

LEE PROC PUSH AX MOV AH,01 INT 21H POP AX RET LEE ENDP MENSAJE PROC PUSH AX MOV AH,09H INT 21H POP AX RET MENSAJE ENDP END MAIN

;-----------------------------------------------MUESTRA LAS COORDENADAS DE LA POSICIN ACTUAL DEL PUNTERO DEL MOUSE USO DE INT 21, SERVICIO 40 ;-----------------------------------------------.MODEL SMALL .STACK 100H .DATA XB DW 00 YB DW 00 VALASC DW 00 MEN1 DB 'Mouse no disponible...$' DESPDATO LABEL BYTE XMEN DB 'x= ' XASCII DW ? YMEN DB ' y= ' YASCII DW ? YXI DW 00 YXF DW 00 FPP DB 00 .CODE MAIN PROC FAR ;PROTOCOLO PUSH DS SUB AX,AX PUSH AX MOV AX,@DATA MOV DS,AX MOV ES,AX ;FIN PROTOCOLO CALL MOV MOV MOV CALL CALL CMP JE CALL MOV CALL CMP JE CALL MOV CALL MOV MOV MOV CALL MOV MOV CALL JMP LEA CALL CALL MOV MOV MOV INITTEXT FPP,3EH YXI,00H YXF,184FH TEXTBACKGROUND I_MOUSE AX,00 ERROR M_MOUSE YXI,1843H P_MOUSE ; SERVICIO 03 BX,01 EXIT GOTOXY AX,XB CONV AX,VALASC XASCII,AX AX,YB CONV AX,VALASC YASCII,AX DESPLIEGA ;SERVICIO 40 DE LA INT 21 OTRO DX,MEN1 PRINTF F_MOUSE FPP,07H YXI,00H YXF,184FH

OTRO:

ERROR: EXIT:

MAIN

CALL MOV INT RET ENDP

TEXTBACKGROUND AX,4C00H 21H

I_MOUSE

I_MOUSE M_MOUSE

PROC MOV INT RET ENDP PROC PUSH MOV INT POP RET ENDP PROC PUSH MOV INT POP RET ENDP PROC PUSH MOV INT POP RET ENDP PROC MOV MOV MOV MOV INT RET ENDP

NEAR AX,00 33H

NEAR AX AX,01H 33H AX

M_MOUSE C_MOUSE

NEAR AX AX,04H 33H AX

C_MOUSE F_MOUSE

NEAR AX AX,02H 33H AX

F_MOUSE C_CURSOR

NEAR AH,02 BH,00 DH,00 DL,25 10H

C_CURSOR P_MOUSE

PROC NEAR ;La subrutina devuelve XB,YB MOV AX,03 ;RETORNA BX = Edo DE LOS BOTONES Y INT 33H ;RETORNA CX= COORD X, DX= COORD Y CMP BX,01 ; SI SE PULSO BOTON IZQ. JE SAL1 MOV AX,CX ; AUXILIAR DE LA COORDENADA HOR MOV CL,3 SHR AX,CL ;DIVIDE COORDENDA X / 8 SHR DX,CL ;DIVIDE COORDENDA Y / 8 MOV CX,AX ;RECUPERANDO LA COORDENADA PARA MODO CMP CX,XB ; sI EXISTE MOVIMIEMTO ?

SAL3:

TEXTO

SAL2: SAL1: P_MOUSE CONV

JNE CMP JE MOV MOV RET ENDP PROC MOV MOV LEA CMP JB DIV OR MOV DEC OR MOV RET ENDP

SAL2 DX,YB SAL3 XB,CX YB,DX

; SI ;NO ;REFRESCO DE COORDENADAS

C1:

NEAR VALASC,2020H CX,10 SI,VALASC+1 AX,CX C1 CL AH,30H [SI],AH SI AL,30H [SI],AL

;LIMPIANDO VALASC ; FACTOR DE DIVISIN ;AX CONTIENE LA COORDENADA ; SI ES MENOR ; SI MAYOR DIVIDE ;RESIDUO

;COCIIENTE

CONV

DESPLIEGA PROC NEAR ; Servicio 40h :manejador de archivo para despliegue en pantalla MOV MOV MOV LEA INT RET ENDP PROC PUSH MOV MOV INT POP RET ENDP PROC PUSH MOV INT POP RET ENDP AH,40H BX,01 ;Nmero de dispositivo: 1 = pantalla CX,11 ;Total de caracteres a desplegar DX,DESPDATO ; Area a desplegar 21H

DESPLIEGA INITTEXT

NEAR AX AH,00H AL,03H 10H AX

INITTEXT PRINTF

NEAR AX AH,09H 21H AX

PRINTF

TEXTBACKGROUND

PROC PUSH PUSH PUSH PUSH MOV MOV MOV MOV

NEAR AX BX CX DX AX,0600H BH,FPP CX,YXI DX,YXF

TEXTBACKGROUND GOTOXY PROC PUSH PUSH PUSH MOV MOV MOV INT POP POP POP RET ENDP MAIN

INT POP POP POP POP RET ENDP

10H DX CX BX AX

NEAR AX BX DX AH,02H BH,00H DX,YXI 10H DX BX AX

GOTOXY END

También podría gustarte