Прерывание 21h (DOS) предназначено для предоставления программисту различных услуг со стороны DOS. Этими услугами является набор функций.
Последовательность действий при использовании этих функций:
1. Поместить номер функции в регистр AH. Если используется функция с подфункцией, то номер подфункции обычно помещается в регистр AL.
2. Поместить передаваемые функции параметры в определенные регистры (для каждой ф-ции соответствующие)
3. Вызвать прерывание командой int 21h
4. Извлечь рез-ты работы функции из определенных регистров
Основные функции ввода, вывода для прерывания 21h:
00h - завершение работы программы
01h – ожидание набора символа с последующим его эхосопровождением и с проверкой на CTRL+BREAK
На выходе в AL - ACSII-код символа.
02h – изображение (вывод) символа с проверкой на CTRL+BREAK.
На входе в DL - ACSII-код символа
05h - вывод символа на принтер.
На входе в DL - ACSII-код символа
06h – изображение символа без проверки на CTRL+BREAK.
На входе в DL - ACSII-код символа
07h – ожидание набора символа без последующего его эхосопровождения и без проверки на CTRL+BREAK
На выходе в AL - ACSII-код символа.
08h – ожидание набора символа с последующим его эхосопровождением и с проверкой на CTRL+BREAK
На выходе в AL - ACSII-код символа.
09h - изображение строки символов с проверкой на CTRL+BREAK.
На входе - DS:DX = начальному адресу строки с символом $ на конце.
0ah – чтение строки в буфер клавиатуры.
На входе DS:DX = адрес буфера с форматом:
1 байт - размер буфера для ввода (формирует пользователь)
2 байт - число фактически введенных символов (заполняет система по окончанию ввода-нажатию Enter (0dh), этот символ не считает)
3 байт и далее - введенная строка с символом 0dh на конце
На выходе - введенная строка в буфере
0bh – чтение состояния клавиатуры
На выходе AL = 0 - буфер НЕ пуст
AL = offh – буфер клавиатуры пуст
0сh – освобождение буфера клавиатуры и вызов нужной функции
На входе в AL – номер нужной функции
На выходе – регистры в соответствии с вызываемой функцией
Проверка на CTRL+BREAK означает, что если в процессе работы данной функции была нажата эта комбинация клавиш, то по умолчанию происходит прерывание 23h и выход из программы.