estoy interesado en hacer un programa en ensamblador que me permite a cada vez que pulso p.e el botón izquierdo del ratón en cualquier posición de la pantalla (modo texto) me imprime un carácter.
lo que no sé exactamente cómo puedo obtener en cualquier momento las posiciones del ratón sabiendo que existe una función con el registro ax=3 del servicio 33h que me permite obtener las coordenadas del cursor,el problema a la hora de mostrar dicho carácter en la pantalla,como estoy trabajando en modo texto lo que hago es X 160 (el valor de la fila) X2(el valor de la columna),para escribir el carácter en una posición concreta.
os adjunto una muestra del código,corregirme si me equivoco please :
- datos segment
- datos ends
- pila segment stack
- db 100 dup('?')
- pila ends
- codigo segment
- assume cs:codigo,ds:datos,ss:pila
- inicio:
- mov ax,datos
- mov ds,ax
- ;comprobarl la existencia del driver del ratón
- mov ax,0
- int 33h
- cmp ax,0
- je salir
- ;mostrar el cursor
- mov ax,01h
- int 33h
- ; comprobar la pulsación del botón izquierdo
- btn_i :
- mov ax,5
- mov bx,0
- int 33h
- cmp bx,1
- jae izk
- jmp btn_i
- izk : mov ax,03h
- shl cx,3
- add cx,1
- shl dx,3
- add dx,1
- mov columna,cx
- mov fila ,dx
- int 33h
- mov ax,0b800h
- mov es,ax
- mov byte ptr es:c[fila *160+clumna*2],'A' ;aqui en principio tengo que pasarle las coordenadas del cursor para mostrar el dato
- mov byte ptr es:[fila*160+columna*2+1],00010111b
- mov ax,5
- mov bx,0
- int 33h
- cmp bx,1
- jae izk
- jmp salir
- salir : mov ax,4ch
- int 21h
- codigo ends
- end inicio
gracias de antemano por su ayuda
saludos






Si lo tenes asi como lo has puesto, no funciona porque no pones la interrupcion que lee la posicion del cursor, debes de ponerla asi:

