Функции DOS вывода данных на экран
DOS предоставляет следующие способы вывода данных на экран: - использование функций Int 21h (02h, 06h, 09h), обеспечивающих посимвольный ввод с клавиатуры в разных режимах; - обращение к экрану, как к файлу, с помощью функции 40h. ¨ Функция 02h. Вывод одиночного символа. Выводит символ, находящийся в регистре DL, на экран, после чего курсор сдвигается на одну позицию вправо. Для вывода строки функцию следует использовать в цикле. Допустимо перенаправление вывода. Выполняет обработку < Ctrl/C> при вводе этой комбинации с клавиатуры перед выводом каждого 64-го символа. Эта функция выводит и управляющие ASCII- символы с кодами 07h, 08h, 09h, 0Ah, 0Dh. Символ с кодом 07h (bell, звонок ) вызывает звуковой сигнал, с кодом 08h (backspace, забой ) – возвращает курсор на одну позицию влево, с кодом 09h (tab, табуляция ) – смещает курсор на одну позицию вправо, кратную 8. Действия управляющих клавиш с кодами 0Ah и 0Dh рассматривались ранее. Вызов: AH = 02h, Int 21h. Выход: DL = ASCII – код символа, AL = код последнего записанного символа (кроме случая, когда DL = 09, тогда возвращается значение 20h). Использование данной функции рассмотрим на примере процедуры перехода на новую строку. PROC NewLine push ax push dx mov ah, 2; Запрос функции 02h mov dl, 13; Возврат каретки int 21h; Вызов DOS mov dl, 10; перевод строки int 21h; Второй вызов DOS pop dx pop ax ret ENDP NewLine ¨ Функция 09h. Вывод строки. Выводит строку символов на устройство стандартного вывода (используется в системных программах для вывода на экран информационных сообщений). Строка должна заканчиваться символом $ (код 24h), который служит признаком конца строки, и сам не выводится. Допустимо перенаправление вывода. В сообщение могут быть включены и управляющие коды (07h, 08h, 09h, 0Ah, 0Dh), которые вызывают соответствующие им действия (см. функцию 02h). Допустимо использование Exc- последовательностей. Функция выполняет обработку < Ctrl/C> при вводе этой комбинации с клавиатуры перед выводом каждого 64-го символа.
Пример использования. ..................... Promt DB ‘Name? $’ ..................... lea dx, [Promt]; Адрес строки Promt: DS: DX mov ah, 09h; Запрос функции 09h int 21h; Вызов DOS ..................... ¨ Функция 40h. Вывод данных в файл или в устройство. Универсальная функция вывода данных из буфера пользователя в сегменте данных в файл или на устройство, дескриптор которого указывается в регистре BX. Дескриптор 1, закреплённый за стандартным устройством вывода, обеспечивает перенаправление вывода. Значение регистра CX определяет число байтов, которые должны быть выведены, а пара регистров DS: DX указывает адрес выводимых данных. Управляющие коды 08h, 0Ah, 0Dh и некоторые другие приводят к выполнению соответствующих им действий. После завершения вывода при CF = 0 регистр AX содержит число действительно выведенных байтов, а при CF =1 – возвратный код ошибки. Как и при использовании функции 3Fh, это коды ошибок 5 или 6. Пример использования. ....................... Out_Area DB 20 DUP(?) ....................... mov ah, 40h; Запрос функции 40h mov bx, 01; Дескриптор дисплея mov cx, 20; Число пересылаемых байт lea dx, [Out_Area]; Адрес буфера для выводимого сообщения int 21h; Вызов DOS ........................
|