Programación General > ASM (Ensamblador)

 posiciones del cursor del ratón

(1/2) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa