¿Cómo se escribe un programa para averiguar el intervalo de tiempo entre dos eventos consecutivos utilizando el lenguaje de programación 8086?

```

.MODELO PEQUEÑO

.PILA 100H

.DATOS

CADENA DB '$'; Cadena para mostrar

MSG1 DB 0DH, 0AH, 'Ingrese la primera vez:$'; mensaje 1

MSG2 DB 0DH, 0AH, 'Ingrese la segunda vez:$'; mensaje 2

RESULTADO DB 0DH, 0AH, 'El intervalo de tiempo es:$'; mensaje 3

MSG3 DB 0DH, 0AH, '$'; mensaje 4

ENTRADA1 DB 2 DUP (?); buffer de entrada por primera vez

ENTRADA2 DB 2 DUP (?); buffer de entrada por segunda vez

SALIDA DB 5 DUP (?); buffer de salida

CRLFDB 0DH, 0AH, '$'; Retorno de carro y avance de línea

.CÓDIGO

PROCESO PRINCIPAL; Procedimiento principal

MOV AX, @DATOS; Inicializar segmento de datos

MOV DS, HACHA

LEA DX, MSG1; Mensaje en pantalla 1

MOV AH, 9

ENT 21H

MOV AH, 1; Consigue la primera vez

ENT 21H

MOV AL, AH; Ahorra hora en AL

MOV BL, DL; Ahorra minuto en BL

MOV AH, 0; Borrar AH y AL

MOV AL, 0

MOV CX, 10; Multiplicar hora por 10

MUL CX

MOV DL, AL; Ahorrar hora en DL

SALIDA MOV, DL; Hora de almacenamiento en el búfer de salida

SALIDA MOV+1, ':'; Almacenar ':' en el búfer de salida

MOV AH, 1; Obtener el minuto

ENT 21H

SALIDA MOV+2, BL; Almacenar minutos en el buffer de salida

SALIDA MOV+3, ':'; Almacenar ':' en el búfer de salida

LEA DX, SALIDA; Mostrar la primera vez

MOV AH, 9

ENT 21H

LEA DX, MSG2; Mensaje en pantalla 2

MOV AH, 9

ENT 21H

MOV AH, 1; Consigue la segunda vez

ENT 21H

MOV CH, AH; Ahorra hora en CH

MOV DH, DL; Ahorra minutos en DH

MOV AH, 0; Borrar AH y AL

MOV AL, 0

MOV CX, 10; Multiplicar hora por 10

MUL CX

MOV DL, AL; Ahorrar hora en DL

CMP DL, SALIDA; Comparar horas

JB SUB_HORAS; Si la segunda hora

SUB CANAL,SALIDA; Resta la segunda hora de la primera hora

MOV DL, CH; Guardar diferencia en DL

MOV AH, 0; Borrar AH y AL

MOV AL, 0

MOV CX, 10; Multiplicar minuto por 10

MUL CX

MOV DL, AL; Ahorra minuto en DL

CMP DL, SALIDA+2; comparar minutos

JB SUB_MINUTES; Si el segundo minuto

SUB DH,SALIDA+2; Resta el segundo minuto del primer minuto

MOV DL, DH; Guardar diferencia en DL

SALTAR JMP; Saltar para omitir la visualización del intervalo de tiempo "negativo"

SUB_HORAS:; Restar horas si es necesario

MOV DL, 24; Agregue 24 horas a la segunda hora

AÑADIR CH, DL

SUB CANAL, SALIDA; Resta la segunda hora de la primera hora

MOV DL, CH; Guardar diferencia en DL

SUB_MINUTOS:; Resta minutos si es necesario

MOV DL, 60; Agregue 60 minutos al segundo minuto

AÑADIR DH, DL

SUB DH, SALIDA+2; Resta el segundo minuto del primer minuto

MOV DL, DH; Guardar diferencia en DL

SALTAR:

SALIDA MOV+4, DL; Almacenar la diferencia de minutos en el búfer de salida

LEA DX, SALIDA; Intervalo de tiempo de visualización

MOV AH, 9

ENT 21H

LEA DX, RESULTADO; Mensaje en pantalla 3

MOV AH, 9

ENT 21H

MOV AH, 4 canales; Salir con código de retorno 0

ENT 21H

ENDP PRINCIPAL; Fin del procedimiento principal

```