posiciones del cursor del ratón

Moderador: Eternal Idol

posiciones del cursor del ratón

Notapor chouki » Mar Feb 02, 2010 11:30 am

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 :
  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.  

gracias de antemano por su ayuda
saludos
chouki
Nuevo miembro
 
Mensajes: 10
Registrado: Sab Oct 24, 2009 12:25 pm

Re: posiciones del cursor del ratón

Notapor Eternal Idol » Mié Feb 03, 2010 5:38 pm

http://www.ctyme.com/intr/rb-5959.htm



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

  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
ASM: 01/08/05. C\C++: 03/05/07.

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


Imagen ImagenImagenImagen


Imagen
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
Avatar de Usuario
Eternal Idol
Miembro Hall of Fame
 
Mensajes: 4592
Registrado: Vie Jun 04, 2004 9:55 am
Ubicación: Europa (VdL) Argentina (ar)

Re: posiciones del cursor del ratón

Notapor chouki » Mié Feb 03, 2010 5:58 pm

hola
maestro acabo de comprobarlo y no tira?
no sé que es lo que está fallando???????
gracias por su respuesta
sal2
chouki
Nuevo miembro
 
Mensajes: 10
Registrado: Sab Oct 24, 2009 12:25 pm

Re: posiciones del cursor del ratón

Notapor Eternal Idol » Mié Feb 03, 2010 8:16 pm

¿Que cosa exactamente? ¿Lo depuraste?
ASM: 01/08/05. C\C++: 03/05/07.

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


Imagen ImagenImagenImagen


Imagen
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
Avatar de Usuario
Eternal Idol
Miembro Hall of Fame
 
Mensajes: 4592
Registrado: Vie Jun 04, 2004 9:55 am
Ubicación: Europa (VdL) Argentina (ar)

Re: posiciones del cursor del ratón

Notapor chouki » Dom Feb 07, 2010 5:03 pm

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:
  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.  

es algo de mejora preo no esta del todo en condiciones
necesito vuestra magia
saludos
gracias a todos por vuestra colaboraciçon
chouki
Nuevo miembro
 
Mensajes: 10
Registrado: Sab Oct 24, 2009 12:25 pm

Re: posiciones del cursor del ratón

Notapor Toph » Lun Feb 08, 2010 5:31 pm

chouki escribió:os adjunto la parte que se encarga de escribir en cada posición de la pantalla:
  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.  


: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:
  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.  

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

Imageshack , Google , wine y cutepdf Rock!!!
Imagen
http://foros.solocodigo.com
programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
El 2009 no fué ¿Sera el 2010 el año que tanto he deseado?
Imagen
Avatar de Usuario
Toph
Miembro MUY activo
 
Mensajes: 411
Registrado: Vie Mar 17, 2006 5:44 pm
Ubicación: San Salvador El Salvador (sv)

Re: posiciones del cursor del ratón

Notapor chouki » Lun Feb 08, 2010 5:38 pm

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
chouki
Nuevo miembro
 
Mensajes: 10
Registrado: Sab Oct 24, 2009 12:25 pm


Volver a ASM (Ensamblador)

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado