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:
Espero que me puedan dar una idea de como continuar
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