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

Функции MS DOS для работы с консолью

Ценность программы прямо пропорциональна весу ее "выдачи".

Прикладная Мерфология

Функции MS DOS для работы с консолью сосредоточены в обработчике прерывания int 21h. Они представляют собой набор средств работы с консолью, занимающий промежуточное положение между программами пользователя и средствами BIOS. Для достижения большей эффективности некоторые из функций BIOS можно комбинировать с функциями MS DOS. Как пример такого полезного взаимодействия можно привести использование возможностей BIOS по работе с курсором. Как будет видно из приведенного ниже материала, среди функций MS DOS подобные средства отсутствуют. При выполнении конкретных практических заданий можно найти и другие полезные примеры взаимодействия.

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

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

Подробно использование функции 3fh для ввода данных рассматривается в главе 7, а здесь сосредоточимся на второй группе функций, в которую входит семь функций, отличающихся друг от друга следующими характеристиками:

  • ожиданием ввода при отсутствии символа в буфере клавиатуры или только проверкой буфера на наличие символов для ввода;
  • количеством вводимых символов;
  • наличием эха при вводе, то есть дублированием вводимого с клавиатуры символа на экране;
  • восприимчивостью к сочетанию клавиш CTRL + C (код 03h).

Чтение с эхом символа с клавиатуры (10h int 21h)

Функция 01h позволяет ввести один символ с клавиатуры. Если символа нет, то функция ожидает его ввода. Вводимый символ отображается на экране (эхо).

Вход: АН = 01h – чтение символа с эхом.

Выход: AL = ASCII-код символа или 0.

На выходе функция помещает в регистр AL ASCII-код символа или 0. Наличие нуля в регистре AL говорит о том, что в буфере клавиатуры находится расширенный ASCII-код и необходимо повторить вызов функции с тем, чтобы прочитать его второй байт. Также функция 01h проверяет наличие в буфере символов нажатия комбинации CTRL + C (CTRL + Break), при обнаружении которых производится вызов прерывания int 23h.

Для ввода нескольких символов данную функцию необходимо использовать в цикле.

:prg05_06.asm – программа ввода нескольких символов функцией 01h 21h
;………
.data
string db 5 dup (0)
len_string =$-string
adr_string dd string
.code
……movcx.len_sthng
lesdi.adr_string ml: mov ah.01h
int 21h
cmpal.0 расширенный код???
jnem2
обрабатываем расширенный код
jmp m3
ni2: stosb.формируем строку символов
m3: loop ml

Проверяя работу программы, вместо ввода очередного символа введите комбинацию CTRL + C и посмотрите реакцию программы.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.