Registros, ensamblador y teclado

Hola a todos!

Necesito una ayudita con el ensamblador... estoy haciendo un programa que lee el estado de teclado, es decir, cuando se pulsa el bloq mayus, el scroll, ctrl, shift...

Para ello utilizo la siguiente interrupción:

Imagen

http://www.imaxenes.com/imagen/dibujo1ev74k7.jpg.html aquí se ve mejor

Como veis me deja en AL el byte de estado de teclado, el problema que tengo es que no se me ocurre la manera de averiguar que bits de ese byte están a 1 para así saber que hay pulsado o no... el profesor me ha dicho que use puertas lógicas pero llevo toda la tarde dandole vueltas y no encuentro la dichosa manera de hacerlo

A ver si alguién me puede iluminar de alguna manera... no pido la solución, pido que alguien me explique como conseguirla o me ponga un ejemplo similar :)


salu2 y gracias de antemano
Hola

Estoy dando ahora codigo en ensamblador, aunque aun no he llegado a la parte del teclado (yo estoy con el 68K de Motorola).

Supongo que si tienes el byte de estado 00010001 puedes hacer una AND con 00000001, luego con 00000010, 00000100 e ir viendo cuales dan resultado 1 (segun cual sea el codigo que de 1 sera una tecla u otra).

No se si eso te puede ayudar o ya lo sabias. De todas formas ahi te lo dejo por si acaso. Saludos!
No puedes usar una comparacion?
Yo que sé es que hace muchos años que no doy ensamblador ( con mi  Arkanoid totalmente realizado por nosotros con pantallas, y toda la pesca + driver Completo de memoria eeprom  con todas sus funciones + un crack para el jeugo para que sólo funcionara con las memorias eeprom que lo tuvieran me parece suficiente )

Puedes por ejemplo si sabes qué posición de memoria es la que tienes que mirar le haces un AND y leugo comparas
Ejemplo
tienes el registro 1000 1001 y quieres ver si el tercer bit está a 1
Le haces un and de 0000 0100 y eso te deja por cojones todos a 0 menos el bit que quieres mirar que se quedará igual
Luego haces una comparación con 0000 0100 y si son iguales es que está a 1

Pero ya te digo que hay mil formas.puedes correr a la izquierda tantas posiciones como te convenga (no me acuerdo del comando pero existir existe ) y comprar el primer bit con 1

Espero haberte ayudado, qué recuerdos ensamblador [+risas] cuantas horas y vidas perdidas (porque el informático tiene muchas vidas que va perdiendo poco a poco )


P.D: Me acabo de acordar de un momento que a todo informático le llega unas 10 000 veces en su vida que es ese magnífico momento en el que terminas, todo te tira, te haces pajas  y todo de lo feliz que estás y dices, mira mamá, esto es lo que he hecho (sustituir mamá por cualquier persona)
Contestación habitual: Ajam.... sí... y tanto para eso? Pues vaya Mierda, eso ya está inventado hijo tienes que dedicarte a hacer cosas que no estén inventadas.
voy a probar a ver si lo consigo como me habeis dicho :D


Salu2 y gracias! [beer]
Aracem escribió:P.D: Me acabo de acordar de un momento que a todo informático le llega unas 10 000 veces en su vida que es ese magnífico momento en el que terminas, todo te tira, te haces pajas  y todo de lo feliz que estás y dices, mira mamá, esto es lo que he hecho (sustituir mamá por cualquier persona)
Contestación habitual: Ajam.... sí... y tanto para eso? Pues vaya Mierda, eso ya está inventado hijo tienes que dedicarte a hacer cosas que no estén inventadas.


Te comprendo totalmente xD
ya está! al final lo hecho como decia Aracem, con SHL que desplaza 1 bit a la izquierda el registro y lo pone en el flag de acarreo

salu2 y gracias
5 respuestas