Определение события - Assembler

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Имеется вопрос:
m1: in al,0
    out 0,al
    jmp m1
При нажатой кнопке в младший бит al записывается 1, через out загорается индикатор. Подскажите, как, с помощи фронта(переднего или заднего) сделать, что бы при нажатии индикатор загорался, а при повторном зажатии погасал. Я так понял делается xor and cmp но флаги для перехода не изменяются. Пробовал с флагом 0 и флагом сравнения

Решение задачи: «Определение события»

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

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

  1. Начальные операции XOR над регистрами AL и BL
  2. Вывод значения регистра AL на порт ind
  3. Переход к блоку l1
  4. Ввод значения регистра AL с порта kn
  5. Проверка значения регистра AL на 1
  6. Если значение регистра AL равно 1, то переход к блоку l1
  7. Операция XOR над регистром BL и числом 1
  8. Запись значения регистра BL в регистр AL
  9. Вывод значения регистра AL на порт ind
  10. Переход к блоку l2
  11. Ввод значения регистра AL с порта kn
  12. Проверка значения регистра AL на 1
  13. Если значение регистра AL не равно 1, то переход к блоку l2
  14. Переход к блоку l1
  15. Выполнение операции jnz (если значение регистра AL не равно 0), в противном случае переход к концу программы
  16. Выполнение операции jmp short (переход к блоку l1)
  17. Конец программы

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


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

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

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