elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Ayuda código detección si se presionó tecla
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda código detección si se presionó tecla  (Leído 9,066 veces)
0x0309

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Ayuda código detección si se presionó tecla
« en: 18 Julio 2009, 01:38 am »

Hola, quiero conseguir emular la función kbhit() de conio.h pero para dos.
Conseguí el siguiente código en este libro (1001 trucos para DOS y PC y 111 Trucos más de DOS 6 - Kris Jamsa)

que se ensambla con el debug.exe así:

Código:
N CHECKKEY.COM

A 100
MOV AH,B
INT 21
AND AL,1
MOV AH,4C
INT 21

R CX
A
W
Q



Funciona, pero el problema es que tengo es que no me reconoce las teclas de las flechas. Alguien que sepa de ensamblador podría por favor ayudarme con el código de arriba, qué le falta para que me detecte las teclas de las flechas.


Yo lo construyo así dentro de cmd:
Código:
debug.exe < arhivo.txt

y lo pruebo con este batch:

Código:
@ECHO OFF
:ini
cls
CHECKKEY.COM
if errorlevel 1 echo.Presiono una tecla&pause
goto ini

Cuando presiono una tecla como las del abecedario, el espacio, cambia el errorlevel, pero cuando presiono las flechas o las teclas insertar, avanzar página no las detecta, y se marea para seguir detectando.


« Última modificación: 18 Julio 2009, 01:58 am por 0x0309 » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Ayuda código detección si se presionó tecla
« Respuesta #1 en: 18 Julio 2009, 08:58 am »

No me parece una forma muy util realmente ... para probar lo logico seria hacer un bucle y ensamblar el codigo.

Esto es lo que estas usando:
http://www.ctyme.com/intr/rb-2565.htm

Y con estas dos si funcionan todas las teclas:
http://www.ctyme.com/intr/rb-1755.htm
http://www.ctyme.com/intr/rb-1754.htm

Primero haces el check y si hay tecla entonces la lees, sino la siguiente vez te dira que hay tecla por la anterior.

La logica de la funcion vendria a ser algo asi:

Código
  1. kbhit:
  2.  mov ah, 01h
  3.  int 16h ;llamamos a la BIOS para comprobar si alguna tecla fue pulsada
  4.  pushf ;el resultado esta en el flag Z, sexto bit del registro de flags
  5.  pop ax
  6.  and ax, 64
  7.  ret
  8.  


« Última modificación: 18 Julio 2009, 09:23 am por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
YST


Desconectado Desconectado

Mensajes: 965


I'm you


Ver Perfil WWW
Re: Ayuda código detección si se presionó tecla
« Respuesta #2 en: 18 Julio 2009, 19:16 pm »

No se si es mas o menos a si lo que quieres .

Código
  1. org 100h
  2. bucle:
  3. mov ah,00h
  4. int 16h
  5. cmp al,13
  6. jne @f
  7. mov dx,intro
  8. jmp imprimir
  9. @@:
  10. cmp ah,'M'
  11. jne @f
  12. mov dx,Right
  13. jmp imprimir
  14. @@:
  15. cmp ah,'K'
  16. jne @f
  17. mov dx,left
  18. jmp imprimir
  19. @@:
  20. cmp ah,'H'
  21. jne @f
  22. mov dx,up
  23. jmp imprimir
  24. @@:
  25. cmp ah,'P'
  26. jne @f
  27. mov dx,down
  28. jmp imprimir
  29. @@:
  30. mov byte[Cadena],al
  31. mov dx,Cadena
  32. imprimir:
  33. mov ah,09h
  34. int 21h
  35. jmp bucle
  36. Right db "->",13,10,24h
  37. left db "<-",13,10,24h
  38. up db "[UP]",13,10,24h
  39. down db "[Down]",13,10,24h
  40. intro db '[Intro]',13,10,24h
  41. Cadena db 0,13,10,24h      
« Última modificación: 18 Julio 2009, 19:22 pm por YST » En línea



Yo le enseñe a Kayser a usar objetos en ASM
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Ayuda código detección si se presionó tecla
« Respuesta #3 en: 18 Julio 2009, 20:27 pm »

No YST, mejor consulta la documentacion sobre kbhit.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
YST


Desconectado Desconectado

Mensajes: 965


I'm you


Ver Perfil WWW
Re: Ayuda código detección si se presionó tecla
« Respuesta #4 en: 19 Julio 2009, 00:39 am »

No YST, mejor consulta la documentacion sobre kbhit.
Tienes toda la razón , no lei esa parte o cuando lei el post no estaba
Citar
« Última modificación: Ayer a las 01:58 por 0x0309 »
EDIT:
Según entendi por esta explicación :
Citar
La función kbhit retorna 0 si no se ha registrado una pulsada de tecla; si hay una disponible, entonces el valor retornado es distinto a cero
La función seria algo a si :P
Código
  1. kbhit:
  2. mov ah, 01h
  3. int 16h
  4. jz a1
  5. xor ax,ax
  6. jmp a1.salir
  7. a1:
  8. mov ax,1
  9. .salir:
  10. ret    
« Última modificación: 19 Julio 2009, 00:47 am por YST » En línea



Yo le enseñe a Kayser a usar objetos en ASM
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Ayuda código detección si se presionó tecla
« Respuesta #5 en: 19 Julio 2009, 10:14 am »

Tienes toda la razón , no lei esa parte o cuando lei el post no estaba

Siempre estuvo, en la primera oracion del hilo.

La función seria algo a si

Ahora si, aunque me gusto mas la forma que use para el valor de retorno.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
YST


Desconectado Desconectado

Mensajes: 965


I'm you


Ver Perfil WWW
Re: Ayuda código detección si se presionó tecla
« Respuesta #6 en: 19 Julio 2009, 18:02 pm »

Tienes toda la razón , no lei esa parte o cuando lei el post no estaba

Siempre estuvo, en la primera oracion del hilo.
Entonces ya es hora que me compre lentes :xD
En línea



Yo le enseñe a Kayser a usar objetos en ASM
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda código heuristico detección de virus
Programación Visual Basic
Criscr21 1 2,078 Último mensaje 23 Marzo 2013, 18:40 pm
por BlackM4ster
Deteccion de tecla
.NET (C#, VB.NET, ASP)
Luna71c0 1 2,102 Último mensaje 30 Septiembre 2013, 05:42 am
por El Benjo
Codigo activar un timer con una tecla (F1, F2,F3,etc.)
Programación Visual Basic
Trigger S1Z4BL3 4 4,071 Último mensaje 18 Junio 2014, 18:27 pm
por 79137913
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines