Test Foro de elhacker.net SMF 2.1

Programación => Programación General => ASM => Mensaje iniciado por: FERNIIIIN en 28 Mayo 2019, 06:23 AM

Título: crear interrupción por hardware
Publicado por: FERNIIIIN en 28 Mayo 2019, 06:23 AM
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
Título: Re: crear interrupción por hardware
Publicado por: cpu2 en 29 Mayo 2019, 22:41 PM
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.
Título: Re: crear interrupción por hardware
Publicado por: FERNIIIIN en 17 Junio 2019, 05:07 AM
lamento la respuesta tardía, lo realice y me funciono.
:-[ :-[

Gracias, por tu apoyo.