problema con contador que toma segundos del sistema

Iniciado por FERNIIIIN, 26 Mayo 2019, 08:14 AM

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

FERNIIIIN

Hola a todos, estoy creando un contador que toma los segundos del sistema y sigue con el conteo cada segundo y manda a imprimir el mismo, pero tengo un problema en la conversión de 60 a 00 y validarlo al momento de comparar con el segundo actual.

Código (mpasm) [Seleccionar]

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

cpu2

#1
En estos momentos no puedo testear el code, por lo qie dices tienes el problema en convertir el entero 60 a 0? Tiene facil solucion, con una rutina de comparacion y un xor lo tendrias.

Un saludo.

FERNIIIIN

Cita de: cpu2 en 28 Mayo 2019, 00:25 AM
En estos momentos no puedo testear el code, por lo qie dices tienes el problema en convertir el entero 60 a 0? Tiene facil solucion, con una rutina de comparacion y un xor lo tendrias.

Un saludo.


Gracias por responder. Lo que me causa conflicto es el porque después del segundo 60 (00) no pasa al 01, en su lugar se termina el la ejecución.

cpu2