Atividade obrigatória 4
Implementação de um relógio digital/cronômetro

Esta atividade será usada na Atividade 5, que usará o simulador jarm do Prof. Anido, com interrupções e displays gráficos de 7 segmentos. No entanto, o núcleo básico e mais complexo, está na atividade atual.
Suponha que na memória RAM temos uma cadeia de 8 caracteres representando o conteúdo de um relógio digital no formato "hh:mm:ss". Você deverá escrever uma subrotina soma1 que toma como parâmetro em r0 o endereço da cadeia; ela deve incrementar o relógio de 1 segundo a cada chamada. A subrotina deve também ajustar de forma apropriada os outros dígitos do relógio; deve inclusive reiniciar a contagem quando o relógio atinge 24 horas, ou seja, se o conteúdo atual do relógio for "23:59:59", ao ser chamada a subrotina ele passa a ter "00:00:00". (no caso de uma situação real a subrotina seria disparada através de uma interrupção que ocorreria a cada segundo). A fim de permitir a verificação pelo Susy as seguintes condições devem ser satisfeitas: A saída no vídeo deve ser, portanto,
23:59:49
23:59:50
23:59:51
23:59:52
23:59:53
23:59:54
23:59:55
23:59:56
23:59:57
23:59:58
23:59:59
00:00:00
00:00:01
00:00:02
00:00:03
00:00:04
00:00:05
00:00:06
00:00:07
00:00:08
00:00:09
00:00:10
00:00:11
00:00:12
00:00:13
00:00:14
00:00:15
00:00:16
00:00:17
00:00:18
00:00:19
00:00:20

O que se segue ilustra a situação real e está relacionado apenas com o próximo laboratório.
O seguinte pseudo-código ilustra uma solução com interrupções:
char relogio[]="23:59:48"
int flag=0
main{
    while (1){  //laço infinito: incrementa o relógio 1 vez/segundo
        while (flag==0){} // sairá desse laço infinito quando a interrupção mudar o valor de flag  
        soma1(&relógio)
        print (&relogio)
        flag= 0
    } 
}
rotina_de_interrupção{ //será executada via interrupção 1 vez por segundo
   flag=1
}