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


         

Сегменты - часть 2


 
      Чтобы понять значение указателя AT, рассмотрим пример. В этом
    примере программа использует как Отправную точку систему BIOS, хра-
    нящаяся в ПЗУ персональной ЭВМ. Хотя язык ассемблера является очень
    эффективным средством программирования, с другой стороны это
    довольно трудный инструмент, особенно для больших программ. Поэтому
    выбор языка ассемблера обусловливается свойствами, которые делают
    его выгодным для решения определенной задачи. В случае IBM PC язык
    ассемблера - лучший язык для программирования функций, выполняемых
    ROM BIOS. Эти функции можно охарактеризовать как управление устрой-
    ствами ввода-вывода, где обычно требуется оперировать с отдельными
    битами. Программирование подобных задач сводится к возможности ма-
    нипулировать содержимым точно заданных ячеек памяти и портов ввода-
    вывода. Язык ассемблера также используется в тех случаях, когда
    необходима минимизация размера программы или максимальное быстро-
    действие программы. Всем эти требования предъявляет и система ROM
    BIOS.
      В рассматриваемом примере используется часть BIOS. В одной из
    последующих глав будет рассмотрено, как заменять части системы
    BIOS. Однако в данном случае нас интересует доступ к наборам
    данных, которые использует ROM BIOS. Если вы посмотрите
    ассемблерный листинг для ROM BIOS (он приводится в приложении A
    технического руководства по IBM PC), то увидите, что сегмент DATA
    располагается в сегменте 40H или по абсолютному адресу 400H.
    Приведенная на Фиг. 6.12 программа обращается в область данных ПЗУ
    системы BIOS c определенной целью. В сегменте DATA имеется
    переменная KB_FLAG, которая указывает текущее состояние
    переключателя регистров. Одна из жалоб, часто высказываемых по
    поводу клавиатуры IBM, состоит в том, что неизвестно, работаете ли
    вы в верхнем регистре (CAPS LOCK) или в нижнем. Программа на Фиг.
    6.12 считывает значение бита, соответствующего CAPS LOCK, и



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