Функции 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 и посмотрите реакцию программы.