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.
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
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.
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.
Por que no revisas ese AAM.
Saludos.