Функция ОАН

Функция 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 ; Вызов функции