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

Функции MS DOS для вывода данных на экран

Для вывода данных на экран можно использовать два вида функций: универсальную функцию 40h (вывод в файл) и группу специализированных функций MS DOS вывода на экран.

Использование функции 40h уже рассматривалось в разделе, посвященном работе с файлами. Материал, представленный ниже, посвящен второй группе функций – функциям MS DOS для вывода символов на экран. В группу входят три функции. Рассмотрим их.

Вывод символа на экран (02h int 21h)

Функция 02h позволяет вывести один символ на экран.

Вход: АН >> 02h – вывод символа;

  • DL = символ для вывода.

Функция 02h проверяет наличие в клавиатурном буфере символов нажатия комбинации CTRL + C (CTRL + Break), при обнаружении которых производится вызов прерывания int 23h. В процессе вывода функция реагирует на управляющие символы, такие как 0dh (возврат каретки), 0ah (перевод строки), 08h (курсор назад на один символ), 07h (звуковой сигнал) и т. д.

Для того чтобы вывести строку, необходимо использовать цикл.

;выводим строку string на экран
mov ex.len_string:длину строки
lea si.string;адрес строки
mov ah. 02h ml: mov dl.byte ptr [si]
int 21h
inc si
loop ml

Прямой вывод символа на экран (06h int 21h)

Функция 06h выводит один символ на экран. Эта функция универсальна, так как используется и для ввода (см. выше), и для вывода символа.

Вход: АН = 06h – вывод символа на экран;

  • DL = символ для вывода (за исключением 0ffn).

Функция 06h не проверяет наличие в буфере символов нажатия комбинации CTRL + C (CTRL + Break). Порядок использования данной функции аналогичен порядку использования функции 02h.

Вывод строки на экран (09h int 21h)

Функция 09h выводит строку символов на экран. Строка должна обязательно заканчиваться символом $. Данную функцию удобно использовать для вывода на экран различных диагностических сообщений. Если требуется организовать вывод строк, длина которых формируется динамически, то лучше либо использовать упомянутую выше функцию 40h, либо выводить их в цикле, тело которого содержит одну из функций 02h или 06h.

Вход: АН = 09h – вывод строки на экран;

  • DS: DX – адрес строки для вывода с завершающим символом $.

Функция 09h проверяет наличие в клавиатурном буфере символов нажатия комбинации CTRL + C (CTRL + Break), при обнаружении которых производится вызов прерывания int 23h. В процессе вывода функция реагирует на управляющие символы, такие как 0dh (возврат каретки), 0ah (перевод строки), 08h (курсор назад на один символ), 07h (звуковой сигнал) и т. д.

Приведенный ниже фрагмент показывает порядок применения функции 09h.

:prg05_09.asm – программа вывода строки на экран функцией 09h int 21h
.data
string db "Строка для вывода функцией 09h $"
adr_string dd string
.code
:выводим строку string на экран
Ids dx.adr_string;адрес строки в DS:DX
mov ah.09h
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.