Курс лекций по компьютерной геометрии и графике
  256Компьютерная графикаКГиГТема № 5. Использование функций BIOS для работы с видеоадаптерами

Тема № 5 Использование функций BIOS для работы с видеоадаптерами

Страницы: 1 2 3

Страница 3

5.4 Встроенный ассемблер TurboPascal

Другим способом вызова прерываний является использование встроенного ассемблера интегрированной среды разработчика Borland (Turbo) Pascal.
Для включения команд ассемблера в мнемонической форме в текст Pascal-программ есть удобное средство:
Asm
оператор 1         {здесь допустимо использовать практически все
*         команды Turbo Assembler и Macro Assembler}
*
*
оператор n
end;

Использование мнемоник для математического сопроцессора возможно только при включенной опции {$N+}, если сопроцессора нет {$N+,E+}. При использовании команд процессора Intel 80x286 должна быть включена опция {$G+}. Комментарии между asm и end записывается в нотации Pascal, а не в нотации Assembler.
Зарезервированными словами между asm и end являются следующие: AH, AL, AND, AX, BH, BL, BP, BX, BYTE, CH, CL, CS, CX, DH, DI, DL, DS, DWORD, DX, ES, FAR, HIGH, LOW, MOD, NEAR, NOT, OFFSET, OR, PTR, QWORD, SEG, SHL, SHR, SI, SP, SS, ST, TBYTE, TYPE, WORD, XOR.

Если в программе используется идентификатор с одним из перечисленных выше имён, и он должен использоваться между asm и end, то для придания зарезервированному имени другого смысла необходимо перед ним поставить знак "&" (амперсант).
Var
Offset : Integer;
Asm
Mov CH, & Offset
end;

Метки между asm и end должны начинаться с символа @. Это локальные метки и область их действия только между asm и end.

На использование регистров между asm и end накладываются общие для Pascal ограничения. Регистры DS, SP, SS, BP должны сохраняться, остальные регистры можно модифицировать. Для написания ассемблерной процедуры или функции полностью внутри интегрированной среды необходимо у описателя процедуры или функции поставить зарезервированное слово Assembler.
Function Primer: Byte: Assembler;
Asm
*
*
end;

5.4.1 Использование прерывания 10

Функция 00H устанавливает видеорежим. Работает на следующих видеоадаптерах: MDA, CGA, PCjr, EGA, MCGA, VGA. Выбирает текущий видеорежим и активный видеоконтроллер. Для вызова нужно установить значение регистра и затем использовать процедуру вызова прерывания

Intr ($10,R), где R - регистр.
Вызов:
AH := 00H
AL := <режим>
Возвращаемое значение - 0.

Режим 02H = 80 символов x 25 строк, 16 цветов текстовый режим
Режим 4H - графический: 320x200x4.  
Режим 6H: 640x200x2  
Режим 0FH: 640x350x21 
Режим 10H: 640x350x16
Режим 12H: 640x480x16
Режим 13H: 320x200x256
графические

Функция 01H устанавливает размер курсора. Выбирает начальные и конечные строки развёртки для аппаратного мигающего курсора в текстовом режиме.
Вызов:
AH = 01H
CH биты 0-4 - номер начальной строки развёртки для курсора
CL биты 0-4 - номер конечной строки развёртки для курсора
Возвращаемое значение отсутствует.

Функция 02H - перемещение курсора. Позиционирует курсор, использует тестовые координаты.
AH = 02H
BH = страница
DH = строка (у - координата)
DL = столбец (х - координата)
Возвращаемое значение отсутствует.

Функция 03H - получить текущую позицию курсора.
Вызов:
AH = 03H
BH = страница
Возвращаемое значение:
DH = строка (x - координата)
DL = столбец (y - координата)
CH = начало строки развёртки курсора
CL = конец строки развёртки курсора

Функция 05H - установить страницу дисплея.
AH = 05H
AL = страница {может быть от 0 до 7}

Функция 0AH - вывести символ на экран в текущую позицию курсора. Символ наследует атрибуты того символа, который ранее находился в этой позиции.
Вызов:
AH = 0AH
AL = символ
BH = страница
BL = цвет (PCjr)
CX = число символов
Возвращаемое значение отсутствует.

Функция 0CH - вывести графически пиксел. Рисует на дисплее точку в указанных графических координатах.
Вызов:
AH = 0CH
AL = значение пиксела
BH = страница
CX = столбец (x - координата)
DX = строка (y - координата)
Работает только на графических картах.
Возвращаемое значение отсутствует.

Функция 0DH - прочитать графический пиксел.
Вызов:
AH = 0DH
BH = страница
CX = столбец (x - координата)
DX = строка (y - координата)
Возвращаемое значение:
AL = цвет этого пиксела

Функция 0FH - получить текущий текстовый режим. Возвращает установленный в данный момент режим активного видеоадаптера.
Вызов:
AH = 0FH
Возвращаемые значения:
AH = количество столбцов символов на экране
AL = видеорежим
BH = страница

Функция 10H - подфункция 01H - установить цвет границы экрана.
Вызов:
AH = 10H
AL = 01H
BH = значение цвета
Работает на EGA и VGA. Возвращаемое значение отсутствует.

Страницы: 1 2 3

Рекламный блок

Информационный блок