• Domingo 6 de Octubre de 2024, 16:38

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Orifiel

Páginas: [1]
1
ASM (Ensamblador) / Programa que imprime parametros del mouse
« en: Domingo 2 de Junio de 2013, 07:22 »
Saludos, tengo un problema con una tarea y pues me he decidido a pedir ayuda a los expertos, se me solicita que realize lo siguiente:

-   Programa que sea capaz de obtener toda la información posible de su ratón y que además pueda desplegarla en pantalla al oprimir el botón izquierdo, así como permita la salida del programa al presionar el botón derecho, finalmente utilizar la impresora para al salir imprimir la información del mouse.

de lo cual ya tengo el programa que muestra la info del mouse y cierra con el boton derecho, pero no encuentro la forma de imprimir la informacion del mouse con la impresora en el puerto LPT, el codigo es este:

SDatos SEGMENT PARA PUBLIC 'DATA'

mens1 db 13,10,'RATON NO INSTALADO$'
mens2 db 13,10,'RATON INSTALADO$'

mens3 DB 13,10,'NUM. DE BOTONES:  $'
Boton DB ?

vermouse DB 13,10,13,10,'VERSION DE DRIVER:'
Version   DB '      $'

tipo DB 10,13,'TIPO DE RATON:$'
instal DB ?
tiposRaton   DB 'Bus   $'
      DB 'Serial$'
      DB 'InPort$'
      DB 'PS/2  $'
      DB 'HP    $'
                  
coordh   DB 10,13,10,13,'COORDENADA HORIZONTAL:  $'

coordv   DB 10,13,'COORDENADA VERTICAL: $'

SDatos ENDS

;Segmento de pila
SPila SEGMENT PARA STACK 'STACK'
   DB 256 DUP (0)
SPila ENDS

;Segmento de código
SCodigo SEGMENT PARA PUBLIC 'CODE'
   ASSUME CS:SCodigo,DS:SDatos,SS:SPila

Raton PROC FAR
   
   MOV AX,sDatos
   MOV DS,AX


;Inicializa el ratón y obtiene el número de botones

   mov ax,00h
   int 33h
   CMP AX,0000
   JE noDriver

   MOV AH,09H
   MOV DX,OFFSET mens2
   INT 21H

   MOV AL,BL   ;guardar los numeros de botones
   MOV AH,0   ;en ascii
   AAM
   OR AL,30H
   mov ds:[Boton],AL   

LAZO:
;muestra toda la informacion requerida

   MOV AX,24H
   INT 33H
   
   MOV SI,OFFSET version
   MOV AL,BH      ;guarda número principal de la
   MOV AH,0      ;versión del driver del ratón
   CALL convertAscii
   
   MOV [SI],'.'
   INC SI
   
   MOV AL,BL      ;guarda numero secundario
   MOV AH,0      ;de la versión del driver del ratón
   CALL convertAscii
   
   DEC CH
   MOV DS:[instal],CH


;obtiene la posicion del puntero
   MOV AX,03H
   INT 33H
   
   MOV AX,CX
   AAM
   OR AX,3030H
   mov si,offset coordh
   MOV ds:[si+27],ax
   
   MOV AX,DX
   AAM
   OR AX,3030H
   mov si,offset coordv
   mov ds:[si+23],ax

   MOV AX,05H   ;Sale del programa al dar click derecho
   MOV BX,01H   
   INT 33H
   
   CMP BL,1
   JZ FIN
   
   MOV AX,05H   ;mostrar informacion al dar click izquierdo
   MOV BX,00H   
   INT 33H
   
   CMP BL,1
   JZ imprimir
   JMP LAZO
   
imprimir:
   CALL informacion
   jmp LAZO
   
noDriver:
   MOV AH,09H
   MOV DX,OFFSET mens1
   INT 21H   
Fin:
   MOV AX,02H
   INT 33H
   
   CALL informacion
   MOV AX,4C00H
   INT 21H         
Raton ENDP


;procedimientos cercanos

informacion PROC NEAR

;imprime el numero de botones
   MOV AH,09H
   MOV DX,OFFSET mens3
   INT 21H

   MOV AH,02H
   MOV DL,DS:[Boton]
   INT 21H

;imprime la version
   MOV AH,09H
   MOV DX,OFFSET vermouse
   INT 21H

;imprime tipo
   MOV AH,09H
   MOV DX,OFFSET tipo
   INT 21H
   
   MOV AL,instal      ;obtengo el numero que pertenece
   MOV BL,7      ;al tipo de raton, lo multiplico por 7
   MUL BL         ;porque cada mensaje tiene 7 caracteres
   MOV CX,AX

   MOV AH,09H
   MOV DX,OFFSET tiposRaton
   ADD DX,CX
   INT 21H   
         
;imprime las coordenadas del puntero
   MOV AH,09H
   MOV DX,OFFSET coordh
   INT 21H

   ;MOV AH,09H
   ;MOV DX,OFFSET coordV
   ;INT 21H   


   RET
informacion ENDP

convertAscii PROC NEAR
   AAM
   OR AX,3030H
   CMP AH,30H
   JE printrunCar
   MOV [SI],AH
   INC SI
   INC SI
printrunCar:
   MOV [SI],AL
   INC SI
   RET
convertAscii ENDP
   
SCodigo ENDS
END Raton

De antemano agradezco la ayuda que me puedan brindar

Páginas: [1]