Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: FERNIIIIN en 26 Mayo 2019, 08:14 am



Título: problema con contador que toma segundos del sistema
Publicado por: FERNIIIIN en 26 Mayo 2019, 08:14 am
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
  1. org 100h
  2.  
  3. .model small
  4.  
  5.  
  6. .stack 100
  7.  
  8.  
  9. .data
  10. s0      db 30h
  11. s1      db 30h
  12. sold    db 0
  13. snew    db 0
  14.  
  15.  
  16.  
  17. .code
  18. .startup
  19.    init:
  20. mov ah,2ch  
  21. int 21h     ;dh =segundos del sistema
  22.        mov sold,dh
  23.        call hora      
  24. add dh, 1  ;dh= segundo se sistema +1
  25. mov snew, dh ;snew es el segundo posterior
  26.        cmp snew,60
  27. jz seis0  ;Numeros iguales
  28.        jmp sincronizados          
  29.  
  30.  
  31. sincronizados:  
  32. mov ah,2ch  
  33. int 21h     ;dh =segundos del sistema
  34. mov bl,dh
  35.    mov bh,snew
  36. cmp bl, bh ;compara (new segundo) contra (old segundo + 1)
  37. jne sincronizados ;salto si no son iguales
  38. jmp init
  39. ret
  40.  
  41.  
  42. seis0:
  43. mov ah,2ch  
  44. int 21h     ;dh =segundos del sistema
  45.        mov sold,dh
  46. cmp sold,00
  47. jnz seis0 ;Destino mayor a origen
  48. mov sold,00 ;reset sold a 0
  49. call separa
  50. mov snew,1
  51. jmp sincronizados
  52. ret
  53.  
  54.  
  55.    hora:
  56.  
  57.        cmp sold,10
  58.        jae separa
  59. jmp sincronizados
  60.  
  61.    ret
  62.  
  63.    separa:
  64.        mov al,sold
  65.        AAM
  66.        mov bx,ax
  67.        mov ah,02h
  68.        mov dl,bh
  69.        add dl,30h
  70.        int 21h
  71.        mov ah,02h
  72.        mov dl,bl
  73.        add dl,30h
  74.        int 21h
  75.    ret
  76.  
  77.  

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


Título: Re: problema con contador que toma segundos del sistema
Publicado por: xv0 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.


Título: Re: problema con contador que toma segundos del sistema
Publicado por: FERNIIIIN en 28 Mayo 2019, 05:42 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.


Título: Re: problema con contador que toma segundos del sistema
Publicado por: xv0 en 28 Mayo 2019, 23:39 pm
Por que no revisas ese AAM.

Saludos.