Ensamblador - Simular que se presiona una TECLA

 
Vista:

Simular que se presiona una TECLA

Publicado por chema (2 intervenciones) el 25/11/2008 20:03:52
Hola a todos, necesito hacer COMO si presionara la tecla ENTER desde el teclado, osea simular.

Espero que me puedan ayudar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Simular que se presiona una TECLA

Publicado por vaca_loca (12 intervenciones) el 26/11/2008 23:47:42
Tal vez usando la interrupción 16h función 05h.

vaca_loca
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE: Tienen error todavia, aki esta el codigo

Publicado por chema (2 intervenciones) el 27/11/2008 03:53:40
Hice lo que dijiste (usando la interrupción 16h función 05h), pero me falto aclarar algo,
quiero leer el numero de tecla que "pulse" con otra función.

lo que hice fué lo siguiente:

MOV CH, 0DH ; La tecla que quiero enviar
MOV CL, 1CH ; El código de rastreo de la misma
MOV AH, 05H ; La función para Escritura en el teclado
INT 16H

; a eso le agregué el siguiente código según yo para que me capturara la tecla "pulsada":

MOV AH, 10H; Función de léctura de un carácter del teclado
INT 16H

; Según leí en un libro de ensamblador ésta última función me devuelve el código de rastreo en AH, y el código ASCII en AL
el problema esque me devuelve cero (vacio).

Talvés me está faltando algo, porfavor ayudaaaa.

Chema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE: Tienen error todavia, aki esta el codigo

Publicado por vaca_loca (12 intervenciones) el 04/12/2008 03:28:00
El código que pasaste está bien .

Sucede que reacciona diferente dependiendo de si lo ejecutas directamente ,
en ese caso te conserva los valores que ingresaste al buffer de teclado.

Si lo compruebas con un debugger paso a paso, los valores varían (supongo que
la interrupcion 09h te modifica el buffer entre paso y paso o algún flag), aparte,
la misma INT 16 función 10 queda esperando una pulsación.

Si estas usando un debugger prueba poner un único breakpoint para ver AX justo
después de la INT 16h Función 10h y corre el código ; lo he probado con Turbo Debugger y Soft-ICE.

atentamente
vaca_loca
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ensamblador

Publicado por SAMUEL (1 intervención) el 13/11/2015 03:44:06
cual es el puerto de la tecla bloq mayus para activarla en ensamblador TASM

es que la quiero activar si se encuentra desactivada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ensamblador

Publicado por Manolo (2 intervenciones) el 17/11/2015 10:52:14
Hola:
En la posición de memoria 0040:0017 y 0040:0018 se encuentran dos bytes cuyos bits muestran el estado de las teclas modificadoras. Concretamente en 004:0017:
Bit__Tecla
7---->Insert
6---->CapsLock
5----->NumLock
4----->ScrollLock
3----->Tecla Alt
2----->Telca Ctrl
1----->Mayúscula Izda
0----->Mayúscula dcha.

Cuando el bit correspondiente (7,6,5 y 4) está a 1 significa que el modo está conectado. Y en 3,2,1 y 0 significa que la tecla está "pulsada".
Si quieres activar CapsLock o Bloqueo mayúsculas, sólo tienes a activar a 1 el bit correspondiente en esa posición de memoria.

sub ax,ax
mov es,ax
mov al,01000000b
or es:[417h],al


fuerzas directamente el bit de estado de la tecla CapsLock a estado "activado".

Un saludo.
Manolo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Simular que se presiona una TECLA

Publicado por Manolo (2 intervenciones) el 17/11/2015 10:36:39
Hola:
Creo que lo mejor y más cómodo es "introducir" la "tecla" que quieres en el buffer de teclado. El buffer es una cola circular tipo FIFO y consta de 32 bytes. Puede almacenar 15 pulsaciones, y utiliza 2 bytes para cada pulsación. Los 2 bytes restantes almacenan los punteros de "cabeza" y "cola" del buffer. Los 32 bytes del buffer comienzan en 0040:001E y los punteros de cabeza y cola están en 0040:001A y 0040:001C respectivamente. Creo que lo de debes hacer es:
1 -. Limpiar el buffer de teclado.
2.- Desactivar las interrrupciones para evitar las pulsaciones no deseadas.
3.- Introducir el código ASCII correspondiente a la tecla "Enter" en el buffer, en la posición que indica el puntero de cola.
4.- Incrementar en 2 el valor del puntero de cola. Ten en cuenta que al ser una cola circular, si el valor es 003C (última posición), hay que poner 001E (primera posición).
5.- Activar interrupciones.

El resultado será exactamente el mismo que si pulsaras Enter en el teclado. Incluso podrás capturarla con la función C de INT 21H.

Un saludo.
Manolo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Simular que se presiona una TECLA

Publicado por Requeteprogramador (81 intervenciones) el 17/11/2015 20:05:43
También puede usar la función 5 de la int 16h de la bios, todo suponiendo que sea para ms-dos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar