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






    Видеопрограмма BIOS имеет несколько функций, которые обслуживают
    графику на IBM PC.  Устанавливая регистр AH равным 11, программа
    может сделать выбор цвета в графическом режиме.  Эта подпрограмма
    устроена так, что она работает с истинной палитрой, а не с
    предопределенными палитрами цветной платы.  Если графический режим
    320*200 имеет истинную палитру, то это означает, что должно
    существовать отображение в четыре цвета, возможных для каждой
    точки, из четырех цветов, которые хотела бы иметь программа.  В
    настоящее время это делается для цвета фона в режиме нормального
    разрешения.  Вы можете выбрать любой цвет в качестве цвета 0, цвета
    фона.  Интерфейс этой программы был разработан для того, чтобы
    позволять определение истинной палитры цветов, если фирма IBM
    когда-либо модифицирует аппаратуру так, чтобы позволять это.
 
      Чтобы достичь этой цели, значение точки определяется в регистре
    BH. В регистре BL определяется цвет, который присвоит адаптер этой
    точке. Например, если содержимое регистра BH равно 0; регистр BL
    содержит значение цвета фона. BIOS обслуживает значение регистра
    BH, равное только 0 или 1 , так как можно выбрать только цвет фона
    и одну из двух предопределенных палитр. Пролог BIOS определяет
    палитру. С помощью этой функции можно также определить цвет
    окаймления в текстовых режимах.
 
      Две другие графические подпрограммы позволяют читать либо
    записывать конкретные точки графического экрана. В простейших
    случаях эта функция BIOS позволяет вам определить строку и колонку
    без определения их отображения в буфер дисплея. При построении
    больших картин, а также при выполнении любой графической работы эти
    функции требуют очень много времени. Программа должна вызывать BIOS
    при выдаче каждой точки на экран. В случае режима высокого
    разрешения программа должна вызвать BIOS 128000 раз, чтобы
    изобразить каждую точку правильно. Хотя программы, входящие в BIOS
    выполняется очень быстро, она должна вычислять адрес буфера всякий
    раз, когда получает информацию о строке и колонке. Для этого
    действия требуется умножение и несколько сложений, и следовательно,
    требуется некоторое время. В общем случае программа записывает
    график с помощью стартового положения точки и смещений относительно
    этого положения. Это означает, что программа вычисляет положение
    первой точки с помощью алгоритма отображения в буфер, а положения
    остальных точек отсчитывает от текущего адреса буфера.