Процедура генерации задержки 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
}

Объяснение кода листинга программы

  1. Макро-функция delay используется для задержки выполнения кода.
  2. На входе функции time — время задержки.
  3. На выходе функции ничего не возвращается.
  4. Используются две локальные переменные: outer и inner.
  5. Переменная outer используется для хранения значения переменной time.
  6. Переменная inner используется для внутреннего цикла.
  7. Используется команда push cx для сохранения регистра cx на стеке.
  8. Используется команда mov cx, time для установки значения переменной cx равным времени задержки.
  9. Используется команда loop inner для выполнения внутреннего цикла до тех пор, пока значение переменной inner не станет равным нулю.
  10. Используется команда pop cx для восстановления значения регистра cx из стека.
  11. Используется команда loop outer для выполнения внешнего цикла до тех пор, пока значение переменной outer не станет равным нулю.
  12. Используется команда xor cx, cx для установления начального значения переменной cx равным нулю.
  13. Значение переменной time задается в команде mov cx, time.
  14. Значение переменной outer используется для контроля времени задержки.
  15. Значение переменной inner используется для контроля времени задержки.
  16. Значение переменной cx используется для хранения времени задержки.
  17. Команда push cx сохраняет значение переменной cx на стеке.
  18. Команда pop cx восстанавливает значение переменной cx из стека.
  19. Команда loop inner выполняет внутренний цикл до тех пор, пока значение переменной inner не станет равным нулю.
  20. Команда loop outer выполняет внешний цикл до тех пор, пока значение переменной outer не станет равным нулю.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.385 из 5
Похожие ответы