Определение события - 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)
- Конец программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д