Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#15| Dragon God
Demon's Souls |#14| Flamelurker
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Питер Нортон Весь текст 546.61 Kb

Программно-аппаратная организация компьютера IBM PC

Предыдущая страница Следующая страница
1 ... 7 8 9 10 11 12 13  14 15 16 17 18 19 20 ... 47
     Существует  три  типа  файлов  обработки  команд,  поиск  которых   в
определенном порядке  осуществляет  COMMAND.COM.  Название  команды  точно
совпадает с именем файла, в котором хранится программа обработки  команды.
Три типа файлов обработки команд различаются расширениями имен файлов. Три
расширения,  в  порядке  их  приоритетности:  ".COM",  которое  обозначает
программный  файл  в  одном  из  двух  программных    форматов;    ".EXE",
обозначающее программный файл другого формата и ".BAT", обозначающее  файл
пакетной обработки.  (Форматы  этих  файлов  и  масса  другой  информации,
касающейся файлов на дискетах, приведены в следующей главе.)
     Когда COMMAND.COM  находит  программный  файл  в  любом  формате,  он
выполняет загрузку этого файла в  память  и  выполняет  любое  необходимое
преобразование. После загрузки файла и формирования приставки программного
сегмента, COMMAND.COM передает управление этой программе,  так  чтобы  она
могла выполнить свою работу.
     Если файл обработки команды относится к типу ".BAT", то есть является
файлом пакетной обработки, то он содержит в  формате  текстового  файла  в
коде ASCII последовательность команд, которые должны выполняться так,  как
будто  они  вводятся  с  клавиатуры.  Одна  из  многих  задач  COMMAND.COM
заключается в отслеживании позиции в файле пакетной обработки,  так  чтобы
после выполнения одной команды сразу переходить к другой. Если в  процессе
обработки одного пакетного  файла  будет  вызван  другой,  то  возврата  к
первому не произойдет, так как файлы  пакетной  обработки  не  могут  быть
вложенными, зато их можно объединять в цепочку.
     В некоторых системах весь ввод  команд  может  быть  переназначен  на
файл, причем это относится как к программам, вводящим данные с клавиатуры,
так  и  к  интерпретатору  команд.  К  ДОС  это  не   относится.    Только
интерпретатор команд COMMAND.COM может автоматически выполнять  чтение  из
файлов пакетной обработки.
     Кстати, программы могут вносить изменения в файл пакетной обработки и
таким образом определять, какая команда  будет  выполнена  следующей.  Это
часто  делается  в  сложных  приложениях  для  замены    последовательного
выполнения программ.
     Файл COMMAND.COM имеет значительно больше функций, чем было  описано.
Фактически, COMMAND.COM разделяется на три части. Первая часть размещается
в памяти сразу после программ  IBMBIO.COM  и  IBMDOS.COM  и,  подобно  им,
становится резидентной частью ДОС. Фактически  эта  часть  COMMAND.COM  не
отличается от IBMDOS.COM.
     Вторая часть COMMAND.COM используется только  временно:  при  запуске
системы она осуществляет поиск файла пакетной  обработки  AUTOEXEC.BAT  и,
если он найден, его выполнение. После выполнения этой функции данная часть
COMMAND.COM уже не нужна.
     Третья,    наиболее    интересная    часть    COMMAND.COM    является
полурезидентной и одной из наиболее хорошо проработанных частей  ДОС.  Эта
часть включает интерпретатор команд и  программы,  реализующие  внутренние
команды ДОС. Необходимо отдавать себе  отчет  в  том,  что  такая  сложная
программа как интерпретатор команд не может быть очень компактной. С одной
стороны,  лучше  всего  было  бы,  чтобы  интерпретатор  команд  постоянно
находился в памяти. С другой стороны, не хотелось  бы,  чтобы  он  занимал
место в памяти все  время,  особенно,  если  места  не  слишком  много  (в
системах с 64К, например).
     Интересное решение этой проблемы заключается в том, чтобы  разместить
эту часть  COMMAND.COM  в  верхних  адресах  памяти  (обычно  используются
последние адреса) и  позволить  другим  программам  затирать  эту  область
памяти.
     Когда  снова  возникает  необходимость  использования  интерпретатора
команд, резидентная  часть  СOMMAND.COM  сначала  проверяет  находится  ли
интерпретатор команд в памяти. Если он запорчен  другими  программами,  то
резидентная часть перезагружает его с дискеты. (По этой  причине,  кстати,
необходимо иметь копии COMMAND.COM на всех Ваших дискетах,  даже  на  тех,
которые не форматировались в системном формате. Если в процессе работы  Вы
увидите сообщение:"Insert DOS disk..."  [вставьте  диск  ДОС],  это  будет
означать, что на используемой Вами дискете отсутствует файл СOMMAND.COM).
     Чтобы проверить наличие в памяти интерпретатора  команд,  вычисляется
контрольная сумма тех ячеек памяти, в которых он должен  находиться.  Если
сумма не совпадает с ожидаемой, то COMMAND.COM перезагружается. Вычисление
контрольной суммы может производиться при перезагрузке COMMAND.COM и, если
обнаружено различие, ДОС выдает сообщение об ошибке. Это происходит даже в
том случае, когда различие заключается всего лишь в том, что  Вы  изменили
начальное сообщение ДОС ("The IBM Personal Computer DOS"..), которое,  как
я  уже  упоминал,  можно  изменить.  Если  Вы  это  сделали  или    внесли
какие-нибудь другие изменения в COMMAND.COM,  это  необходимо  сделать  на
всех Ваших дискетах.
     Одна из причин,  по которой COMMAND.COM оформляется в виде отдельного
файла и не объединяется с двумя другими системными файлами,  заключается в
облегчении разработки прикладных версий. Это одна из основных возможностей
адаптации  IBM/PC  к   нуждам   пользователей.   Если   необходимо   часть
пользовательских  команд  сделать  внутренними  или изменить способ работы
интерпретатора   команд,   то   можно   написать   специальную   программу
COMMAND.COM.
     Примером прикладной версии COMMAND.COM может служить исходная  версия
1.00 текстового  процессора  Easy-Writer.  Он  имеет  собственный  вариант
COMMAND.COM и поэтому переход от ДОС  к  Easy-Writer  и  наоборот  требует
перезагрузки системы.
     Как рекомендует руководство фирмы "ИБМ", операционная  система  может
быть перезагружена после  нажатия  клавиш  Ctrl-Alt-Del.  Это  приводит  к
полному перезапуску системы, начиная с чтения загрузочной записи. Имеется,
однако, менее радикальный способ перезапуска. Если ввести команду COMMAND,
то  перезагрузится  только  COMMAND.COM  и  система  перезапустится    без
перезагрузки  IBMBIO.COM  и  IBMDOS.COM.  Это  позволяет  обновить  версию
интерпретатора команд и выполнить файл пакетной обработки AUTOEXEC.BAT.


     4.8. Оставшиеся части ДОС: внешние команды

     Последнюю часть операционной системы ДОС составляют внешние  команды.
Они называются внешними, поскольку они не включены  в  состав  ДОС,  и  не
являются резидентными в  памяти  IBM/PC.  Вместо  этого,  внешние  команды
хранятся в программных файлах на дискетах.
     Как все программные файлы, все внешние команды имеют расширение имени
файла ".COM" или ".EXE", что указывает, в каком из форматов они оформлены.
Мы рассмотрим эти форматы, когда будем рассматривать  структуру  дискет  и
файлов в следующей главе.
     Примерами внешних команд могут  служить  DISKCOPY,  COMP,  FORMAT,  а
такие программы как EDLIN, BASIC или BASICA  тоже  в  определенном  смысле
являются внешними командами,  хотя  их  лучше  все  же  считать  языковыми
процессорами, такими как макроассемблер или Паскаль.
     Внешние команды не отличаются от других программных  файлов,  которые
Вы сами разрабатываете или покупаете. С одной точки зрения внешние команды
действительно являются  частью  операционной  системы,  особенно  те,  без
которых операционной системой нельзя воспользоваться,  такие  как  FORMAT.
Однако,  с  другой  точки  зрения,  внешние  команды  -  это  всего   лишь
вспомогательные  программы,  утилиты,  которые  полезны,  но  которые   не
являются операционной системой.  Разница  между  внешней  командой  ДОС  и
обычной программой заключается просто в Вашем отношении  к  ней  -  как  к
части ДОС или как к чему-нибудь малосущественному.


     4.9. Доступ к средствам и услугам ДОС

     В это  разделе  мы  рассмотрим  все  служебные  процедуры,  доступные
пользователям ДОС. Здесь  будет  приведен  первый  из  нескольких  списков
служебных процедур,  которые  встречаются  в  этой  книге.  Данный  раздел
описывает  средства  ДОС,  а  последующие  главы  будут    последовательно
описывать служебные процедуры, обеспечиваемые системой BIOS в ПЗУ.
     Прежде чем перейти к подробному рассмотрению этих средств,  определим
способ  изложения,  который  мы будем использовать в дальнейшем.  Мы будем
последовательно  описывать  эти  средства,  указывая  их  идентифицирующие
номера и описывая, что каждое из средств делает. Мы не будем рассматривать
во всех подробностях способы вызова служебных процедур,  поскольку это  не
представляет   большого   интереса.   Еще  одна  причина,  по  которой  не
описываются способы вызова служебных процедур ДОС,  заключается в том, что
читателям  этой  книги  предлагается набор интерфейсных программ,  которые
избавят Вас  от  утомительных  процедур  загрузки  регистров  и  установки
флагов.
     В тех случаях, когда нужно будет сделать отступление, чтобы  сообщить
нечто интересное о конкретной процедуре, ее назначении или связи с другими
частями IBM/PC, мы будем делать паузу и излагать этот материал. Даже  если
Вы  не  собираетесь  писать  программы,  которые  будут  использовать  эти
процедуры, Вам все равно полезно будет прочитать этот раздел.  Он  поможет
Вам больше  узнать  о  том,  как  IBM/PС  работает,  какими  возможностями
обладает и как заставить ее выполнять некоторые удивительные задания.
     Если Вы пишите программы для IBM/PC, Вам просто  необходимо  овладеть
всеми средствами доступа к служебным процедурам. Чтобы  как  можно  больше
облегчить использование этих процедур, я написал полный набор интерфейсных
программ, который записан на дискетах, прилагаемых к этой книге.
     Все служебные процедуры ДОС и BIOS в ПЗУ приспособлены для их  вызова
из программ на языке ассемблера. Для каждой из этих процедур я написал  на
ассемблере специальную интерфейсную программу, которая обеспечивает доступ
к процедуре из программ, написанных на Паскале и  других  языках  высокого
уровня. Ассемблерные интерфейсные программы для процедур ДОС, описанных  в
этом разделе, приведены в листинге 4.101.
     Во многих случаях очень полезно  иметь  более  гибкое  средство,  чем
просто  интерфейсная  программа.  Не  менее  полезной  может  оказаться  и
какая-нибудь вспомогательная программа. Для  этой  цели  мною  включены  в
пакет многочисленные программы, написанные на Паскале,  которые  позволяют
наиболее полно использовать вызываемые служебные  процедуры.  Для  средств
ДОС, описанных  в  этом  разделе,  вспомогательные  программы  на  Паскале
приведены в листинге 4.102.
     Интерфейсные программы на ассемблере и вспомогательные  программы  на
Паскале позволят Вашим программам получить наиболее полный доступ ко  всем
возможностям IBM/PC.
     В ДОС используется семь процедур обслуживания прерываний и еще  одна,
восьмая, предназначенная для вызова всех функций ДОС.  Сначала  рассмотрим
отдельные процедуры.
     Прерывание  32  (шестнадцатиричное  значение  20)  используется   для
завершения работы  программы.  Это  нормальный  способ  завершения  работы
программы и запроса к  ДОС  на  выполнение  необходимых  восстановительных
операций.
     Эти восстановительные операции имеют два аспекта. Во-первых,  имеются
три служебных  прерывания,  которые  программе  разрешается  изменять  для
собственных целей, а после завершения  программы  ДОС  восстанавливает  те
значения, которые вектора этих прерываний имеют по умолчанию. (См. разделы
посвященные прерываниям с номерами 34, 35 и 36.) Во-вторых, если программа
изменила какие-либо данные, хранящиеся на дискете,  может  оказаться,  что
часть данных осталась в системных буферах и ДОС записывает эти  данные  на
дискету. Однако, ДОС  не  закрывает  открытые  файлы  и  программа  должна
сделать это сама, до обращения к прерыванию 32.
     Прерывание 33 (шестнадцатиричное значение 21) используется для вызова
функций,  которые  будут  рассмотрены  несколько  позже.  Следующие    три
Предыдущая страница Следующая страница
1 ... 7 8 9 10 11 12 13  14 15 16 17 18 19 20 ... 47
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (1)

Реклама