tengo una tarea q es hacer una calculadora conversion, usando el mouse, y al dar clip a los numeros aparezcan como en una calculadora y al darle clip a una de las opciones aparezca el resultado, la pregunta es, como hago para q al darle clip me aparezca el numero en un cuadro pequeño y de hay lo lea como variable para dspues realizar un tipo de conversion ya sea binario, decimal o hexadecimal. esto es lo q tengo hasta ahora.
include lib1_b.txt
.model small ;modelo del programa
.stack 100h
.code
inicio proc
MOV AX, @data
MOV DS, AX ; Se ubica el segmento de datos
MOV AH,0 ; Ajusta modo video y limpia pantalla
MOV AL,3 ; Modo de video
mov ax, 0600h
mov cx, 0000h
mov dx, 184fh
mov bh, 01fh
INT 10H ; Llama a la INT de video
jmp pant1
MOV AH,1 ;Espera tecla por medio del DOS
INT 21H
jmp pant2
MOV AH,0 ; Ajusta modo video y limpia pantalla
MOV AL,3 ; Modo de video
INT 10H
ENDP
;-------pantallas----------
pant1:
gotoxy 5,24
escribe msg1 ; Imprimir el 1er mensaje
gotoxy 8,28
escribe msg2 ; Imprimir el 2do mensaje
gotoxy 11,30
escribe msg10
MOV AH,1 ;Espera tecla por medio del DOS
INT 21H
;----------pantalla 2---------------
pant2:
MOV AH,0 ; Ajusta modo video y limpia pantalla
MOV AL,3 ; Modo de video
mov ax, 0600h
mov cx, 0000h
mov dx, 184fh
mov bh, 08fh
INT 10H
gotoxy 04,20
escribe msg3 ; Imprimir el 3er mensaje
gotoxy 06,22
mov ax, 600h
mov cx, 1718h
mov dx, 0727h
mov bh, 0F0h
INT 10H
gotoxy 10,22 ; Imprimir el num 7 mensaje
escribe msg14
gotoxy 10,32
escribe msg15 ; Imprimir el num 8 mensaje
gotoxy 10,42
escribe msg16 ; Imprimir el num 9 mensaje
gotoxy 13,22
escribe msg11
gotoxy 13,32
escribe msg12
gotoxy 13,42
escribe msg13
gotoxy 16,22
escribe msg6
gotoxy 16,32
escribe msg5
gotoxy 16,42
escribe msg4
gotoxy 19,32
escribe msg17
gotoxy 10,50
escribe msg18
gotoxy 13,50
escribe msg19
gotoxy 16,50
escribe msg20
gotoxy 22,2
escribe msg7 ; Imprimir el 6to mensaje
gotoxy 19,10
call mouse
; call COMPARA
call salir
ret
;------leer desde teclado---------
MENSAJE PROC
MOV AH,9
INT 21H
RET
ENDP
LEER PROC
MOV AH,1
INT 21H ; EL DATO QUEDA EN AL
RET
ENDP
CURSOR PROC
MOV AH,2
MOV DL,X
MOV DH,Y
INT 10H ;Coloca cursor para dezplegar mensaje
RET
ENDP
;--------------mouse-------------
mouse proc
mov ax, 0 ;INICIALIZA EL MOUSE
int 33h
mov ax, 1 ;MUESTRA EL APUNTADOR DEL MOUSE
int 33h
BOTON:
mov ax, 3 ;OBTIENE EL ESTADO DEL BOTON Y LA POSICION DEL APUNTADOR
int 33h
cmp bx,1 ; both buttons
MOV POS,DX
je calcu
jmp boton
RET
ENDP
;-----------Calculadora compara---------
calcu proc ; compara la fila con la columna si coinside salta al
;DX FILA CX COLUMNA ; numero correspondiente
CMP CX,176
CMP DX,80 ;4=34H
JBE siete ;Salta si es igual
CMP CX,256
CMP DX,80 ;5=35H
JBE ocho ;Salta si es igual
CMP CX,336
CMP DX,80 ;6=36H
JBE nueve ;Salta si es igual
CMP CX,176
CMP DX,104 ;4=34H
JBE cuatro ;Salta si es igual
CMP CX,256
CMP DX,104 ;5=35H
JBE cinco ;Salta si es igual
CMP CX,336
CMP DX,104 ;6=36H
JBE seis
CMP CX,176
CMP DX,128 ;4=34H
JBE uno ;Salta si es igual
CMP CX,256
CMP DX,128 ;5=35H
JBE dos ;Salta si es igual
CMP CX,336
CMP DX,128 ;6=36H
JBE tres
CMP CX,256
CMP DX,152 ;6=36H
JBE cero
CMP CX,400
CMP DX,80 ;6=36H
JBE bin
CMP CX,400
CMP DX,104 ;6=36H
JBE deci
CMP CX,400
CMP DX,128 ;6=36H
JBE hexa
;jmp pant2
;ret
endp
;--------calcu mostrar valores si es uno deberia dar clip izq y mostrarlo en el cuadro en
; blanco de pan2 ------
uno:
;call pant2
gotoxy 07,28
escribe msg4 ; Direccion del mensaje
JMP calcu
dos:
;call pant2
gotoxy 07,29
escribe msg5 ; Direccion del mensaje
JMP calcu
tres:
;call pant2
gotoxy 07,30
escribe msg6 ; Direccion del mensaje
JMP calcu
cuatro:
;call pant2
gotoxy 07,30
escribe msg11 ; Direccion del mensaje
JMP calcu
cinco:
; call pant2
gotoxy 07,31
escribe msg12 ; Direccion del mensaje
JMP calcu
seis:
;call pant2
gotoxy 07,32
escribe msg13
JMP calcu
siete:
; call pant2
gotoxy 07,33
escribe msg14
JMP calcu
ocho:
;call pant2
gotoxy 07,34
escribe msg15 ; Direccion del mensaje
JMP calcu
nueve:
;call pant2
gotoxy 07,35
escribe msg16 ; Direccion del mensaje
JMP calcu
cero:
;call pant2
gotoxy 07,36
escribe msg17 ; Direccion del mensaje
JMP calcu
;-------------------comparar------------
;COMPARA PROC
; CMP AL,61H
; JE uno
;; CMP AL,32H
;; JE dos
;; CMP AL,33H
;; JE tres
; CMP AL,34H
; JE SALIR
; JMP pant2
; RET
;ENDP
;---------Salir------------
salir:
MOV AH,0
MOV AL,4
INT 10H
MOV AH,4CH
INT 21H
RET
OTRO PROC
MOV X,30
MOV Y,20
CALL CURSOR
LEA DX,MEN6
CALL MENSAJE
RET
ENDP
--------------Mensaje segun la tecla-----------
bin:
mov SI,6
mov Ah,00h;Aseguramos residuo de 0
mov Al,num
mov Bl,2
div Bl
mov var1,Ah
mov num,Al
mov dl,var1
add dl,30h
mov cad[SI],dl;Concatenamos resultados
cmp num,1 ;Hacemos comparación
dec SI
jne uno ;Indicamos volver a etiqueta bin o:
je salida ;Ir a etiqueta salir
cmp num,0 ;Comparación con 0
jne uno
je salida
salida:
MOV AH,0 ; Ajusta modo video y limpia pantalla
MOV AL,3 ; Modo de video
mov ax, 0600h
mov cx, 0000h
mov dx, 184fh
mov bh, 08fh
INT 10H
gotoxy 04,20
escribe msg3 ; Imprimir el 3er mensaje
gotoxy 06,22
mov ax, 600h
mov cx, 1718h
mov dx, 0727h
mov bh, 0F0h
INT 10H
;Etiqueta de salida
gotoxy 07,31
mov dl,num ;Proceso para imprimir cadena final con número binario
add dl,30h
mov cad[SI],dl
;mov ah,09h
; lea Dx,cad
; int 21h
MOV AH,1
INT 21H
JMP pant2
deci:MOV AH,0
MOV AL,3
INT 10H ;
MOV AH,2
MOV DL,15
MOV DH,10
INT 10H ;Coloca el cursor para el primer mensaje
gotoxy 8,30
MOV AH,9H
LEA DX,MEN4 ;Despliega primer mensaje
INT 21H
gotoxy 10,30
MOV AH,9H
LEA DX,mensd1
INT 21H
gotoxy 11,30
MOV AH,9H
LEA DX,mensd2
INT 21H
gotoxy 12,30
MOV AH,9H
LEA DX,mensd3
INT 21H
gotoxy 13,30
MOV AH,9H
LEA DX, mensd4
INT 21H
gotoxy 14,30
MOV AH,9H
LEA DX, mensd5
INT 21H
gotoxy 15,30
MOV AH,9H
LEA DX, mensd6
INT 21H
gotoxy 17,30
MOV AH,9H
LEA DX, mensd7
INT 21H
MOV AH,1
INT 21H
JMP pant2
hexa:MOV AH,0
MOV AL,3
INT 10H ;
MOV AH,2
MOV DL,15
MOV DH,10
INT 10H ;Coloca el cursor para el primer mensaje
gotoxy 8,30
MOV AH,9H
LEA DX,MEN5 ;Despliega primer mensaje
INT 21H
gotoxy 10,30
MOV AH,9H
LEA DX,menst1
INT 21H
gotoxy 11,30
MOV AH,9H
LEA DX,menst2
INT 21H
gotoxy 12,30
MOV AH,9H
LEA DX,menst3
INT 21H
gotoxy 13,30
MOV AH,9H
LEA DX, menst4
INT 21H
gotoxy 14,30
MOV AH,9H
LEA DX, menst5
INT 21H
gotoxy 15,30
MOV AH,9H
LEA DX, menst6
INT 21H
gotoxy 17,30
MOV AH,9H
LEA DX, menst7
INT 21H
MOV AH,1
INT 21H
JMP pant2
END inicio ; Fin del programa
usando esta libreria
include lib2_b.txt
.data ;Espacio de datos y mensajes
msg1 DB 'UNIVERSIDAD ','$'
msg2 DB 'Dayana','$'
msg10 DB 'Arqui','$'
msg3 DB 'Calculadora de conversion','$'
msg4 DB '1','$'
msg5 DB '2 ','$'
msg6 DB '3','$'
msg11 DB '4','$'
msg12 DB '5','$'
msg13 DB '6','$'
msg14 DB '7','$'
msg15 DB '8','$'
msg16 DB '9','$'
msg17 DB '0','$'
msg18 DB 'Binario','$'
msg19 DB 'Decimal','$'
msg20 DB 'Hexadecimal','$'
msg7 DB 'Presione 4 para salir','$'
msg8 DB 'Precione cualquier tecla','$'
msg9 DB 'Presione 5 para regresar al menu principal','$'
MEN6 DB 'Presione cualquier tecla ','$'
x db '?' ;declaración de variables
y db '?'
pos dW '?'
cad db 9 dup (' '),'$'
var1 db ?
num db ?
aux db ?
lee Macro Dato
mov ah,1
int 21h
escribe msg1
mov Dato,al
endm
escribe Macro Vari
lea dx,Vari
mov ah,9
int 21h
endm
gotoxy Macro Fil,Col
mov ah,02h
mov bh,00
mov dh,Fil ;fila
mov dl,Col ;columna
int 10h
endm
getch Macro
mov ah,1
int 21h
endm
q incluye esta otra libreria
getcha Macro
mov ah,1
int 21h
getch
endm
si alguien puede ayudarme se lo agradecería o darme una idea de como realizarlo. Gracias de ante mano.