Определение события - Assembler
Формулировка задачи:
Здравствуйте! Имеется вопрос:
При нажатой кнопке в младший бит al записывается 1, через out загорается индикатор. Подскажите, как, с помощи фронта(переднего или заднего) сделать, что бы при нажатии индикатор загорался, а при повторном зажатии погасал.
Я так понял делается xor and cmp но флаги для перехода не изменяются. Пробовал с флагом 0 и флагом сравнения
Листинг программы
- m1: in al,0
- out 0,al
- jmp m1
Решение задачи: «Определение события»
textual
Листинг программы
- xor AL, AL
- xor BL, BL
- out ind, AL
- l1:
- in AL, kn
- test AL, 1
- jz l1
- xor BL, 1
- mov AL, BL
- out ind, AL
- l2:
- in AL, kn
- test AL, 1
- jnz l2
- jmp short l1
Объяснение кода листинга программы
- Начальные операции XOR над регистрами AL и BL
- Вывод значения регистра AL на порт ind
- Переход к блоку l1
- Ввод значения регистра AL с порта kn
- Проверка значения регистра AL на 1
- Если значение регистра AL равно 1, то переход к блоку l1
- Операция XOR над регистром BL и числом 1
- Запись значения регистра BL в регистр AL
- Вывод значения регистра AL на порт ind
- Переход к блоку l2
- Ввод значения регистра AL с порта kn
- Проверка значения регистра AL на 1
- Если значение регистра AL не равно 1, то переход к блоку l2
- Переход к блоку l1
- Выполнение операции jnz (если значение регистра AL не равно 0), в противном случае переход к концу программы
- Выполнение операции jmp short (переход к блоку l1)
- Конец программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д