Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Структура и принципы работы MS-DOS.doc
Скачиваний:
65
Добавлен:
02.05.2014
Размер:
379.9 Кб
Скачать

Получение системной информации

Функция 30h возвращает в регистре AX номер версии MS-DOS. Например, для версии MS-DOS 5.00 содержимое регистра AH равно 00h, регистра AL - 05h, для версии 6.2, соответственно, 14h и 06h.

Дополнительно через регистр BH функция возвращает программе ОЕМ-код фирмы-производителя операционной системы (IBM - 00, DEC - 16h, 0FFh - Microsoft и т. п.). В регистрах BL:CX после вызова функции должен находится серийный номер дистрибутива операционной системы, однако в существующих версиях MS-DOS серийный номер всегда равен нулю.

Эта информация может применяться для анализа возможности использования таких средств операционной системы, которые поддерживаются не всеми версиями MS-DOS.

Функции 2Ah и 2Ch позволяют программе узнать системную дату и время.

Есть функции, возвращающие текущий диск и текущий каталог. Номера этих функций - 19h и 47h.

Функция 2Fh позволяет программе узнать адрес текущей области DTA (Disk Transfer Area). Эта область используется, например, при поиске файлов в каталоге.

Важная информация находится в блоке PSP (Program Segment Prefix). Этот блок располагается в памяти непосредственно перед выполняющейся программой. В нем находятся, в частности, параметры, передаваемые программе при запуске. Функция 62h возвращает адрес текущего блока PSP.

Кратко перечислим некоторые другие функции, предназначенные для получения системной информации.

Номер функции

Описание

35h

Позволяет получить значение вектора прерывания с заданным номером

4Dh

С помощью этой функции можно узнать код завершения программы

59h

Предназначена для получения расширенного кода ошибки

54h

Позволяет определить, используется ли проверка при записи на диск

33h

Позволяет узнать, может ли пользователь прервать работу программы при помощи комбинации клавиш <Ctrl+Break>

Символьный ввод и вывод

Эти функции применяются для работы со всеми символьными устройствами, такими как консоль, принтер, последовательный порт. Они называются функциями стандартного ввода/вывода.

Ввод и вывод программы, использующей стандартные функции, может быть переназначен, например, в текстовый файл.

Приведем обзор основных функций стандартного символьного ввода/вывод в виде таблицы.

Код

Назначение

Описание

01h

Ввод с клавиатуры

Выполняется ввод символа с устройства стандартного ввода, а также эхо-вывод символа на стандартное устройство вывода. Пользователь может прервать работу программы при помощи комбинации клавиш <Ctrl+C> и <Ctrl+Break>

06h

Ввод с клавиатуры без ожидания

Ввод символа с устройства стандартного ввода без ожидания, а также вывод его на устройство стандартного вывода.Комбинации клавиш <Ctrl+C> и <Ctrl+Break> не проверяются

07h

Прямой ввод с клавиатуры

Ввод символа с клавиатуры.Комбинации клавиш <Ctrl+C> и <Ctrl+Break> не проверяются

08h

Ввод с клавиатуры

Аналогично функции 07h, но проверяются комбинации клавиш <Ctrl+C> и <Ctrl+Break>

02h

Отобразить символ

Отображаемый символ посылается на стандартное устройство вывода

09h

Отобразить строку

На стандартное устройство вывода символов посылается строка, в конце которой находится символ "$"

03h

Ввод из последовательного порта

Вводится символ из последовательного порта

04h

Вывод в последовательный порт

Выводится символ на последовательный порт

05h

Вывод на принтер

Выводится символ на принтер

Из таблицы видно, что для ввода с клавиатуры можно использовать несколько функций. Ввод без эхо-вывода удобен для такой информации, как пароли. Если логика работы программы не допускает прерывания со стороны пользователя, нужно использовать функции, которые не проверяют комбинации клавиш <Ctrl+C> и <Ctrl+Break>.

Для вывода строки символов можно использовать функцию 09h, но отображаемая строка не может содержать символ "$", так как этот символ используется в качестве признака конца строки.