Меню сайта

Урок 167. Функции ввода-вывода дисплея

Программа дисплея BIOS имеет многофункций, все они перечислены на
— — — Фиг.9.6. -В связи с тем, что видеопрограмма имеет так много
— — — функций, она использует таблицу переходовк этим функциям. — — — Эта
— — — таблица названа M1 и содержит смещениякаждой точки входа программы
— — — дисплея BIOS. — Первая часть программы VIDEO_IO извлекает код из
— — — регистра AH и преобразует его в адресперехода. — Первая часть
— — — программы выполняет еще и некоторые другиедействия, включая
— — — проверку поля EQUIP_FLAG.

— — — — — Фирма IBM написала видеопрограмму BIOSтак, чтобы она могла
— — — работать с двумя дисплейными адаптерами,как с цветным графическим,
— — — так и с монохромным. Но BIOS такжеподразумевает, что из них
— — — активен только один. Это означает, что выне сможете использовать
— — — BIOS для того, чтобы записать символ вцветной дисплей, а затем
— — — сразу использовать BIOS для записи символав монохромный дисплей.
— — — Видеопрограмма BIOS может иметь делотолько с одним дисплейным
— — — адаптером.

— — — — — — — — -AH — — — — — — — — — Функция
— — — — — ————————————————-
— — — — — — — — -0 — — — — — — — — — — — Инициализация адаптерадисплея
— — — — — — — — -1 — — — — — — — — — — — Установка размера иформы курсора
— — — — — — — — -2 — — — — — — — — — — — Установка позициикурсора
— — — — — — — — -3 — — — — — — — — — — — Чтение позиции курсора
— — — — — — — — -4 — — — — — — — — — — — Чтение позициисветового пера
— — — — — — — — -5 — — — — — — — — — — — Назначение текущейстраницы
— — — — — — — — -6 — — — — — — — — — — — Сдвиг вверх
— — — — — — — — -7 — — — — — — — — — — — Сдвиг вниз
— — — — — — — — -8 — — — — — — — — — — — Чтение символа
— — — — — — — — -9 — — — — — — — — — — — Запись символа иатрибута
— — — — — — — -10 — — — — — — — — — — — Запись одного символа
— — — — — — — -11 — — — — — — — — — — — Выбор палитры
— — — — — — — -12 — — — — — — — — — — — Запись точки
— — — — — — — -13 — — — — — — — — — — — Чтение точки
— — — — — — — -14 — — — — — — — — — — — Запись на телетайп
— — — — — ————————————————-

— — — — — — — — — — — Фиг. 9.4 Функции BIOS длявидеомонитора

— — — — — Всякий раз, когда программа вызываетвидеопрограмму BIOS, она
— — — определяет, какой дисплейный адаптеримеется в системе с помощью
— — — проверки битов поля EQUIP_FLAG, которыесоответствуют текущему
— — — дисплею. Если биты 5 и 4 оба равны 1, то всистеме присутствует
— — — монохромный адаптер. Любая другаяустановка бит говорит о том, что
— — — в системе работает цветной адаптер. ФирмаIBM написала эту
— — — программу таким способом, исходя из того,что система может иметь
— — — только один дисплейный адаптер. Передпервым включением машины вы
— — — должны установить переключатели насистемной плате в положение,
— — — показывающее, какой адаптер дисплеяиспользуется.

— — — — — Информация флагов оборудования в полеEQUIP_FLAG определяет,
— — — какой из адресов буфера будет использоватьвидеопрограмма BIOS. Для
— — — монохромной платы BIOS загружает в регистрES значение 0B000H, а
— — — для цветной платы — значение 0B800H. Этопозволяет остальным
— — — программам дисплея BIOS работать безиспользования информации о
— — — том, какой адаптер работает в системе. Всессылки к буферу делаются
— — — относительно регистра ES.
— — — — — Вы можете решить, что, поскольку полеEQUIP_FLAG показывает,
— — — какой адаптер используется, можнопереключаться от одного адаптера
— — — к другому просто изменяя биты в словефлагов. К сожалению, это не
— — — так, Адрес ввода-вывода контроллера 6845отличается для двух
— — — адаптеров, и BIOS записывает этот базовыйадрес в свою область
— — — данных. Видеопрограмма BIOS заносит впеременную ADDR_6845 этот
— — — адрес только при инициализации адаптера(команда AH = 0). Поэтому

— — переключение от одного дисплея к другомутакже требует
— — — корректировки этой переменной.

— — — — — Даже если переменная CURSOR_POSN содержитвосемь позиций, она
— — — не может обслуживать переключение надругой дисплей. Вы должны
— — — сбрасывать положение курсора в областиданных BIOS всякий раз при
— — — переключении с одного адаптера на другой.Если вы не сделаете
— — — этого, изображение курсора не будетсоответствовать его положению,
— — — записанному в области данных, и символ наэкране будет записываться
— — — в неверную позицию.

— — — — — Фирма IBM опубликовала методы смены одногодисплея другим, как
— — — с помощью программы на языке ассемблера,так и с помощью программы
— — — на Бейсике. В этих методах требуется дляуказания адаптера, который
— — — вы хотите использовать, изменитьпеременную EQUIP_FLAG, а затем
— — — использовать видеопрерывание INT 10H приAH = 0. Эта функция
— — — инициализирует адаптер и обеспечиваетправильную установку всех
— — — полей данных программы BIOS. После этогоBIOS может работать с тем
— — — дисплейным адаптером, который указан. Приэтом картинка на другом
— — — дисплее остается видимой. Кроме того,дисплейный буфер того
— — — адаптера продолжает отображать любыеизменения текста и графики,
— — — занесенной в него. Так что вы можетеизмекнять содержимое
— — — дисплейного буфера с помощью вашейпрограммы (а не с помощью BIOS),
— — — чтобы скорректировать информацию,находящуюся на экране, с которого
— — — вы только что переключились.

— — — — — Давайте рассмотрим простой пример. Выимеете IBM PC с двумя
— — — адаптерами — цветным графическим имонохромным, и к каждому
— — — адаптеру подключен дисплей. Когда высначала включаете машину,
— — — система использует монохромный дисплей.Именно с учетом этого вы и
— — — должны установить переключатели насистемной плате, так как
— — — монохромный дисплей может быть поврежден,если не будет
— — — инициализирован сразу же после включенияпитания. Инструкция по
— — — работе рекомендует, чтобы вы установилипереключатели в положение,
— — — показывающее, что в системе присутствуетмонохромный адаптер.

— — — — — После этого вы можете использоватьвидеопрограмму BIOS с
— — — монохромным дисплеем. Чтобы перейти нацветной адаптер, можно
— — — выполнить программу на Фиг.П9.7. Этапрограмма включает цветной
— — — адаптер в 80-символьном текстовом режиме.Символы, которые были
— — — высвечены на монохромном дисплее, на нем иостаются, а вы теперь
— — -можете использовать видеопрограмму BIOS для работы с цветным
— — — графическим дисплеем. Но если вампотребуется изменить содержимое
— — — монохромного дисплея, вы сможете сделатьэто, записав новые символы
— — — или атрибуты в буфер дисплея по адресу0B000H. Это не изменит
— — — положения курсора, но изменит картинку. Вэтом случае если вы
— — — хотите изменять текст одновременно нацветном и монохромном
— — — дисплеях, вы должны написать собственнуюпрограмму обслуживания
— — — монохромного дисплея. Или вы можетевыяснить, какие значения надо
— — — изменить в поле данных BIOS, чтобы курсорперешел назад, и
— — — выполнить нужные действия, неинициализируя адаптер каждый раз.

— — — — — — — — — — -Microsoft (R) Macro Assembler Version 5.00 — — — — — — — — — — — — — — 1/1/8004:06:26
— — — — — — — — — — — -Фиг. 9.7 Переключение на цветной дисплей — — — — — — — — — — Page — — — — 1-1


— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — -PAGE ,132
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — -TITLE — — — — — Фиг. 9.7 Переключение на цветной дисплей
— — — — — — — — — — — -0000 — — — — — — — — — — — — — — — — — — — — — — — STACK — — — — — SEGMENT STACK
— — — — — — — — — — — -0000 — — — — — 0040[ — — — — — — — — — — — — — — — — — — DW — — 64 DUP (?)
— — — — — — — — — — — — — — — — — — — — ????
— — — — — — — — — — — — — — — — — — — — — — — — — — -&n
bsp- — — ]

— — — — — — — — — — — -0080 — — — — — — — — — — — — — — — — — — — — — — — STACK — — — — — ENDS
— — — — — — — — — — — -0000 — — — — — — — — — — — — — — — — — — — — — — — ABS0 SEGMENT AT 0
— — — — — — — — — — — -0410 — — — — — — — — — — — — — — — — — — — — — — — — — — — — — ORG — 410H
— — — — — — — — — — — -0410 — — — — — — — — — — — — — — — — — — — — — — — EQUIP_FLAG LABEL — — — — — BYTE — Будет изменятьсятолько младший
— — — — — — — — — — — -0410 — — — — — — — — — — — — — — — — — — — — — — — ABS0 ENDS — — — — — — — — — — — — — — байт поля флагов


— — — — — — — — — — — -0000 — — — — — — — — — — — — — — — — — — — — — — — CODE SEGMENT
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — -ASSUME -CS:CODE,DS:ABS0
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — -COLOR — — — — — PROC FAR
— — — — — — — — — — — -0000 — — — — — 1E — — — — — — — — — — — — — — — — — — — — — PUSH DS — — — — — — — — — Адрес возврата в ДОС
— — — — — — — — — — — -0001 — — — — — 2B C0 — — — — — — — — — — — — — — — — — — SUB — AX, AX
— — — — — — — — — — — -0003 — — — — — 50 — — — — — — — — — — — — — — — — — — — — — PUSH AX

— — — — — — — — — — — -0004 — — — — — 8E D8 — — — — — — — — — — — — — — — — — — MOV — DS, AX — — — — Загрузка адреса сегмента ABS0 в регистр DS
— — — — — — — — — — — -0006 — — — — — 80 26 0410 R CF — — — — — — — -AND — EQUIP_FLAG, 11001111b — — Указание на цветной дисплей как
— — — — — — — — — — — -000B — — — — — 80 0E 0410 R 20 — — — — — — — -OR — — EQUIP_FLAG, 00100000b — — — наосновной (режим 80*25)
— — — — — — — — — — — -0010 — — — — — B8 0003 — — — — — — — — — — — — — — — -MOV — AX, 3
— — — — — — — — — — — -0013 — — — — — CD 10 — — — — — — — — — — — — — — — — — — INT — 10H — — — — — — — — Сброс дисплея
— — — — — — — — — — — -0015 — — — — — C3 — — — — — — — — — — — — — — — — — — — — — RET — — — — — — — — — — — — — — Возврат в ДОС
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — -COLOR — — — — — ENDP
— — — — — — — — — — — -0016 — — — — — — — — — — — — — — — — — — — — — — — CODE ENDS
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — -END

— — — — — — — — — — — -Фиг. 9.7 Переключение на цветной дисплей

Категория: Программирование на Ассемблере | Дата: 28.02.13

Меню раздела
Блок