Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
379727.doc
Скачиваний:
36
Добавлен:
22.09.2019
Размер:
1.92 Mб
Скачать

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

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

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

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

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

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

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

Важная информация находится в блоке PSP (Programm 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, но выводимая строка не может содержать символ '$', так как этот символ используется в качестве признака конца строки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]