Задержка на Intel8524 - Assembler
Формулировка задачи:
Привет, прошу помочь и объяснить как сделать задержку в 1 минуту 30 секунд с использованием микросхемы реального времени (Intel8524, насколько я понял).
Здесь нашел вариант:
Листинг программы
- .model small
- .code
- begin:
- mov ax,40h
- mov es,ax
- m0:
- mov al,byte ptr es:[40h]
- m1:
- cmp al,byte ptr es:[40h]
- je m1
- inc bx
- cmp bx,1800 ;90 сек (20 = 1сек)
- jne m0
- mov ah,4ch
- int 21h
- end begin
Решение задачи: «Задержка на Intel8524»
textual
Листинг программы
- xor ah,ah
- int 1Ah
- mov bx,dx
- add bx,300 ;сам подбирай число для задержки в 1 минуту 30 секунд
- time:
- xor ah,ah
- int 1Ah
- cmp dx,bx
- jb time
Объяснение кода листинга программы
xor ah,ah
— инициализация регистра AH для использования в качестве временной переменнойint 1Ah
— генерирует прерывание, которое вызывает задержку, и возвращает в программу значение регистра AHmov bx,dx
— копирует значение регистра DX в регистр BXadd bx,300
— добавляет 300 к значению регистра BX, что приводит к задержке в 1 минуту 30 секундtime:
— метка для циклаxor ah,ah
— инициализация регистра AH для использования в качестве временной переменнойint 1Ah
— генерирует прерывание, которое вызывает задержку, и возвращает в программу значение регистра AHcmp dx,bx
— сравнивает значение регистра DX с значением регистра BXjb time
— если значение регистра DX меньше значения регистра BX, то переходим к меткеtime
, что вызывает повторный запуск цикла
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д