Código
org 100h .model small .stack 100 .data s0 db 30h s1 db 30h sold db 0 snew db 0 .code .startup init: mov ah,2ch int 21h ;dh =segundos del sistema mov sold,dh call hora add dh, 1 ;dh= segundo se sistema +1 mov snew, dh ;snew es el segundo posterior cmp snew,60 jz seis0 ;Numeros iguales jmp sincronizados sincronizados: mov ah,2ch int 21h ;dh =segundos del sistema mov bl,dh mov bh,snew cmp bl, bh ;compara (new segundo) contra (old segundo + 1) jne sincronizados ;salto si no son iguales jmp init ret seis0: mov ah,2ch int 21h ;dh =segundos del sistema mov sold,dh cmp sold,00 jnz seis0 ;Destino mayor a origen mov sold,00 ;reset sold a 0 call separa mov snew,1 jmp sincronizados ret hora: cmp sold,10 jae separa jmp sincronizados ret separa: mov al,sold AAM mov bx,ax mov ah,02h mov dl,bh add dl,30h int 21h mov ah,02h mov dl,bl add dl,30h int 21h ret
Esto es lo que tengo hecho.
El contador va bien hasta el momento en que va iniciar un nuevo ciclo de conteo (es decir, va del segundo del sistema hasta el 60 o 00) y de ahi se queda en un ciclo, nunca pasa al 01.
Espero que me puedan ayudar