Процедура генерации задержки 8086 - Assembler
Формулировка задачи:
Нужно сделать процедуру генерации задержки на 1-2 секунды с помощью таймера. использовал int 15h, преподаватель сказал, обойтись без прерываний. Буду очень признателен!
Решение задачи: «Процедура генерации задержки 8086»
textual
Листинг программы
; ----------------------------------------------- ; delay - макро-функция задержки выполнения кода. ; ----------------------------------------------- ; на входе: time - время задержки. ; на выходе: ничего. ; ----------------------------------------------- macro delay time { local outer, inner push cx mov cx, time outer: push cx xor cx, cx inner: loop inner pop cx loop outer pop cx }
Объяснение кода листинга программы
- Макро-функция delay используется для задержки выполнения кода.
- На входе функции time — время задержки.
- На выходе функции ничего не возвращается.
- Используются две локальные переменные: outer и inner.
- Переменная outer используется для хранения значения переменной time.
- Переменная inner используется для внутреннего цикла.
- Используется команда push cx для сохранения регистра cx на стеке.
- Используется команда mov cx, time для установки значения переменной cx равным времени задержки.
- Используется команда loop inner для выполнения внутреннего цикла до тех пор, пока значение переменной inner не станет равным нулю.
- Используется команда pop cx для восстановления значения регистра cx из стека.
- Используется команда loop outer для выполнения внешнего цикла до тех пор, пока значение переменной outer не станет равным нулю.
- Используется команда xor cx, cx для установления начального значения переменной cx равным нулю.
- Значение переменной time задается в команде mov cx, time.
- Значение переменной outer используется для контроля времени задержки.
- Значение переменной inner используется для контроля времени задержки.
- Значение переменной cx используется для хранения времени задержки.
- Команда push cx сохраняет значение переменной cx на стеке.
- Команда pop cx восстанавливает значение переменной cx из стека.
- Команда loop inner выполняет внутренний цикл до тех пор, пока значение переменной inner не станет равным нулю.
- Команда loop outer выполняет внешний цикл до тех пор, пока значение переменной outer не станет равным нулю.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д