Как написать программу для определения интервала времени между двумя последовательными событиями, используя язык программирования 8086?
.МОДЕЛЬ МАЛЕНЬКАЯ
.СТЕК 100H
.ДАННЫЕ
STRING БД '$'; Строка для отображения
MSG1 DB 0DH, 0AH, 'Введите первый раз:$'; сообщение 1
MSG2 DB 0DH, 0AH, 'Введите второй раз:$'; сообщение 2
RESULT DB 0DH, 0AH, 'Интервал времени:$'; сообщение 3
MSG3 БД 0DH, 0AH, '$'; сообщение 4
ВХОД1 БД 2 ДУП (?); входной буфер в первый раз
ВХОД2 БД 2 ДУП (?); входной буфер во второй раз
ВЫХОД БД 5 ДУП (?); выходной буфер
CRLF DB 0DH, 0AH, '$'; Возврат каретки и перевод строки
.КОД
ГЛАВНЫЙ ПРОЦ; Основная процедура
ДВИЖЕНИЕ AX, @ДАННЫЕ; Инициализировать сегмент данных
ДВИГАТЕЛЬ ДС, АКС
ЛЕА DX, MSG1; Отобразить сообщение 1
МОВ АХ, 9
ИНТ 21Ч
МОВ АХ, 1; Получите с 1-го раза
ИНТ 21Ч
МОВ АЛ, АХ; Сэкономьте час в Алабаме
МОВ БЛ, ДЛ; Сэкономьте минуту в BL
МОВ АХ, 0; Очистить AH и AL
МОВ АЛ, 0
МОВ СХ, 10; Умножьте час на 10.
МУЛ СХ
МОВ ДЛ, АЛ; Сэкономьте час в DL
ВЫХОД ДВИГАТЕЛЯ, DL; Сохранить час в выходном буфере
MOV ВЫХОД+1, ':'; Сохраните ':' в выходном буфере
МОВ АХ, 1; Получите минуту
ИНТ 21Ч
ВЫХОД ДВИЖЕНИЯ+2, БЛ; Сохранение минут в выходном буфере
MOV ВЫХОД+3, ':'; Сохраните ':' в выходном буфере
ЛЕА DX, ВЫХОД; Отображать первый раз
МОВ АХ, 9
ИНТ 21Ч
ЛЕА DX, MSG2; Отобразить сообщение 2
МОВ АХ, 9
ИНТ 21Ч
МОВ АХ, 1; Получите 2-й раз
ИНТ 21Ч
МОВ Ч, АХ; Сэкономьте час в Швейцарии
МОВ ДХ, ДЛ; Сэкономьте минуту в DH
МОВ АХ, 0; Очистить AH и AL
МОВ АЛ, 0
МОВ СХ, 10; Умножьте час на 10.
МУЛ СХ
МОВ ДЛ, АЛ; Сэкономьте час в DL
CMP DL, ВЫХОД; Сравнить часы
JB SUB_HOURS; Если 2-й час <1-й час, вычтите часы.
СУБ-КАН, ВЫХОД; Вычтите 2-й час из 1-го часа
МОВ ДЛ, Ч; Сохранить разницу в DL
МОВ АХ, 0; Очистить AH и AL
МОВ АЛ, 0
МОВ СХ, 10; Умножьте минуту на 10.
МУЛ СХ
МОВ ДЛ, АЛ; Сэкономьте минуту в DL
CMP DL, ВЫХОД+2; Сравнить минуты
JB SUB_MINUTES; Если 2-я минута <1-й минуты, вычтите минуты.
SUB DH,ВЫХОД+2; Вычтите 2-ю минуту из 1-й минуты.
МОВ ДЛ, ДХ; Сохранить разницу в DL
ПРОПУСК СПМ; Перейти, чтобы пропустить отображение «отрицательного» интервала времени
СУБ_ЧАСОВ:; При необходимости вычтите часы
МОВ ДЛ, 24; Добавьте 24 часа ко 2-му часу
ДОБАВИТЬ CH, DL
СУБ-КАН, ВЫХОД; Вычтите 2-й час из 1-го часа
МОВ ДЛ, Ч; Сохранить разницу в DL
SUB_MINUTES:; При необходимости вычтите минуты.
МОВ ДЛ, 60; Добавьте 60 минут ко 2-й минуте.
ДОБАВИТЬ DH, DL
SUB DH, ВЫХОД+2; Вычтите 2-ю минуту из 1-й минуты.
МОВ ДЛ, ДХ; Сохранить разницу в DL
ПРОПУСКАТЬ:
ВЫХОД ДВИЖЕНИЯ+4, DL; Сохранять разницу минут в выходном буфере
ЛЕА DX, ВЫХОД; Отображение временного интервала
МОВ АХ, 9
ИНТ 21Ч
ЛЕА DX, РЕЗУЛЬТАТ; Отобразить сообщение 3
МОВ АХ, 9
ИНТ 21Ч
МОВ АХ, 4CH; Выйти с кодом возврата 0
ИНТ 21Ч
ГЛАВНЫЙ КОНЕЧНЫЙ; Конец основной процедуры
```