```
.MODELO PEQUENO
.PILHA 100H
.DADOS
STRING BD '$'; String a ser exibida
MSG1 DB 0DH, 0AH, 'Insira a 1ª vez:$'; mensagem 1
MSG2 DB 0DH, 0AH, 'Insira a 2ª vez:$'; mensagem 2
RESULT DB 0DH, 0AH, 'O intervalo de tempo é:$'; mensagem 3
MSG3 DB 0DH, 0AH, '$'; mensagem 4
ENTRADA1 BD 2 DUP (?); buffer de entrada pela 1ª vez
ENTRADA2 BD 2 DUP (?); buffer de entrada pela 2ª vez
SAÍDA DB 5 DUP (?); buffer de saída
CRLF DB 0DH, 0AH, '$'; Retorno de carro e alimentação de linha
.CÓDIGO
PROC PRINCIPAL; Procedimento principal
MOV AX, @DADOS; Inicializar segmento de dados
MOV DS, AX
LEA DX, MSG1; Exibir mensagem 1
MOV AH, 9
INT 21H
MOVAH, 1; Obtenha a 1ª vez
INT 21H
MOV AL, AH; Economize hora em AL
MOVBL,DL; Economize minuto em BL
MOVAH, 0; Limpar AH e AL
MOV AL, 0
MOV CX, 10; Multiplique a hora por 10
MUL CX
MOV DL, AL; Economize horas em DL
SAÍDA MOV, DL; Armazenar hora no buffer de saída
SAÍDA MOV+1, ':'; Armazene ':' no buffer de saída
MOVAH, 1; Obtenha o minuto
INT 21H
SAÍDA MOV+2, BL; Armazene minutos no buffer de saída
SAÍDA MOV+3, ':'; Armazene ':' no buffer de saída
LEA DX, SAÍDA; Exibir pela 1ª vez
MOV AH, 9
INT 21H
LEA DX, MSG2; Exibir mensagem 2
MOV AH, 9
INT 21H
MOVAH, 1; Obtenha a 2ª vez
INT 21H
MOVCH, AH; Economize horas em CH
MOVDH,DL; Economize minutos em DH
MOVAH, 0; Limpar AH e AL
MOV AL, 0
MOV CX, 10; Multiplique a hora por 10
MUL CX
MOV DL, AL; Economize horas em DL
CMP DL, SAÍDA; Comparar horários
JB SUB_HOURS; Se 2ª hora <1ª hora, subtraia as horas
SUBCH,SAÍDA; Subtraia a 2ª hora da 1ª hora
MOV DL, CH; Salvar diferença em DL
MOVAH, 0; Limpar AH e AL
MOV AL, 0
MOV CX, 10; Multiplique minuto por 10
MUL CX
MOV DL, AL; Economize minutos em DL
CMP DL, SAÍDA+2; Comparar minutos
JB SUB_MINUTES; Se 2º minuto <1º minuto, subtraia os minutos
SUB DH,SAÍDA+2; Subtraia o 2º minuto do 1º minuto
MOV DL, DH; Salvar diferença em DL
JMP Pular; Salte para pular a exibição do intervalo de tempo 'negativo'
SUB_HORAS:; Subtraia horas se necessário
MOVDL, 24; Adicione 24 horas à 2ª hora
ADICIONAR CH, DL
SUB CH, SAÍDA; Subtraia a 2ª hora da 1ª hora
MOV DL, CH; Salvar diferença em DL
SUB_MINUTES:; Subtraia minutos se necessário
MOVDL, 60; Adicione 60 minutos ao segundo minuto
ADICIONAR DH, DL
SUBDH, SAÍDA+2; Subtraia o 2º minuto do 1º minuto
MOV DL, DH; Salvar diferença em DL
PULAR:
SAÍDA MOV+4, DL; Armazene a diferença de minutos no buffer de saída
LEA DX, SAÍDA; Exibir intervalo de tempo
MOV AH, 9
INT 21H
LEA DX, RESULTADO; Exibir mensagem 3
MOV AH, 9
INT 21H
MOVAH, 4CH; Sair com código de retorno 0
INT 21H
PRINCIPAL PEND; Fim do procedimento principal
```