crear interrupción por hardware

Iniciado por FERNIIIIN, 28 Mayo 2019, 06:23 AM

0 Miembros y 1 Visitante están viendo este tema.

FERNIIIIN

Hola a todos, tengo una super pregunta, ¿Como se crea una interrupción por hardware?

Tengo un programa que hace un conteo del 0 al 59 y cuando llega a 60 pasa denuevo al 0 y reinicia el ciclo, hasta ahi voy bien, pero no se como hacer que al presionar la tecla "1" se active un retraso y que al presionar "2" se active otro retraso diferente.


En código tengo lo siguiente:
Código (asm) [Seleccionar]

org 100h

.model small

.stack 100

.data
u db 0
d db 0
v db 0
tiempo db 0

.code

start:
mov cx,00h ; inicializo contador en cero

inicio:
mov tiempo,cl
;call retraso1s  ;salto a retraso de 1s
;call retraso5s  ;salto a retraso de 1s
;call retraso10s ; salto a retraso de 10s
mov cl,tiempo
cmp cl,10 ; compara si en el contador es mayor a 9
jc aumento ;Destino es menor que origen
;jne repite ; sino es verdadera la ultima comparacion regresa a repite
jz separar ;Numeros iguales
jnz separar ;Destino mayor a origen
cmp d,06h
jc inicio ;Destino es menor que origen
jz start ;Numeros iguales

       
separar:
mov al,cl
AAM
mov u,al
mov al,ah
AAM
mov d,al
;cmp d,06h
;jz salir ;Numeros iguales
mov ah,02h
mov dl,d
add dl,30h
int 21h   
mov ah,02h
mov dl,u
add dl,30h
int 21h
inc cl ; incremento el contador en uno
jmp inicio
ret

aumento:
mov dl,cl ; muevo el valor del contador a dl para imprimir
inc cl ; incremento el contador en uno
add dl,30h ; sumo 30h a dl para convertirlo al codigo ascii y poder imprimirlo
mov ah,02h ; funcion para imprimir un caracter
int 21h ; imprimo
jmp inicio
ret       
       

retraso1s:
    MOV     CX, 0FH
    MOV     DX, 4240H
    MOV     AH, 86H
    INT     15H   
ret

retraso4s:
    MOV     CX,3aH
    MOV     DX,9680H
    MOV     AH,86H
    INT     15H   
ret

retraso5s:
    MOV     CX,45H
    MOV     DX,9680H
    MOV     AH,86H
    INT     15H   
ret


retraso10s:
    MOV     CX, 98H
    MOV     DX, 9680H
    MOV     AH, 86H
    INT     15H   
ret


salir:
.exit
end



Espero que me puedan dar una idea de como continuar

cpu2

Hola di no me equivoco la int 15 puede interceptar el teclado, por que no haces un bucle y depende del valor haga una cosa u otra, y luego al finalizar el retraso que vuelva de nuevo al bucle.

Saludos.

FERNIIIIN

lamento la respuesta tardía, lo realice y me funciono.
:-[ :-[

Gracias, por tu apoyo.