Assembler для начинающих



         

Клавиатура - часть 7


    выдаваемого микропроцессору 8088. Обработчик прерывания должен все
    также сохранять состояние микропроцессора в момент прерывания, а
    программа должна выполнить команду EOI в конце обработки
    прерывания, или когда определит, что выполняемая программа может
    принять прерывание меньшего приоритета. И еще одно предостережение.
    Ваша программа обработки прерывания не должена посылать две команды
    EOI. Если выполняющаяся программа обработки прерывания прервала
    работу обработчика с меньшим приоритетом, вторая команда EOI
    поступит вместо этой команды от обработчика с меньшим приоритетом.
    Это может привести к неприемлимым последствиям, почему вам и не
    следует допускать такого наложения.
 
      Итак, мы обработали прерывание от клавиатуры, правильно
    установили все биты и выполнили все команды. Что же мы получили?
    Клавиатура посылает в микропроцессор "коды сканирования". Их
    значения отражают расположение клавиш на клавиатуре и не имеют
    никакого отношения к символу, изображенному на клавише. Например,
    клавише ESC возвращает код сканирования 1, клавиша "1" - код 2, и
    так далее. Клавише DEL соответствует код сканирования 83. Каждая
    клавиша имеет свой собственный уникальный код сканирования. Так что
    данные из порта 60H не могут рассматриваться как символ кода ASCII.
    Код сканирования нужно еще перекодировать в правильный код
    символа.
 
      Клавиатура передает несколько больше, чем только эти 83 кода
    сканирования. Первые коды, от 1 до 83, известные как "коды нажатия"
    клавиатура посылает, при нажатии клавиши. Когда клавиша
    отпускается, клавиатура посылает другой код сканирования, "код
    отпускания". Код отпускания формируется прибавлением числа 128 к
    коду нажатия. То есть коды отпускания попадают в диапазон от 129 до
    211; их легко распознать по 7-му биту, равному 1.
 
      Поскольку клавиатура посылает различные коды для каждого



Содержание  Назад  Вперед