Ensamblador - Contar teclas pulsadas

 
Vista:

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
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:Contar teclas pulsadas

Publicado por Alvaro (2 intervenciones) el 05/06/2005 12:16:43
joder le di al enter modificando el msg y lo envio... O_o

El codigo despues de comprobar la tecla ESCAPE:

;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 ; saco msg tecla esc pulsada
int 21h
mov ah,9
mov dx, offset cuenta ; saco msg de teclas pulsadas
int 21h
mov ah,9
mov dx, ax ; saco num teclas pulsadas
int 21h

xor ax, ax ; pongo a 0 contador

sigue:
inc ax ; incremento
mov al, 20H
out 20h, al
sti
iret
rutina endp
CODIGO ENDS
END ppal

Gracias a todos ;)
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