1
« 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