• Domingo 22 de Diciembre de 2024, 03:07

Autor Tema:  posiciones del cursor del ratón  (Leído 7920 veces)

chouki

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
posiciones del cursor del ratón
« en: Martes 2 de Febrero de 2010, 11:30 »
0
hola
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 :
Código: ASM
  1.  
  2. datos segment
  3.  
  4. datos ends
  5.  
  6. pila segment stack
  7.  
  8.   db 100 dup('?')
  9.  
  10. pila ends
  11.  
  12. codigo segment
  13.  assume cs:codigo,ds:datos,ss:pila
  14.  
  15.  inicio:
  16.           mov ax,datos
  17.      mov ds,ax
  18.  
  19.          ;comprobarl la existencia del driver del ratón
  20.        
  21.           mov ax,0
  22.           int 33h
  23.           cmp ax,0
  24.           je salir
  25.          
  26.          ;mostrar el cursor
  27.          
  28.           mov ax,01h
  29.           int 33h
  30.            
  31.        
  32.  
  33.          ; comprobar la pulsación del botón izquierdo
  34.  
  35.  
  36.   btn_i :  
  37.            mov ax,5
  38.            mov bx,0
  39.            int 33h
  40.            cmp bx,1
  41.            jae izk
  42.            jmp btn_i
  43.  
  44.      
  45.  
  46.   izk :  mov ax,03h
  47.          shl cx,3
  48.          add cx,1
  49.          shl dx,3
  50.          add dx,1
  51.          mov columna,cx
  52.          mov fila ,dx
  53.          int 33h
  54.      
  55.         mov ax,0b800h
  56.         mov es,ax
  57.         mov byte ptr es:c[fila *160+clumna*2],'A'  ;aqui en principio tengo que pasarle las coordenadas del cursor para mostrar el dato
  58.         mov byte ptr es:[fila*160+columna*2+1],00010111b
  59.        
  60.         mov ax,5
  61.         mov bx,0
  62.         int 33h
  63.         cmp bx,1
  64.         jae izk
  65.          
  66.         jmp salir        
  67.  
  68.          
  69.  
  70.   salir :     mov ax,4ch
  71.               int 21h
  72.  
  73.        
  74. codigo ends
  75. end inicio
  76.  
  77.  
  78.          
  79.  
  80.  
  81.  
  82.  
gracias de antemano por su ayuda
saludos

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: posiciones del cursor del ratón
« Respuesta #1 en: Miércoles 3 de Febrero de 2010, 17:38 »
0
http://www.ctyme.com/intr/rb-5959.htm

Código: ASM
  1. int 033h
  2. mov columna, cx
  3. mov fila, dx
  4.  

Para calcular y mostrarlo (no probe el codigo, necesitaria un MS-DOS real):

Código: ASM
  1. mov ax, fila
  2. mov cx, 160
  3. mul cx
  4.  
  5. mov cx, ax        
  6.  
  7. mov ax, columna
  8. mov bx, 2
  9. mul bx
  10.        
  11. add ax, cx
  12.  
  13. mov byte ptr es:[bx], 'A'
  14. mov byte ptr es:[bx+1], 00010111b
  15.  

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

chouki

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: posiciones del cursor del ratón
« Respuesta #2 en: Miércoles 3 de Febrero de 2010, 17:58 »
0
hola
maestro acabo de comprobarlo y no tira?
no sé que es lo que está fallando???????
gracias por su respuesta
sal2

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: posiciones del cursor del ratón
« Respuesta #3 en: Miércoles 3 de Febrero de 2010, 20:16 »
0
¿Que cosa exactamente? ¿Lo depuraste?

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

chouki

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: posiciones del cursor del ratón
« Respuesta #4 en: Domingo 7 de Febrero de 2010, 17:03 »
0
hola
consigo con este codigo mostrar el carácter en pantalla pero no en la posición adecuada,aunque en principio
voy por un buen camino porque por lo menos a cada vez que pulso el botón izquierdo del ratón si muestra el carácter
ahora lo que está fallando son posiciones: :P  :(
os adjunto la parte que se encarga de escribir en cada posición de la pantalla:
Código: ASM
  1.  
  2.  
  3. escribir:
  4.          
  5.          ;leer la posición actual del cursor
  6.           mov ah,3
  7.           mov bh,0
  8.           mov byte ptr fila,dh
  9.           mov byte ptr columna,dl
  10.      
  11.           shr dh,3 ;divido por 8 el valor de la fila ya que esty trabjando en modo texto 25X80 ¿pixels?
  12.           shr dl,3 ;divido por 8 el valor de la columna        
  13.  
  14.           MOV AH,0
  15.           MOV AL,DL
  16.           MOV BX,160
  17.           MUL BX
  18.           ADD AX,CX
  19.        
  20.           mov cx, columna
  21.           shr cx,2              ;multiplicar X2 la columna
  22.                  
  23.           add ax,cx
  24.           mov bx,ax
  25.           mov  es:[bx], 'K'
  26.           mov  es:[bx+1], 00010111b
  27.  
  28.           jmp bucle
  29.  
  30.   fin :
  31.           mov ah,4ch
  32.           int 21h
  33.  
  34.  
  35.  
es algo de mejora preo no esta del todo en condiciones
necesito vuestra magia
saludos
gracias a todos por vuestra colaboraciçon

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: posiciones del cursor del ratón
« Respuesta #5 en: Lunes 8 de Febrero de 2010, 17:31 »
0
Cita de: "chouki"
os adjunto la parte que se encarga de escribir en cada posición de la pantalla:
Código: ASM
  1.  
  2.  escribir:
  3.          ;leer la posición actual del cursor
  4.           mov ah,3
  5.           mov bh,0
  6.           mov byte ptr fila,dh
  7.           mov byte ptr columna,dl
  8.  
  9.  

:huh: 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:
Código: ASM
  1.  
  2.  escribir:
  3.          ;leer la posición actual del cursor
  4.           mov ah,3
  5.           mov bh,0
  6.           int 10h ; Esta es la interrupcion que lee la posicion del cursor siempre que ah=3 y Bh tenga el numero de pantalla actual
  7.  
  8.  
Al volver de la interrupcion ya tendras en dh la fila y en dl la columna para poder manipular esos valores.
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea

chouki

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: posiciones del cursor del ratón
« Respuesta #6 en: Lunes 8 de Febrero de 2010, 17:38 »
0
gracias toph
por tu respuesta,son problemas de coordenadas yaque al pulsar el botón izquierdo se imprime
el carácter pero no en la posición correcta.
gracias por tu colaboración.
sal2