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


         

в IBM PC любые символы,


    оператору вводить в IBM PC любые символы, даже если их нет на
    клавиатуре. Например, нажмите клавишу ALT, затем напечатайте с
    помощью цифровой клавиатуры 1, 1, 1 и отпустите клавишу ALT.
    Появится символ "o". Этот символ имеет код со значением 111 в коде
    ASCII.
 
      Переменная ALT_INPUT хранит текущее значение кода, который
    вводится в альтернативном регистре. Когда на цифровой клавиатуре
    печатается цифра, и состояние клавиатуры показывает, что включен
    альтернативный регистр, программа BIOS умножает текущее значение
    переменной ALT_INPUT на 10, и прибавляет к нему новое число. Когда
    клавиша альтернативного регистра отпускается, в переменной
    ALT_INPUT содержится введенный символ. Обычно переменная ALT_INPUT
    устанавливается равной нулю, и программа BIOS не считает нулевое
    значение правильным результатом ввода в альтернативном регистре.
    Это позволяет оператору использовать клавишу альтернативного
    регистра вместе с другими клавишами, нажимая и отпуская ее (как это
    делается в интерпретаторе языка Бейсик, где ALT-A порождает строку
    символов AUTO и не вводя при этом кода 0 в момент отпускания этой
    клавиши.
 
      Остальные переменные поддерживают буфер клавиатуры. По мере
    того, как на клавиатуре печатаются символы, возникают прерывания.
    Программа KB_INT, входящая в BIOS принимает прерывание от
    клавиатуры, читает код сканирования из порта 60H, и определяет код
    ASCII этой клавиши. Затем программа BIOS записывает это значение в
    буфер клавиатуры KB_BUFFER. В этом буфере есть 16 слов - каждая
    клавиша записывается в виде слова. Первый байт - это код ASCII
    клавиши, второй байт - код сканирования или расширенный код
    сканирования клавиши. Использование расширенного кода сканирования
    позволяет передавать в прикладную программу символы, которые не
    имеют кода ASCII.
 
      У буфера есть два указателя. Переменная BUFFER_HEAD содержит
    смещение первого символа в буфере в сегменте DATA, соответствующего

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