Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_з_1.doc
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
2.57 Mб
Скачать

9.3. Вывод информации на экран

Вывод информации в ассемблерных программах осуществляется обычно при помощи сервисных функции DOS (прерывание 21h), BIOS (прерывание 10h) или прямым отображением в текстовый видеобуфер.

Процесс вывода с использованием функций DOS и BIOS состоит в следующем:

- определенные регистры микропроцессора загружаются выводимой информацией или адресом буфера, содержащего выводимую информацию;

- в регистр АН заносится номер используемой для операции вывода функции;

- инициируется прерывание 21h или 10h.

Ниже представлен перечень функций прерывания 21h и 10h, использующихся для вывода информации.

Прерывание 21h.

Функция 02h - вывод на дисплей.

Вход:

AH=02h

DL = ВЫВОДИМЫЙ СИМВОЛ

Выход: нет

Описание: Посылает символ из DL на стандартный вывод. Обрабатывает символ Backspace (ASCII 8), перемещая курсор влево на одну позицию и оставляя его в новой позиции.

Функция 09h (выдать строку).

Вход: AH=09h

DS:DX= адрес строки, заканчивающейся символом '$'.

Выход: нет

Описание: Строка, исключая завершающий ее символ '$', посылается на стандартный вывод. Символы Backspace обрабатываются как в функции 02h.

Приведенный ниже фрагмент программы иллюстрирует процесс вывода строки на экран.

MOV АН, 09Н ;Выбор функции прерывания

MOV DX, OFFSET STR ; Занесение в DX адреса выводимой строки

INT 21H

; выводимая строка объявлена в сегменте данных

STR DB 10,13,'Неllо $' ;Описание строки

Функции DOS и BIOS подробно описаны в [1], а примеры их использования даны в [2]. Обе эти книги в электронном виде доступны в среде программирования WinASM 2.0 (см. пункт 8.3.2).

Вывод на экран через видеобуфер.

Всё, что мы видим на экране монитора, хранится в видеобуфере графического адаптера компьютера. Известно, что есть два режима работы монитора – текстовый и графический. Соответственно в оперативной памяти графического адаптера, управляющего монитором, есть две области памяти, которые называются текстовый видеобуфер и графический видеобуфер. Какие бы функции DOS или BIOS не использовались в программе, в любом случае выводимая на экран информация будет храниться в одном из видеобуферов адаптера.

Для прямого обращения к текстовому видеобуферу в программе необходимо предварительно настроить сегментный регистр ES на начало области памяти, соответствующей текстовому видеобуферу (базовый адрес текстового видеобуфера равен В800h).

Mov AX, 0B800h

Mov ES, AX

Следует также знать, что информация выводимая в текстовый видеобуфер, должна представлять собой символьные ASCII – коды. Например, для вывода числа 375 на экран необходимо последовательно, используя регистр AL, записывать в видеобуфер символьные коды этих трёх цифр: 33h 37h 35h. Для этого к каждой цифре выводимого числа требуется предварительно прибавить ASCII – код «0»=30h или объявить выводимое число как символьную строку:

STR DB ‘375’ ; строка с именем STR.

Пример программы вывода строки прямым отображением в видеобуфер см. в разделе «тема 5». Для вывода текстовой информации с использованием цвета в регистр AH следует записать код цвета символа и цвета атрибута (по умолчанию изображение будет чёрно-белым). Расположение выводимых символов на экране задаётся смещением через индексный регистр DI, нулевое смещение соответствует верхнему левому углу экрана. Каждый символ в видеобуфере занимает 2а байта – байт символа и байт атрибута. Примеры программ с описанием работы видеобуфера можно найти в [9].