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

Error message

Notice: Undefined index: add term path in hansel_get_breadcrumbs() (line 524 of /data/sites/msdosworld.ru/www/sites/all/modules/hansel/hansel.module).

   Программа может иметь в своем распоряжении полный набор команд
интерфейса с пользователем 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 байта блока

 

Вы находитесь в разделе: 

Добавить коментарий