Страница 17 из 20 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 байта блока |