Информационные технологии
В текстовом режиме 03h видеоадаптер для вывода символов использует буфер в памяти, располагающийся по постоянному адресу 0B8000h (SEG: 0B800h, OFT: 0h).

Текстовый режим. Доступ к памяти

Каждая логическая ячейка этого буфера состоит из двух байт:

0 - ASCII-код символа
1 - Атрибут цветности (см. Цвет)

Ячейки располагаются непосредственно друг за другом построчно и постранично.
(Видеоадаптеры с размером памяти >=256К поддерживают 8 экранных страниц из которых в некоторый момент времени может быть отображена только одна, см. ниже)

Это означает, что символ с экранными координатами 1*1 страницы 0 будет иметь адрес 0B8000h, символ с координатами 80*25 - 0B8000h + 80 * 25 * 2 - 2, символ с координатами 0*0 страницы 1 - 0B8000h + 80 * 25 * 2.

Отсюда выводится несколько простых и удобных функций записи символов на любую экранную страницу и чтения символов с любой экранной страницы независимо от позиции курсора и активной страницы:
Вычисление физического смещения символа по заданным координатам
; На входе: al - Горизонтальная координата X (отсчет от 1)
; ah - Вертикальная координата Y (отсчет от 1)
; cl - Номер страницы (отсчет от 0)
; На выходе: di - смещение символа по заданным координатам

CharAddr PROC
; Вычисляем смещение для позиции символа
mov CH, AH
mul CH ; Перемножаем координаты X, Y
shl AX, 1 ; Умножаем результат на 2
sub AX, 2 ; Устанавливаем смещение на начало ячейки
; Вычисляем смещение страницы
mov DI, AX ; Сохраняем смещение символа в DI
push DX ; Сохраняем содержимое DX
mov AX, 4000 ; Помещаем в AX размер страницы с байтах
xor CH, CH
mul CX ; Вычисляем смещение страницы
pop DX ; Восстанавливаем содержимое DX
; Вычисляем полное смещение
add DI, AX
ret
CharAddr ENDP


* Функция не проверяет переполнение AX при выполнении mul CX, полагая, что смещение позиции символа для диапазона страниц 0..7 не может превышать размера WORD


Запись символа по заданным координатам

; На входе: al - Горизонтальная координата (отсчет от 1)
; ah - Вертикальная координата (отсчет от 1)
; dl - ASCII-код символа
; dh - Атрибут цветности
; cl - Номер страницы (отсчет от 0)

WriteChar PROC
push ES
push DI
; Помещаем в ES сегмент видеобуфера
push 0B800h
pop ES
; Вычисляем полное смещение символа
call CharAddr
; Выводим символ на экранную страницу
mov ES:[DI], DX
pop DI
pop ES
ret
WriteChar ENDP

Чтение символа по заданным координатам

; На входе: al - Горизонтальная координата X (отсчет от 1)
; ah - Вертикальная координата Y (отсчет от 1)
; cl - Номер страницы (отсчет от 0)
; На выходе: al - ASCII-код символа
; ah - Атрибут цветности

ReadChar PROC
push ES
push DI
; Помещаем в ES сегмент видеобуфера
push 0B800h
pop ES
; Вычисляем полное смещение символа
Call CharAddr
; Читаем символ с экранную страницу
mov AX, ES:[DI]
pop DI
pop ES
ret
ReadChar ENDP

Страничная организация видеопамяти может быть использована для сохранения некоторой области экрана с последующим ее быстрым восстановлением. Подобные операции необходимы при выводе меню или всплывающих диалоговых окон, сообщений.

DOS   Теги: Dos



Редакция портала:

Благодарим за просмотр этой информации на нашем компьютерном портале. Надеемся, что обзор Текстовый режим. Доступ к памяти, в разделе DOS вам понравился. Есть небольшая рекомендация, если вы хотите быть в курсе всех событий сферы информационных технологий, то рекомендуем зарегистрироваться на портале www.stfw.ru.


Живая лента

•  Microsoft предлагает компаниям ПК как сервис на базе Azure - 22.10.2019: STFW.Ru: Компания Microsoft начала предлагать компаниям во всем мире пользоваться


•  Xiaomi выпустит 10 новых 5G-смартфонов в 2020 году - 22.10.2019: STFW.Ru: Компания Xiaomi собирается захватить рынок смартфонов с поддержкой сотовых


•  В России вышел отечественный смартфон BQ 5731L Magic S - 22.10.2019: STFW.Ru: Российский бренд BQ сообщил о старте продаж нового смартфона 5731L Magic S. На


•  Украина получила и переименовала списанные катера из США в честь захваченных городов ЛДНР - 22.10.2019: STFW.Ru: 21.10.2019, Киев, Максим Карпенко  На Украину пришли списанные американские


•  У мадагаскарского примата нашли шестой палец - 22.10.2019: STFW.Ru: Биологи нашли у необычного мадагаскарского примата - ай-ай или руконожки,


•  Стало известно о сбое с ракетой на учениях ядерной триады России - 22.10.2019: STFW.Ru: В ходе стратегических учений "Гром-2019" произошла нештатная ситуация. Об