Título: Ayuda asm 8086 Publicado por: dayana26 en 13 Agosto 2014, 03:55 am 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. :) Título: Re: Ayuda asm 8086 Publicado por: Vaagish en 17 Agosto 2014, 13:13 pm Desde el cel solo puedo decir que jbe salta si es igual o menor el primer operando, me da la impresion que tendrias que usar je
Recuerda que no se hacen tareas, podrias decir exactamente donde esta el error? Título: Re: Ayuda asm 8086 Publicado por: dayana26 en 18 Agosto 2014, 06:30 am hola, eso ya lo hice, me podrian decir si alguien sabe como leo los caracteres desde la pantalla, basicamente el programa es una calculadora usando el mouse unicamente y necesito leer los caracteres desde la pantalla para despues hacer los calculos
tengo esto pero con esto leo desde el teclado :-\ MOV AH,01h INT 21h MOV BH,AL INT 21h MOV AH,BH SUB AX,3030h ;convierte de ascii a binario natural RET Título: Re: Ayuda asm 8086 Publicado por: Vaagish en 18 Agosto 2014, 15:36 pm Yo creo que tenes que usar las coordenadas del mouse, no tratar de leer la pantalla, para eso tendrias que recorrer caracter por caracter hasta llegar a la posicion del mouse, no lo veo util eso.. podes obtener esas coordenadas y saber en que area se hizo click.. me explique bien?
Saludos! Título: Re: Ayuda asm 8086 Publicado por: dayana26 en 19 Agosto 2014, 06:43 am la idea es que solo lea dos numeros de la pantalla y despues al hacer click en binario o decimal haga la conversion
Título: Re: Ayuda asm 8086 Publicado por: Vaagish en 19 Agosto 2014, 19:51 pm Citar la idea es que solo lea dos numeros de la pantalla y despues al hacer click en binario o decimal haga la conversion Claro.. te entendí.. pero lo que yo te digo es que NO leas números de la pantalla.. imagínate que vos sabes en que posición están los números.. yo te decía que obtengas la posición del mouse en el momento que se hace click, la función 03h de la interrupción 10h te puede servir.. Mas acá: Citar http://es.wikipedia.org/wiki/Int_10h Saludos! |