Programación General > ASM (Ensamblador)
posiciones del cursor del ratón
chouki:
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 --- 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 endsend inicio gracias de antemano por su ayuda
saludos
Eternal Idol:
http://www.ctyme.com/intr/rb-5959.htm
--- Código: ASM ---int 033hmov columna, cxmov fila, dx
Para calcular y mostrarlo (no probe el codigo, necesitaria un MS-DOS real):
--- Código: ASM ---mov ax, filamov cx, 160mul cx mov cx, ax mov ax, columnamov bx, 2mul bx add ax, cx mov byte ptr es:[bx], 'A'mov byte ptr es:[bx+1], 00010111b
chouki:
hola
maestro acabo de comprobarlo y no tira?
no sé que es lo que está fallando???????
gracias por su respuesta
sal2
Eternal Idol:
¿Que cosa exactamente? ¿Lo depuraste?
chouki:
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 --- escribir: ;leer la posición actual del cursor mov ah,3 mov bh,0 mov byte ptr fila,dh mov byte ptr columna,dl shr dh,3 ;divido por 8 el valor de la fila ya que esty trabjando en modo texto 25X80 ¿pixels? shr dl,3 ;divido por 8 el valor de la columna MOV AH,0 MOV AL,DL MOV BX,160 MUL BX ADD AX,CX mov cx, columna shr cx,2 ;multiplicar X2 la columna add ax,cx mov bx,ax mov es:[bx], 'K' mov es:[bx+1], 00010111b jmp bucle fin : mov ah,4ch int 21h es algo de mejora preo no esta del todo en condiciones
necesito vuestra magia
saludos
gracias a todos por vuestra colaboraciçon
Navegación
[#] Página Siguiente
Ir a la versión completa