Ensamblador - vaciar buffer teclado

 
Vista:

vaciar buffer teclado

Publicado por fer (1 intervención) el 16/05/2006 15:07:56
me podrias decir como vaciar el buffer de teclado??
tengo una estructura case,en mi propia interrupcion 9

in al,60h

comparo ...en plan si meto esto haz eso... si meto lo otro haz lo otro...y sino sal...el caso es que va bien...si meto a la primera la tecla....sino no ...

como podria vaciar el buffer de teclado?
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:Simple

Publicado por Ankriman (6 intervenciones) el 18/06/2006 01:26:42
Esta seria la rutina para borrar el buffer:

test:
mov ah,11h ;Comprueba el estado del teclado
int 33h

or al,al
jz Fin ;Si es cero, termina

mov ah,7h
int 33h ;lee un byte.

jmp test

Fin:

Entonces lee todos los bytes del buffer y lo vacia.
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:Simple

Publicado por Geergon (46 intervenciones) el 19/06/2006 06:43:49
Hola! FER

En realidad existen varias formas, ahora mismo voy a escribir dos, pero recuerdo mas maneras que puede funcionar....

Por ejemplo, veo que conoces la interrupcion int 16 del BIOS, pues entonces puedes usar un ciclo con la subfuncion 1 y 0 ( o 11 y 10 para AT/PS2) he implementar, en bajo nivel , la lógica de la siguiente instrucción en pascal:
while keypressed do readkey;
Basicamente es tener un "loop" donde se verifique con int 16,1, si el zero flag = 0 entonces ejecutar int 16,0 y continuar en el ciclo, de lo contrario (ZF <> 0) entonces salir de este ciclo.

O puedes utilizar el "API de Dos" de la siguiente manera:
mov ax ,0C00h;
int 21h

muchas gracias por tu tiempo!
Att: Ge-ergon
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:Simple

Publicado por MAG (1 intervención) el 23/11/2006 18:55:24
DIOOOSSSS, mil putas horas buscando una forma tan simple de borrar el buffer.
He visto hasta procedimientos con 20 lineas.
Muchas gracias. sigue así!!
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