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

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

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

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

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

textual
Листинг программы
  1. xor AL, AL
  2. xor BL, BL
  3. out ind, AL
  4. l1:
  5.     in AL, kn
  6.     test AL, 1
  7.     jz l1
  8.     xor BL, 1
  9.     mov AL, BL
  10.     out ind, AL
  11. l2:
  12.     in AL, kn
  13.     test AL, 1
  14.     jnz l2
  15.     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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы