Задержка на 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, что вызывает повторный запуск цикла