Функция ОАН
Функция 09Н
Функции 02Н
Функции 01Н
Описание функций работы с клавиатурой и дисплеем диспетчера функций MS-DOS
Для вызова функции прерывания DOS 21h необходимо проделать следующие действия:
выбрать функцию, выполняющую требуемые действия;
занести номер функции в регистр аh;
подготовить другие регистры (если это необходимо);
написать команду int 21h;
прочесть результаты или состояние из регистров, указанных в описании данной функции.
Ниже следует описание некоторых функций .
Выполняет ввод с клавиатуры одного символа и отображает его на экране.
· Вызов: ah = 01h
· Возвращаемое значение: аl = код ASCII введенного символа
· Примечание. Введенный символ отображается на экране (выполняется эхо-отображение). Комбинация клавиш Ctrl/С (или Ctrl/Break) прекращает выполнение программ пользователя.
Выполняет отображение символа на стандартный вывод (дисплей).
· Вызов:
· ah = 02h
· dl = отображаемый символ
· Возвращаемое значение: нет
· Примечание. Символ отображается на стандартный вывод. Комбинация клавиш Ctrl/C (или Ctrl/Break) прекращает выполнение программ пользователя.
Выполняет отображение строки на стандартный вывод.
· Вызов:
аh = 09Н
ds: dx = указатель на отображаемую строку
· Возвращаемое значение: нет
· Примечание: Строка отображается на стандартный вывод. $ признак конца строки, $ не отображается, dx содержит смещение строки, ds - сегментный адрес. Ниже приведены код управления курсором:
· 0dh (13) - перевод курсора в начало текущей строки;
· 0ah (10) - перевод курсора вниз на 1 строку;
· 08h (8) - перевод влево на 1 позицию;
07h (7) - звонок.
Пример.
· Чтобы вывести на экран с новой строки текст: “Функция 09Н для выдачи текста на экран” и затем перевести курсор в следующую строку, следует в сегменте данных описать строку:
· beg db 0dh, 0ah, “Функция 09Н для выдачи текста на экран”, 0dh,0ah, “$”
· а в программном сегменте записать команды:
lea dx,beg ; адрес строки в dx
mov ah,09h ; номер функции в аh
int 21h ; вызов функции
Выполняет ввод с клавиатуры в буфер строки символов.
· Вызов:
· аh= 0аh
· ds: dx = адрес буфера ввода
· Возвращаемое значение:
Строка символов по указанному адресу
· Примечание. Читается со стандартного ввода. dx содержит смещение буфер вывода, DS - сегментный адрес. Буфер вывода имеет следующую структуру: 0-й байт содержит максимальное количество символов в буфере; 1-й байт содержит количество реально введенных символов; начиная со 2-го размещён буфер для ввода размером не менее указанного в в 1-м байте. Выполняется эхо-отображение. Комбинация клавиш Ctrl/C (или Ctrl/Break) прекращает выполнение программы пользователя. Символы вводятся один за другим, до тех пор, пока не будет введен код ODh (код клавиш “Enter”), завершающий строку. В ходе ввода строки пользователь может редактировать строку, и, в частности, использовать “забой”.
· Пример.
· Пусть требуется ввести строку длиной не более 10 символов. При этом в сегменте данных можно описать буфер, например, таким образом:
buffer db 11 ; Нулевой байт буфера
entered db (?) ; Число введенных символов
string db 11 dup (?) ; Введенные символы
Сам ввод выполняется командами:
lea dx, buffer ; Адрес буфера в dx
mov ah, 0ah ; Номер функции в аh
int 21h ; Вызов функции