>> Électroniques Technologie >  >> Personal Audio >> Radios-réveils

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

```

Radios-réveils