Este programa lo desarrolle para una conocida que estudia en la UCAB, este programa sirve para conocer la posicion instantanea del puntero del Mouse cuando trabajas en modo grafico.
1: .model small 2: .286 3: .stack 4: .data 5: 6: posicionx dw 0 7: posiciony dw 08: convx db 'posicion x: '
9: posxasc db 0,0,010: db ' posicion y: '
11: posyasc db 0,0,0 12: db 24h; $ 13: valor db 0 14: .code 15: 16: ;*********************************************************** 17: ; Integrantes: Mariangelica Roa y Maria Mercedes Mongiat 18: ; PROYECTO # 1 19: ; Prof: Jose Musso 20: ;*********************************************************** 21: 22: 23: 24: 25: 26: inicio: 27: 28: mov ax,@data ; inicializando ell segmento de data 29: mov ds,ax30: call pantalla
31: jmp aqui 32: 33: pantalla: 34: mov ax,0600h 35: mov bh,3ah 36: mov cx,0000h 37: mov dx,184fh 38: int 10h 39: mov ah,00 40: mov al,12h ; modo gr fico resolucion 640x480 41: int 10h 42: ret 43: 44: aqui: 45: mov ax,0h ; habilitando el raton 46: int 33h 47: mov ax,01h ; mostrar el cursor 48: int 33h 49: 50: aqui2: 51: mov si,offset posxasc ; cada vez que se mueva el mouse se inicializa la posicionx y saca la posicionx actual 52: mov byte ptr[si],0
53: mov byte ptr[si+1],0
54: mov byte ptr[si+2],0
55: mov si,offset posyasc ; cada vez que se mueva el mouse se inicializa la posiciony y saca la posiciony actual 56: mov byte ptr[si],0
57: mov byte ptr[si+1],0
58: mov byte ptr[si+2],0
59: mov ah,02h ; servicio para mover el cursor en la posicion cx,dx 60: mov bh,0 61: mov dl,0 62: mov dh,27 63: int 10h 64: mov ah,09h ; para refrescar el rea a imprimir 65: mov dx, offset convx 66: int 21h 67: mov ah,01h ; verificar si hay una tecla presionada 68: int 16h 69: jz mostrar70: call serial
71: jmp fin 72: 73: mostrar: 74: mov ax,03h ; mostrar el estado del mouse 75: int 33h 76: mov posiciony,dx ; int 33,3 guarda en cx la posicion de filas 77: mov posicionx,cx ; y en dx posicion de columnas 78: mov bx,posicionx 79: mov si,offset posxasc80: call conversion
81: mov bx,posiciony 82: mov si,offset posyasc83: call conversion
84: mov ah,02h ; servicio para mover el cursor en la ppposicion cx,dx (fila,columna) 85: mov bh,0 ; pagina 0 86: mov dl,0 ; columna 0 87: mov dh,27 ; fila 27 88: int 10h 89: mov ah,09h ; para imprimir 90: mov dx,offset convx 91: int 21h92: call oscilo
93: jmp aqui2 94: jmp fin 95: 96: conversion: ; CONVERSION DE HEX A ASC 97: cmp bx,0 98: je noconversion99: inc byte ptr[si+2]
100: cmp byte ptr[si+2],9 ; ¨byte ptr[si+2]>9?
101: jb decpos ; decremento posicion102: mov byte ptr[si+2],0 ; le asigno 0 a byte ptr[si+2]
103: inc byte ptr[si+1]
104: cmp byte ptr[si+1],9 ;¨byte ptr[si+1]>9?
105: jb decpos ; decremento posicion106: mov byte ptr[si+1],0 ; le asigno a byte ptr[si+1]
107: inc byte ptr[si] ; el m ximo valor de si oscila entre 6 y 7
108: 109: decpos: 110: dec bx 111: jmp conversion 112: 113: noconversion:114: or byte ptr[si],30h ; apunta al parametro byte apuntado por si
115: or byte ptr[si+1],30h
116: or byte ptr[si+2],30h
117: ret 118: 119: oscilo: 120: mov ax,posiciony ; la m x posicion de y es 640/16 da 40 121: mov cl,40 ; si el valor que entra a posiciony es dividido 122: div cl ; entre 40 me va a decir en que columna estoy
123: mov bx,ax 124: ror bx,4 125: mov cx,0 126: mov ax,0 127: mov ax,posicionx ; la m x posicion de x es 480/16 da 30 128: mov cl,30 ; si el valor que entra a posicionx es dividido 129: div cl ; entre 30 me va a decir en que fila estoy
130: mov bl,al 131: mov valor,bl 132: mov dx,378h 133: out dx,ax 134: ret 135: 136: serial: 137: mov ah,0 138: mov al,11110111b ;(111)9600 baudios,(10)no (paridad) 139: int 14h ;(1)2 bits de parada, (11) 8 bits de datos 140: jmp envio 141: 142: envio: 143: mov ah,1 144: mov al,valor 145: int 14h 146: mov dx,3F8h 147: out dx,al 148: 149: 150: fin: 151: 152: mov ah,0 ; reestablecer modo texto 153: mov al,3 154: int 10h 155: mov ax,4c00h 156: int 21h157: end inicio
158: 159: end