Справочник программиста на персональном компьютере фирмы IBM. Системные ресурсы
Страница 17. Использование команд интерфейса с пользователем из программы


1.3.3 Использование команд интерфейса с пользователем из программы.

Программа может иметь в своем распоряжении полный набор команд
интерфейса с пользователем DOS, таких как DIR или CHKDSK. Когда
эти команды используются из программы, загружается и запускается
вторая копию COMMAND.COM. Хотя такой подход может сэкономить
много усилий при программировании, для его успешной реализации
требуется достаточное количество памяти для этой второй копии и
Ваша программа может попасть в ловушку если памяти недостаточно.
Высокий уровень.
Бейсик 3.0 может загрузить вторую копию COMMAND.COM с помощью
оператора SHELL. SHELL обсуждается в [1.3.2]. COMMAND.COM загру-
жается когда не указано имя файла, поэтому вводя просто SHELL, Вы
получаете запрос MS DOS. В этот момент можно использовать любую
из утилит DOS, включая командные файлы. Для возврата в вызвавшую
программу надо ввести EXIT.
Средний уровень.
В этом случае к примеру, приведенному в [1.3.2] нужно добавить
командную строку. Обычно она начинается с байта длины строки,
затем следует сама командная строка и, наконец, код ASCII 13. При
передаче команды COMMAND.COM Вы должны указать /C перед строкой
(см. пункт "Вызов вторичного командного процессора" руководства
по MS DOS). Вы должны также указать накопитель, на котором нахо-
дится COMMAND.COM, поместив имя накопителя в начале командной
строки. Чтобы вывести каталог накопителя A:, а COMMAND.COM при
этом находится на накопителе B:, нужна строка:
COMMAND_LINE DB 12,'B: /C DIR A:',13
Следующий кусочек кода устанавливает адрес командной строки в
блок параметров, используемый в примере [1.3.2]:
LEA BX,PARAMETERS ;получение адреса блока пар-ров
MOV AX,OFFSET COMMAND_LINE ;получение смещения ком. строки
MOV [BX]+2,AX ;пересылка в 1-е 2 байта блока
MOV AX,SEG COMMAND_LINE ;получение сегмента ком. строки
MOV [BX]+4,AX ;пересылка во 2-е 2 байта блока

 
« Предыдущая статья   Следующая статья »