Вывод в цветном графическом режиме
Программа, приведенная ниже, использует команду INT 10h для установки графического режима, выбора зеленого фона и вывода на экран точек (40 строк по 320 столбцов). В программе происходит увеличение значения цвета на 1 для каждой строки. Так как в определении цвета участвуют только три правых бита, цвета повторяются через каждые семь строк.
MOV AH,00 ;Устан. режима графики
MOV AL,0Dh для EGA (CGA=04)
INT 10h
MOV AH,0Bh ;Установить палитру
MOV BH,00 ;Фон
MOV BL,02 ;Зеленый
INT 10h
MOV BX,00 ;Начальные цвет,
MOV CX,00 ;столбец
MOV DX,00 ;и строка
A50: MOV AH,0Ch ;Функция вывода точки
MOV AL,BL ;Установить цвет
INT 10h ;BХ, СХ и DХ сохраняются
INC CX ;Увеличить столбец
CMP CX,320 ;Столбец 320?
JNE A50 ;Нет - цикл,
MOV CX,00 ;Да - сбросить
INC BL ;Изменить цвет
INC DX ;Увеличить строку
CMP DX,40 ;Строка 40?
JNE A50 ;Нет - цикл,
RET ;Да - завершить
После выполнения программы дисплей остается в графическом режиме. Восстановление текстового режима возможно либо с помощью команды DOS MODE (МОDЕ С080), либо пользовательской СОМ-программой, в которой для этой цели используется команда INT 10h.
Порядок выполнения работы
С помощью ассемблера выполнить программу, приведенную в пункте 2.3. На основе этой программы составить и выполнить процедуру, которая устанавливает графический режим экрана со средней разрешающей способностью с установкой цветов и выводит в его центре геометрическую фигуру в виде окрашенного квадрата.
|
|
Требования к отчету
Отчет по лабораторной работе должен содержать:
а) титульный лист;
б) условие задания;
в) текст программ на языке Ассемблера;
г) ответы на контрольные вопросы.
Контрольные вопросы
1. Объясните разницу в количестве цветов, возможных при низ-ком, среднем и высоком разрешении.
2. Напишите команды для установки графического режима с разрешающей способностью:
а) 320х200 в адаптере CGA и б) 640х200 в адаптере EGA.
3. Напишите команды для установки синего фона в графическом режиме.
4. Напишите команды для чтения точки на 12-й строке и 13-м столбце в графическом режиме.
5. Модифицируйте приведенную программу для:
а) графического режима на вашем мониторе;
б) красного фона; в) строк с 10-й по 30-ю;
г) столбцов с 20-го по 300-й.
ЛАБОРАТОРНАЯ РАБОТА № 4
ПРОГРАММИРОВАНИЕ СИСТЕМНЫХ ФУНКЦИЙ BIOS И DOS ДЛЯ РАБОТЫ С КЛАВИАТУРОЙ
Цель работы
Целью настоящей работы является изучение возможностей базовой системы ввода-вывода и дисковой операционной системы для программирования ввода информации с клавиатуры.
|
|
Теоретическая часть
Системные функции BIOS для работы с клавиатурой
Базовая система ввода-вывода (BIOS) имеет три функции для работы с клавиатурой. Они являются частью клавиатурного драйвера и выполняются с помощью прерывания 16h. Номер конкретной функции задается в регистре AН. Результат выполнения функции получается в регистрах AL и AH.
Чтение очередного символа
Функция AH=00h помещает в регистр AL очередной ASCII-код символа, введенного с клавиатуры, а в регистр AH заносит скэнкод этого символа. Если буфер клавиатуры пуст, то компьютер ожидает нажатия клавиши. Если клавиша или комбинация клавиш генерирует расширенный код, то в регистр AL помещается 0, а в регистр AH расширенный код. Введенный символ на экране не отображается.
MOV AH,00h
INT 16h
Справка о наличии символа
Функция AH=01h сбрасывает флаг нуля в 0 (ZF=0), если в буфере клавиатуры есть символ для чтения, и устанавливает флаг в 1, если буфер пуст. Этот символ и его скэн-код будут помещены в регистры AL и AH соответственно. Символ остается в буфере.
MOV AH,01h
INT 16h
Определение текущего состояния клавиатуры
Функция 02h помещает в регистр AL содержимое первого из двух байтов состояния клавиатуры с абсолютными адресами 417h и 418h. Если нужно узнать содержимое второго байта, его необходимо прочитать из памяти.
|
|
Содержимое первого байта (417h):
Бит клавиша значение, когда бит = 1
7 Ins ; режим вставки включен
6 CapsLock ; фиксация верхнего регистра
5 NumLock ; фиксация цифровой клавиатуры
4 ScrollLock ; прокрутка экрана включена
3 Alt ; клавиша нажата
2 Ctrl ; клавиша нажата
1 Shift ; клавиша нажата
Содержимое второго байта (418h):
7 Ins ; клавиша нажата
6 CapsLock ; клавиша нажата
5 NumLock ; клавиша нажата
4 ScrollLock ; клавиша нажата
3 Ctrl-NumLock ; режим паузы
Остальные биты не используются.
MOV AH,02h
INT 16h
Системные функции, осуществляемые прерыванием 16h, принадлежат к числу тех, которые позволяют создавать программы, не зависящие от операционной системы.
Тем не менее целесообразней пользоваться более гибкими возможностями системных функций для работы с клавиатурой, вызываемых с помощью прерывания 21h.
Дата добавления: 2018-04-04; просмотров: 866; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!