Assembler для начинающих


Командный процессор



Командный процессор


    Наряду с файловой системой DOS обеспечивает операционную среду для
    прикладных программ.  Первый компонент DOS с которым сталкивается
    пользователь, - это командный процессор.  Эта часть DOS берет на
    себя обработку вводимых пользователем команд и запуск прикладных
    программ.
 
      В первый момент после включения питания "интеллектуаль- ность"
    IBM PC невысока: возможно и имеется большой потенциал, но
    способностей хоть как-то реализовать его немного. В постоянной
    памяти ЭВМ хранятся программы тестирования компонентов системы -
    POST (Power=On Self=Test - самопроверка при включении) и установки
    в начальное состояние устройств ввода-вывода. Остальная часть


    записанной в ПЗУ базовой системы ввода-вывода BIOS (Basic Input
    Output System) предоставляет программисту, работающему с языком
    ассемблера, набор средств, которые помогают ему обращаться к
    аппаратным средствам, не беспокоясь о том, как технически они
    реализованы. Но этого не достаточно, чтобы обеспечить среду для
    выполнения серьезных прикладных программ.
 
      Последнее является функцией DOS. После установки ЭВМ в
    начальное состояние программа POST выполныет загрузку DOS с диска
    или дискеты в оперативную память. Этот процесс называется загрузкой
    системы. Первое, что делает DOS, - загружает минимальную программу,
    необходимую для загрузки остальной части DOS. По окончании процесса
    загрузки на дисплей выводтися название операционной системы и
    указание на авторские права. Помимо всего прочего в названии указан
    номер соответствующей версии операционной системы. Иногда этот
    номер играет важную роль, так как каждая новая версия означает
    дополнительные функциональные возможности операционной системы.
 
      После операции загрузки система готова к приему команд от
    оператора (за исключением специального случая, о котором будет
    сказано ниже). На этом этапе управление передается командному
    процессору - DOS произвела загрузку в память командного процессора,
    файловой системы и других служебных программ, и все они готовы
    выполнять свои функции. Передача управления командному процессору
    индицируется им следующим запросом к оператору
 
      A>
 
      Этот запрос содержит двоякий смысл. Символ ">" означает
    готовность командного процессора к приему команды. Префикс "A"
    указывает на выбранный по умолчанию дисковод с гибким диском. Так
    как DOS может обрабатывать файлы, расположенные только на каком-то
    одном диске, то в случае одновременной работы с несколькими дисками
    или дискетами пользователь должен указать, к какому из дисководов
    следует обратиться системе. В персональной ЭВМ дисководы
    обозначаются буквами латинского алфавита. У вычислительной системы
    с двумя накопителями на гибких дисках имеется дисковод A: и
    дисковод B:. Жесткий диск обычно обозначается C: (После
    наименования дисковода следует двоеточие.) Обычно файлы,
    используемые системой DOS, считываются с дисковода, выбранного
    системой по умолчанию, если только оператор не изменит этот
    порядок. Для того чтобы считать файл с выбранного по умолчанию
    дисковода, системе требуется только имя этого файла. Для считывания
    файла с любого другого дисковода нужно кроме имени файла указать
    DOS наименование дисковода.
 
      Только в ответ на команды, которые поступают от пользователя
    DOS выполняет какие-то действия. Все команды, относящиеся к DOS,
    вводятся в ответ на запрос с ее стороны, индицируемый символом ">".
    Пользователь вводит имя нужной ему команды, после чего поступившая
    заявка обрабатывается командным процессором. Как он обрабатывает
    эту заявку, зависит от команды, которую ввел пользователь. Имеются
    встроенные, или резидентные команды, которые всегда доступны. Либо
    команда может инициировать нерезидентное, или транзитное
    выполнение. Для выполнения таких команд должен существовать
    определенный файл на диске.
 
      Встроенные команды обеспечивают поддержку файловой системы. Они
    сделаны резидентными в DOS, поскольку часто используются при работе
    с данными, хранящимися на дисках. После того, как пользователь ввел
    команду, интерпретатор командных строк передает управление
    соответствующей программе DOS. Программа реализует свою функцию,
    соответствующую спецификации введенной команды, затем возвращает
    управление DOS. На Фиг.5.1 приведены резидентные команды дисковой
    операционной системы.
 
            Команда           Действие
          --------------------------------------------------------
            COPY    Копирует файл с одного места в другое
            DATE    Вывод/модификация текущей даты
            DIR     Вывод каталога дискеты
            ERASE   Удаление файла с дискеты
            PAUSE   Система ждет нажатия клавиши
            REM     Вывод комментария
            RENAME        Изменить имя файла
            TIME    Вывод/модификация текущего времени
            TYPE    Вывод содержимого файла
          --------------------------------------------------------
            Фиг. 5.1 Резидентные команды DOS
 
      Примером резидентной команды может служить команда DIR, которая
    выводит на дисплей справочник дискеты. На Фиг.5.2 показаны выходные
    данные, полученные в результате выполнения команды чтения каталога.
    Обратите внимание, что в справочнике дискеты для каждого
    записанного на ней файла уазываются его имя и тип, а также длина в
    байтах, дата и время его создания. Так как для загрузки любой
    программы DOS необходимо выполнить команду чтения каталога, то эта
    команда являеися встроенной.
 
             ----------------------------------------
            A>dir
             Volume in drive A has no label
             Directory of  A:\
 
            COMMAND  COM      37637  17/06/88  12:00
            AUTOEXEC BAT         38 4/03/89  17:33
            CONFIG      SYS     96  17/06/88  12:00
            COUNTRY  SYS      12838  17/06/88  12:00
            DISKCOPY COM      10428  17/06/88  12:00
            DISPLAY  SYS      15741  17/06/88  12:00
            FDISK COM  70151  17/06/88  12:00
            FORMAT      COM  22923  17/06/88  12:00
            KEYB  COM  14759  17/06/88  12:00
            KEYBOARD SYS      23360 3/08/88  12:00
            REPLACE  EXE      17199  17/06/88  12:00
            SELECT      COM  3674 3/08/88  12:00
            SELECT      HLP  27562 3/08/88  12:00
            SELECT      PRT  1594 3/08/88  12:00
            SYS   COM  11472  17/06/88  12:00
            012345      678    109  17/06/88  12:00
                   16 File(s)     17408 bytes free
             ------------------------------------------
 
                  Фиг. 5.2 Каталог дискеты
 
      Если пользователь введет нерезидентную команду, то командный
    процессор попытается загрузить ее с диска или дискеты. В этом
    случае он выступает в роли загрузчика программы. Предполагая, что
    имя файла совпадает с именем команды, интерпретатор просматривает
    справочник в поисках такого файла, а когда находит, загружает его в
    память. Затем интерпретатор передает управление загруженной
    программе, которая теперь может реализовывать свои функции.
 
      Но не каждый файл может быть загружен с помощью командного
    процессора. Тип файла должен быть либо .COM, либо .EXE, что
    соответствует либо файлу команды, либо выполняемому файлу. Конечным
    продуктом выполнения операций ассемблирования и редактирования
    связей является файл типа .EXE. Отсюда вытекает возможность
    написания собственной системной команды. Если написали,
    странслировали и скомпоновали программу на языке ассемблера, а
    затем оставили эту программу на дискете, то ее можно загружать и
    выполнять так же, как и любую другую программу DOS. Именно это
    позволяет писать программы, которые будут выполняться под
    управлением DOS.
 
      Существуют различия между файлами типа .COM и типа .EXE. Они
    имеют различные структуры и управление им передается по- разному.
    Хотя обычно после этапа редактирования связей получаются файлы типа
    .EXE, существуют некоторые причины для использования и файлов типа
    .COM. В следующем разделе будут обсуждаться различия между типами
    файлов и тем, как преобразовывать файл типа .EXE в файл типа .COM.
 
      Рассмотрим теперь пример вызова программы. Хорошей иллюстрацией
    здесь может служить ассемблер. Чтобы вызвать ассемблер, нужно
    ввести команду
 
      A>ASM
 
      Каталог дискеты содержит файл с именем ASM.EXE. Это и есть
    ассемблер. После ввода команды ASM, он просматривает дискету в
    дисководе A: (выбранном по умолчанию). Найдя файл с именем ASM.EXE,
    командный процессор загружает и передает управление ассемблеру.
    Теперь вычислительная система находится под управлением ассемблера.
    При благополучном завершении трансляции ассемблер вернет управление
    командному процессору. Заметьте, что файл, содержащий ассемблер -
    это файл типа .EXE, поэтому он может быть загружен командным
    процессором.
 
      Если ассемблер находится на дискете, установленной в дисководе
    A:, то пользователь может обратиться к другому дисководу следующим
    образом:
 
      A>B:ASM
 
      Префикс B: указывает DOS, что файл находится на дискете в
    дисководе B:. Файл полностью определяется не только указанием его
    имени, но и дисковода, с которого он будет считан. Одного имени
    файла достаточно только при считывании файла с дисковода,
    выбранного по умолчанию. Для того чтобы оттранслировать файл,
    расположенный на носителе в дисководе B: с помощью ассемблера,
    который находится на дискете в дисководе A:, нужно ввести следующую
    команду:
 
      A>ASM B:FILE.ASM
 
      В этой команде одновременно задаются программы ASM, считываемые
    с дисковода, который выбран по умолчанию, и исходный файл FILE.ASM,
    считываемый с дисковода B:.
 
      Это можно сделать и другим способом: задать команду B:, которая
    предписывает DOS сделать дисководом, выбираемым по умолчанию,
    дисковод B:.
 
      A>B:
      B>A:ASM FILE.ASM
 
      Заметьте, что после этого запрос со стороны системы меняется на
    B>. Приведенная в этом примере команда по своему действию полностью
    идентична команде из предыдущего примера.
 
      Кроме того, интерпретатор командных строк может работать с
    файлом, называемом файлом с пакетом команд, с расширением имени
    .BAT. Этот тип файла совершенно отличен лт файлов типа .COM и типа
    .EXE. Файл типа .BAT не содержит выполняемого машинного кода, а
    состоит из нетранслированных команд, которые интерпретируются
    командным процессором. Все содержащиеся в этом файле команды
    выполняются DOS по очереди. Можно считать, что файл типа .BAT
    заменяет процедуру ввода команд с клавиатуры, так как они
    содержатся непосредственно в соответствующем файле. После того,
    как система закончила обработку пакетного файла, она обращается за
    следующей командой к клавиатуре. Все эти особенности делают файл
    типа .BAT удобным средством выполнения повторяющихся заданий. После
    того, как такой файл уже создан, единственная команда обращения к
    нему заменяет ввод всех содержащихся в нем команд.
 
      В системе допускается специальный файл с именем AUTOEXEC.BAT.
    Если такой файл имеется на диске, то сразу же после своей загрузки
    DOS обращается к нему, передавая управление командам, составляющим
    пакет команд этого файла. Это позволяет автоматически загружать с
    диска нужную пользователю программу. Предположим, что вы написали
    прикладную программу, использующую DOS. (При этом говорят, что
    программа была написана с "привязкой к DOS".) В случае создания
    файла AUTOEXEC.BAT, инициирующего выполнение прикладной программы,
    оператору, работающему с этой прикладной программой, совершенно не
    нужно будет знать, как работает интерпретатор командных строк. Он
    знает, что управление осуществляет программа и это главное.




Содержание раздела