Иллюстрированный самоучитель по SVGA

Вывод текста с использованием поддержки DOS и BIOS

Вывод с помощью функции DOS

Проще всего вывести строку текста на экран с помощью специальной функции DOS, имеющей код 09, поэтому этот способ часто встречается на практике. Перед обращением к DOS адрес начала строки помещается в регистры ds:dx, а код запрашиваемой функции (оэ) – в регистр ah, после чего вызывается программное прерывание int 2in, которое выполняет обращение к DOS.

Предположим, для определенности, что выводимый текст хранится в разделе данных и оформлен одним из следующих способов:

coiranun db 'Проверка возможности вывода текста в режиме SVGA$'

commun db 'Проверка возможности вывода текста в режиме SVGA', 24h

Для функции оэ признаком конца строки является код 24n, которому обычно соответствует изображение знака доллара $. В первой из двух приведенных строк он записан в виде символа, а во второй – в виде кода. Если вы забудете указать признак конца строки, то поведение компьютера при выводе текста будет непредсказуемо.

Для вывода строки commun в нужное место текста задачи включаются три команды, приведенные в примере 5.4.

Пример 5.4. Вывод строки на экран с помощью функции DOS.

lea dx, commun; помещаем в dx адрес начала строки
mov ah, 09; указываем код функции DOS
int 21h; обращаемся к DOS

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

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

Замечание
Текст направляется на стандартное устройство вывода, которым по умолчанию является дисплей. Задача может изменить установленное по умолчанию устройство, выбрав, например, принтер или дисковод. В таком случае текст будет напечатан на принтере или записан в файл
.

Описанная функция лучше всего подходит для вывода на экран заранее заготовленного текста. Заготовки располагают в разделе данных программы и оформляют с помощью директивы db, перед которой указывается метка, подобно тому, как оформлена приведенная выше строка commun. Текст заключается в одинарные или двойные кавычки, коды управляющих символов указываются явно и отделяются друг от друга и от заключенного в кавычки текста запятыми.

В качестве управляющих символов могут использоваться "возврат каретки" (0dh), "перевод строки" (0Ah), "табуляция" (09) и др. Например, для привлечения внимания оператора в выводимую строку можно включить код звукового сигнала (07), при его исполнении встроенный динамик ПК издаст гудок. Ограничения на размер выводимого текста нет, если для его размещения на экране не хватит одной строки, то продолжение будет перенесено на следующую.

Поддержка вывода BIOS

Для более гибкого управления процессом вывода текста на экран предназначены функции BIOS, входящие в группу video Services (int 10h) и выполняющие следующие действия:

  • 09h – вывод символа и атрибута без перемещения курсора, страница 0;
  • 0Аh – вывод символа без атрибута без перемещения курсора, страница 0;
  • 0Еh – вывод символа без атрибута с перемещением курсора, страница 0;
  • 13h – вывод строки символов с атрибутами на указанную страницу.

Перед вызовом функции 09 и ОАh в регистры записываются следующие величины:

  • в ah – код функции (09 или OAh);
  • в ai – код выводимого символа (ASCII);
  • bb – не используется;
  • в сх – количество повторов символа;
  • bl – код атрибута, который нужен только для функции 09.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.