Contar teclas pulsadas
Publicado por Alvaro (2 intervenciones) el 05/06/2005 12:14:16
Pues es que me tengo un lio de la leche...
Estoy empezando con 8086 y tengo un prog q no se como afrontarlo xD
Voy incrementando un contador cada vez q se pulsa una tecla.
Cuando se pulse la tecla ESCAPE quiero sacar un msg por pantalla con el numero de teclas pulsadas hasta entonces...
El codigo es algo asi:
PILA SEGMENT STACK 'stack'
db 128 dup (?)
PILA ENDS
DATOS SEGMENT
msg db 'Se ha pulsado la tecla escape',10,13,'$'
cuenta db 'numero de teclas pulsadas',10,13,'$'
guarda_ip dw ?
guarda_cs dw ?
DATOS ENDS
INTER SEGMENT AT 0
org 4*9
vector_ip dw ?
vector_cs dw ?
INTER ENDS
CODIGO SEGMENT
ASSUME ds:datos, cs:codigo, ss:pila, es:integer
ppal proc far
push dx
sub ax, ax
push ax
mov ax, datos
mov ds, ax
mov ax, inter
mov es, ax
call cambia
bucle: jmp bucle
call restituye
retf
ppal endp
cambia proc
cli
mov ax, vector_ip
mov guarda_ip, ax
mov ax, vector_cs
mov guarda_cs, ax
mov vector_ip, offset rutina
;mov vector_cs, seg rutina
sti
ret
cambia endp
restituye proc
cli
mov ax, guarda_ip
mov vector_ip, ax
mov ax, guarda_cs
mov vector_cs, ax
sti
ret
restituye endp
rutina proc
cli
in al, 60H
test al, 27H
;Aqui es donde me hago el jaleo. No se el codigo de la tecla escape, creo q es el 27H
;SI he pulsado la tecla escape saco por pantalla, y pongo a 0 el contador sino sigo contando...
; alguna sugerencia please...
jnz sigue
mov ah,9
mov dx, offset msg
int 21h
mov ah,9
mov dx, offset msg
int 21h
sigue: mov al, 20H
out 20h, al
sti
iret
rutina endp
CODIGO ENDS
END ppal
Estoy empezando con 8086 y tengo un prog q no se como afrontarlo xD
Voy incrementando un contador cada vez q se pulsa una tecla.
Cuando se pulse la tecla ESCAPE quiero sacar un msg por pantalla con el numero de teclas pulsadas hasta entonces...
El codigo es algo asi:
PILA SEGMENT STACK 'stack'
db 128 dup (?)
PILA ENDS
DATOS SEGMENT
msg db 'Se ha pulsado la tecla escape',10,13,'$'
cuenta db 'numero de teclas pulsadas',10,13,'$'
guarda_ip dw ?
guarda_cs dw ?
DATOS ENDS
INTER SEGMENT AT 0
org 4*9
vector_ip dw ?
vector_cs dw ?
INTER ENDS
CODIGO SEGMENT
ASSUME ds:datos, cs:codigo, ss:pila, es:integer
ppal proc far
push dx
sub ax, ax
push ax
mov ax, datos
mov ds, ax
mov ax, inter
mov es, ax
call cambia
bucle: jmp bucle
call restituye
retf
ppal endp
cambia proc
cli
mov ax, vector_ip
mov guarda_ip, ax
mov ax, vector_cs
mov guarda_cs, ax
mov vector_ip, offset rutina
;mov vector_cs, seg rutina
sti
ret
cambia endp
restituye proc
cli
mov ax, guarda_ip
mov vector_ip, ax
mov ax, guarda_cs
mov vector_cs, ax
sti
ret
restituye endp
rutina proc
cli
in al, 60H
test al, 27H
;Aqui es donde me hago el jaleo. No se el codigo de la tecla escape, creo q es el 27H
;SI he pulsado la tecla escape saco por pantalla, y pongo a 0 el contador sino sigo contando...
; alguna sugerencia please...
jnz sigue
mov ah,9
mov dx, offset msg
int 21h
mov ah,9
mov dx, offset msg
int 21h
sigue: mov al, 20H
out 20h, al
sti
iret
rutina endp
CODIGO ENDS
END ppal
Valora esta pregunta
0