Reloj en ASM

Iniciado por ProcessKill, Febrero 24, 2010, 03:58:34 PM

Tema anterior - Siguiente tema

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

Febrero 24, 2010, 03:58:34 PM Ultima modificación: Junio 03, 2013, 11:28:59 AM por Expermicid
Código: asm
PIC     EQU     20H        
EOI     EQU     20H
TIMER   EQU     10H
NF10    EQU     9H
NRELOJ  EQU     1CH


        ORG 36
F10_IP      DW      ?
F10_CS      DW      0000

        ORG 70H
RELOJ_IP    DW      ?
RELOJ_CS    DW      0000


        ORG 1000H
PULSACIONES     DW      0
PULSADA         DB      0



HORAS           DB      30H
                DB      30H
                DB      ":"
MINUTOS         DB      30H
                DB      30H
FIN             DB      ?
;.........................................



        ORG 5000H
; Rutina de atencion a la interrupcion de f10.
RUTINA_F10:PUSH AX
        INC PULSACIONES
        MOV PULSADA,1       

        MOV AL,EOI
        OUT EOI,AL
        POP AX
        IRET
;...............................................
        ORG 6000H
RUTINA_RELOJ:PUSH AX

        INC MINUTOS+1
        CMP MINUTOS+1,3AH
        JNZ  seis
        MOV MINUTOS+1,30H
        INC MINUTOS
        CMP MINUTOS,36H
        JNZ seis
        MOV MINUTOS, 30H
cuatro:  INC HORAS+1
        CMP HORAS+1,34H
        JNZ cinco
        CMP HORAS,32H
        JNZ cinco
        MOV HORAS,30H
        MOV HORAS+1,30H
        JMP seis
cinco:  CMP HORAS+1,3AH
        JNZ seis
        MOV HORAS+1,30H
        INC HORAS
; Pone el contador del timer a 0
seis:   MOV AL,0
        OUT TIMER,AL
        MOV AL,EOI
        OUT EOI,AL
        POP AX
        IRET
;.............................................
        ORG 2000H
; Modifica los vectores de interrupcion y
; programa al PIC,y al TIMER.

INICIO: CLI


        MOV F10_IP, (OFFSET RUTINA_F10)
        MOV RELOJ_IP, (OFFSET RUTINA_RELOJ)
        MOV AL,0FCH
        OUT PIC+1,AL
        MOV AL,NF10
        OUT PIC+4,AL
        MOV AL,NRELOJ
        OUT PIC+5,AL
        MOV AL,120
        OUT TIMER+1,AL
        MOV AL,0
        OUT TIMER,AL
        MOV BX, OFFSET HORAS
        MOV AL,(OFFSET FIN)-(OFFSET HORAS)

        STI

bucle:  CMP PULSADA,1
        JNZ bucle
        MOV PULSADA,0
        INT 7
        JMP bucle

        END