Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.
Ayuda con este pequeño programa chicos! :)
Enviado por Laura el día 4 de septiembre de 2005
En teoria tiene q contar el numero de teclas pulsadas.
Al dar a la tecla escape se para y saca por pantalla el numero de teclas que hemos pulsado...
Pero no me funciona y me estoy volviendo loca porque no encuentro el error :( Gracias de antemano
es para el 8086:
PILA segment STACK 'stack'
db 128 dup (?)
PILA ends
DATOS SEGMENT
cuenta db 0
bcd db 5 dup(?),'$'
tecla db ?
guarda_ip dw ?
guarda_cs dw ?
DATOS ends
INTER SEGMENT AT 0
org 4*9
vector_ip dw ?
vector_cs dw ?
INTER ends
rutina proc
cli
in al, 60h ; leemos de teclado
mov tecla, al
test al, 80H
jz fin
mov al, cuenta
inc ax
mov cuenta, al
fin: mov al, 20h
out 20h, al
sti
iret
rutina endp
Hola Laura, no he podido cargar tu programa en mi MASM... ¿con que ensamblador lo escribiste y para que SO? Pero es que a parte de eso, no le veo pies ni cabeza (con perdón). Vamos a ver, ¿donde se le asigna el valor a la variable "tecla"?, porque en el procedimiento principal veo un bucle infinito que dejara al procesador colgado:
bucle: test tecla, 27h ; mientras no pulsemos escape seguimos contando (contando ¿que?)
jnz bucle (bucle infinito)
A lo mejor es que estoy tonto, pero no lo entiendo...
Bueno, ya me lo aclararas
Un amigo
P.D. Por cierto, me encanta el nombre de Laura (Sic!)
Re: Re: Re: Re: Ayuda con este pequeño programa chicos! :)
Enviado por dusty2 el día 4 de septiembre de 2005
Vaya, que rápida!!
Vamos a ver, según veo yo la variable "tecla" siempre tendrá el valor "0", cuando la CPU llega a ese bucle, se repetirá indefinidamente porque no hay ninguna llamada en medio al procedimiento que lee el teclado ¿no?
A lo mejor es que no entiendo bién esa sintaxis, pero si el punto de entrada del programa es el procedimiento ppal, entonces está claro...
Re: Re: Re: Re: Re: Ayuda con este pequeño programa chicos! :)
Enviado por Laura el día 4 de septiembre de 2005
Bueno, a mi tp me gusta mucho como esta hecho, pero nos lo enseñaron asi :(
Se su pone q llamas a cambia antes del bucle.
En cambia se llama a la rutina q se ejecuta cada vez q se produce una interrupcion.
De ahi el bucle para que este todo el rato esperando interrupciones...
Luego ya se hace todo en rutina, se lee la tecla, se le asigna a tecla y se incrementa el contador...
Si no no te preocupes xq ya me esta dando muchos dolores de cabeza :) Muchisimas gracias por contestar tan rapido :D
Re: Re: Re: Re: Re: Re: Ayuda con este pequeño programa chicos! :)
Enviado por dusty2 el día 4 de septiembre de 2005
Ah, es un programa para el modo real del 8086! La idea es parchear el vector de interrupciones del teclado ¿no? Pues la variable vector_ip por ejemplo no esta inicializada, así que no estás parcheando las interrupciones... creo que ahí está el problemilla...
Re: Re: Re: Re: Re: Re: Re: Re: Ayuda con este pequeño programa chicos! :)
Enviado por dusty2 el día 4 de septiembre de 2005
Si, la idea es sobreescribir la tabla de interrupciones con la dirección de tu rutina para que cada vez que se pulse una tecla, el SO redirija el IP a tu rutina de lectura y luego vuelva a su rutina normal. La cuestión es que tu no estas reescribiendo esa tabla de interrupciones (no me acuerdo muy bien en que dirección está, yo ya sólo programo ensamblador bajo windows) y cuando se pulsa una tecla la ejecución del programa no se bifurca a tu procedimiento... Vaya! yo tambien me tengo que ir. A hacer un programa de futbol, pero un programa de TV! Odio el futbol! Mañana miraré a ver si lo has resuelto...