Comment écrire un programme pour connaître l'intervalle de temps entre deux événements consécutifs en utilisant le langage de programmation 8086 ?
.MODÈLE PETIT
.PILE 100H
.DONNÉES
STRING BD '$'; Chaîne à afficher
MSG1 DB 0DH, 0AH, 'Entrez la 1ère fois :$'; message 1
MSG2 DB 0DH, 0AH, 'Entrez la 2ème fois :$'; message 2
RESULT DB 0DH, 0AH, 'L'intervalle de temps est :$'; message 3
MSG3 DB 0DH, 0AH, '$'; message 4
ENTREE1 DB 2 DUP (?); tampon d'entrée pour la 1ère fois
ENTREE2 DB 2 DUP (?); tampon d'entrée pour la 2ème fois
DB DE SORTIE 5 DUP (?); tampon de sortie
CRLFDB 0DH, 0AH, '$'; Retour chariot et saut de ligne
.CODE
PROCÉDURE PRINCIPALE ; Procédure principale
MOUVEMENT AXE, @DONNEES ; Initialiser le segment de données
MOV DS, AX
LEA DX, MSG1; Message affiché 1
MOUVEMENT AH, 9
INT 21H
MOUVEMENT AH, 1 ; Obtenez la 1ère fois
INT 21H
MOV AL, AH; Gagnez une heure en AL
MOUVEMENT BL, DL ; Gagner une minute en BL
MOUVEMENT AH, 0 ; Effacer AH et AL
MOV AL, 0
MOV CX, 10 ; Multiplier l'heure par 10
MUL CX
MOUVEMENT DL, AL ; Économisez une heure en DL
SORTIE MOV, DL ; Stocker l'heure dans le tampon de sortie
SORTIE MOV+1, ':'; Stocker ':' dans le tampon de sortie
MOUVEMENT AH, 1 ; Obtenez la minute
INT 21H
SORTIE MOV+2, BL; Stocker la minute dans le tampon de sortie
SORTIE MOV+3, ':'; Stocker ':' dans le tampon de sortie
LEA DX, SORTIE; Afficher la 1ère fois
MOV AH, 9
INT 21H
LEA DX, MSG2; Message affiché 2
MOV AH, 9
INT 21H
MOUVEMENT AH, 1 ; Obtenez la 2ème fois
INT 21H
MOUVEMENT CH, AH ; Gagnez une heure en CH
MOUVEMENT DH, DL ; Gagnez une minute en DH
MOUVEMENT AH, 0 ; Effacer AH et AL
MOV AL, 0
MOV CX, 10 ; Multiplier l'heure par 10
MUL CX
MOUVEMENT DL, AL ; Économisez une heure en DL
CMP DL, SORTIE; Comparez les horaires
JB SUB_HOURS ; Si 2ème heure <1ère heure, soustraire les heures
SOUS CH, SORTIE; Soustraire la 2ème heure de la 1ère heure
MOV DL, CH; Enregistrer la différence dans DL
MOUVEMENT AH, 0 ; Effacer AH et AL
MOV AL, 0
MOV CX, 10 ; Multiplier la minute par 10
MUL CX
MOUVEMENT DL, AL ; Gagner une minute en DL
CMP DL, SORTIE+2; Comparer les minutes
JB SUB_MINUTES ; Si 2ème minute <1ère minute, soustrayez les minutes
SOUS DH, SORTIE+2; Soustraire la 2ème minute de la 1ère minute
MOUVEMENT DL, DH ; Enregistrer la différence dans DL
JMP SAUTER ; Aller pour ignorer l'affichage de l'intervalle de temps « négatif »
SUB_HOURS : ; Soustraire des heures si nécessaire
MOV DL, 24 ; Ajouter 24 heures à la 2ème heure
AJOUTER CH, DL
SUB CH, SORTIE; Soustraire la 2ème heure de la 1ère heure
MOV DL, CH; Enregistrer la différence dans DL
SUB_MINUTES :; Soustraire des minutes si nécessaire
MOV DL, 60 ; Ajouter 60 minutes à la 2ème minute
AJOUTER DH, DL
SUB DH, SORTIE+2; Soustraire la 2ème minute de la 1ère minute
MOUVEMENT DL, DH ; Enregistrer la différence dans DL
SAUTER:
SORTIE MOV+4, DL ; Stocker la différence infime dans le tampon de sortie
LEA DX, SORTIE; Afficher l'intervalle de temps
MOV AH, 9
INT 21H
LEA DX, RÉSULTAT; Message affiché 3
MOUVEMENT AH, 9
INT 21H
MOUVEMENT AH, 4CH ; Quitter avec le code retour 0
INT 21H
FIN PRINCIPAL ; Fin de la procédure principale
```