%Programme de la montre Constantes R8 0 R9 2 R10 4 R11 6 R12 10 Variables utiles R1 Dizaines des heures R2 Unités des heures R3 Dizaines des minutes R4 Unités des minutes R5 Dizaine des secondes R6 Unités des secondes Variables temporaires R7 RP est donc inutilisé par le programme et R14 n'est pas modifié à la main% %Initialisation% %Entrée des constantes% CST R8 0 CST R9 2 CST R10 4 CST R11 6 CST R12 10 %Valeurs initiales (en pratique, cette phase ne sert pas car les registres sont par défaut à 0)% MOV R1 R8 MOV R2 R8 MOV R3 R8 MOV R4 R8 MOV R5 R8 MOV R6 R8 %Boucle% LABEL Deb_boucle IN R7 0 NUL R7 GOTC(E) Incremente %Entrée de nouvelles valeurs% IN R1 1 IN R2 2 IN R3 3 IN R4 4 IN R5 5 IN R6 6 GOTO Fin_boucle %Incrémentation de 1% LABEL Incremente ADD R6 R+ %On ajoute 1 aux secondes% MOV R7 R6 SUB R7 R12 NUL R7 GOTC(E) Incr_diz_sec GOTO Fin_boucle LABEL Incr_diz_sec MOV R6 R8 %Mise à zéro% ADD R5 R+ MOV R7 R5 SUB R7 R11 NUL R7 GOTC(E) Incr_min GOTO Fin_boucle LABEL Incr_min MOV R5 R8 %Mise à zéro% ADD R4 R+ MOV R7 R4 SUB R7 R12 NUL R7 GOTC(E) Incr_diz_min GOTO Fin_boucle LABEL Incr_diz_min MOV R4 R8 %Mise à zéro% ADD R3 R+ MOV R7 R3 SUB R7 R11 NUL R7 GOTC(E) Incr_hr GOTO Fin_boucle LABEL Incr_hr MOV R3 R8 %Mise à zéro% ADD R2 R+ MOV R7 R2 SUB R7 R12 NUL R7 GOTC(E) Incr_diz_hr MOV R7 R2 SUB R7 R10 NUL R7 GOTC(E) Un_hr_egal_4 GOTO Fin_boucle LABEL Incr_diz_hr MOV R2 R8 %Mise à zéro% ADD R1 R+ GOTO Fin_boucle LABEL Un_hr_egal_4 MOV R7 R1 SUB R7 R9 NUL R7 GOTC(E) Fin_jour GOTO Fin_boucle LABEL Fin_jour MOV R2 R8 %Mise à zéro% MOV R1 R8 %Mise à zéro% LABEL Fin_boucle OUT R1 1 OUT R2 2 OUT R3 3 OUT R4 4 OUT R5 5 OUT R6 6 FREEZE GOTO Deb_boucle