[PC]Ensamblador y raton

Tengo un problema a la hora de detectar si se ha pulsado el boton derecho del raton. Mi codigo es el siguiente:



;-------------------------------------------------------
; PROCEDIMIENTO PARA OBTENER EL ESTADO DEL RATON
;-------------------------------------------------------
Estado_Raton PROC
push ax
push bx
push cx
push dx

mov ax, 0005
int 33h

shr cx,1 ;Para dividir entre dos, basta con desplazar un bit a la derecha
mov Mouse_PosX, cx
mov Mouse_PosY, dx
mov Mouse_EstadoPressed, bx

pop dx
pop cx
pop bx
pop ax

ret
Estado_Raton ENDP




Y donde tengo el problema es en esta parte:


call Estado_Raton
mov bx,Mouse_EstadoPressed
and bx,2 ;Nos interesa el segundo bit
cmp bx,2 ;Comparamos si esta activado
je comienza_gestion_accion_raton ;Si es asi, lo procesamos

El problema es que NO efectua el salto a donde tiene que ir. Y no lo comprendo, porque estoy haciendo el and con el bit correcto y a continuacion lo comparo.

Ayuda por favor :'(
Solo he mirado por encima, y veo que dices que te interesa el ultimo bit, pero el and lo haces con 2, cuando debe ser con 1.

Saludos
Fallo mio, es una cosa que se me olvido re-comentar.

EL tema es, en Mouse_EstadoPressed se guarda en cada bit el estado de un boton

Cuando el bit menos significativo (el 0) vale 1, significa que se ha pulsado el raton el boton izquierdo
Cuando el bit 1 esta activado, significa que se ha pulsado el raton el boton derecho

PD: Resuelto, digamos que he sido MUY burro y copie el registro de estado equivocado. En la funcion para leer el estado del raton copie en Mouse_EstadoPressed dx, cuando tenia que copiar ax

Mas info aqui:
http://heim.ifi.uio.no/~stanisls/helppc/int_33-5.html

Disculpad las molestias
2 respuestas