Главная · Поиск книг · Поступления книг · 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 ... 9 10 11 12 13 14 15  16 17 18 19 20 21 22 ... 47
Ctrl-Break.
     Вы, вероятно, уже заметили, что функции 1,6,7 и 8 обеспечивают четыре
процедуры ввода с  клавиатуры  с  одной  из  восьми  возможных  комбинаций
ожидания нажатия клавиши,  отображения  введенных  символов  на  экране  и
проверки нажатия клавиши Ctrl-Break. Чтобы не путаться  в  их  назначении,
удобно представить все вышесказанное в виде следующей таблицы:


          Функция      Ожидание     Эхо      Проверка Ctrl-Break
          --------     --------     ----     --------------------
             1             да        да              да
             6             нет       нет             нет
             7             да        нет             нет
             8             да        нет             да


     Кроме того, функция 6 дублирует еще и функцию вывода на экран.  Ясно,
что эти процедуры реализуют базовые операции, которые  затем  используются
командами ДОС, и они вовсе не претендуют на логическую  законченность  при
обслуживании клавиатуры.
     Функция номер 9 используется  для  вывода  на  экран  дисплея  строки
символов, причем каждый из символов  выводится  так  же,  как  это  делает
функция 2. Определенная странность работы этой функции, которая  уменьшает
ее полезность,  заключается  в  том,  что  вместо  использования  счетчика
символов в строке, в  качестве  ограничителя  используется  знак  денежной
единицы, "$". Это лишний раз демонстрирует, что ДОС разрабатывалась не как
универсальная система, а как средство для решения определенных специальных
задач.
     Функция  номер  10,  шестнадцатиричное  значение   А,    обеспечивает
буферированный ввод с клавиатуры. В то время как остальные  функции  ввода
немедленно передают введенный символ, эта функция накапливает  законченную
логическую единицу ввода,  которая  завершается  нажатием  клавиши  "ввод"
(ENTER).  Остальные  функции  ввода  с  клавиатуры  позволяют   программам
немедленно реагировать  на  введенные  символы.  Однако  им  присущ  такой
недостаток  как  необходимость  программного  выполнения  любых   операций
редактирования, например, интерпретации клавиши возврата на одну  позицию,
означающей стирание предыдущего символа. Функция  номер  10  передает  все
стандартные средства редактирования ДОС в  распоряжение  Вашей  программы,
что может оказаться очень удобным. Каждую из функций нужно использовать  в
своем  случае,  что  позволит  Вам  наиболее    эффективно    пользоваться
возможностями, представленными в Ваше распоряжение операционной  системой.
Чтобы  воспользоваться  функцией  10,  в  Вашей  программе  должен    быть
предусмотрен буфер ввода, размер которого может  изменяться.  Первый  байт
указывает ДОС  размер  буфера,  а  второй  байт  используется  ДОС,  чтобы
сообщить Вам, сколько символов находится в буфере.
     Функция номер 11,  шестнадцатиричное  значение  В,  используется  для
проверки, нажата ли какая-нибудь клавиша  на  клавиатуре,  без  ее  ввода.
Подобно функции 6, эта функция не ожидает пока будет нажата клавиша. Но, в
отличие  от  функции  6,  если  клавиша  нажата,  ее  код  не  вводится  и
производится проверка нажатия клавиш Ctrl-Break.
     Функция номер 12, шестнадцатиричное значение С, очищает буфер ввода с
клавиатуры от всех введенных в него символов.  Может  так  случиться,  что
пользователь начнет набирать символы на  клавиатуре  прежде  чем  начнется
ввод. Если программа обнаруживает ошибку и посылает пользователю сообщение
об ошибке, необходимо иметь уверенность в том, что введенные с  клавиатуры
символы являются ответом на сообщение об ошибке, а не  остатком  чего-либо
введенного раньше. Для этого и служит функция 12, очищающая  буфер  ввода.
(Пояснение того, как работает буфер ввода можно найти  в  главе  10).  Эта
функция обычно предшествует выполнению функций  1,6,7,8  и  10.  Буфер,  о
котором идет речь, является внутренним буфером, а  не  буфером  программы,
использующимся в функции 10.
     Далее следуют функции обслуживания дискет. Чтобы лучше понять, о  чем
здесь пойдет речь,  необходимо  обратиться  к  информации  об  организации
файлов на дискетах, имеющейся в главе 5. Для использования большинства  из
этих функций необходим блок управления файлом (FCB) ДОС, который мы  здесь
описывать не будем.
     Функция номер 13,  шестнадцатиричное  значение  D,  используется  для
сброса дисковой подсистемы. Если был изменен номер дисковода,  выбираемого
по умолчанию, им снова делается дисковод А. См. также функцию 25.
     Функция номер 14, шестнадцатиричное значение Е,  используется  с  для
установления номера дисковода, выбираемого по умолчанию. Дисковод задается
номером от 0 до 3, что соответствует идентификаторам от А до D. См.  также
функцию 25.
     Функция номер 15, шестнадцатиричное значение F,  используется,  чтобы
открыть дисковый файл. Ваша программа должна сформировать блок  управления
файлом стандартного формата ДОС, включающий имя файла. Если файл не найден
на дискете, то программе возвращается признак ошибки.  Если  необходимо  в
случае отсутствия файла с указанным именем  создать  новый  файл  с  таким
именем,  следует  использовать  функцию  22.  Фактическое  открытие  файла
устанавливает логическое соединение между элементом справочника  файлов  и
блоком управления файлом в программе.
     Функция номер 16, шестнадцатиричное значение 10, используется,  чтобы
закрыть файл, который был открыт функцией 15. Практический  смысл  функции
закрытия файла заключается в модификации  элемента  справочника  файла  на
дискете.
     Функция номер 17, шестнадцатиричное  значение  11,  используется  для
запуска поиска в справочнике файлов дискеты. Эта функция используется  при
указании неполных  или  родовых  имен  файлов,  таких  как  "В:*.ВАК"  или
"???QQ.INC". Если найдено подходящее имя, тогда ДОС сформирует полный блок
управления файлом для этого файла, что позволит  Вашей  программе  открыть
файл. Использование родовых имен повышает гибкость и расширяет возможности
работы с файлами.
     Функция номер 18, шестнадцатиричное  значение  12,  используется  для
продолжения поиска файлов по родовому имени, начатого функцией 17. Функция
17 запускает поиск и возвращает первое  из  подходящих  имен.  Функция  18
продолжает поиск и возвращает имена всех последующих подходящих файлов.
     Функция номер 19, шестнадцатиричное  значение  13,  используется  для
удаления файла с дискеты. Заданное имя файла может быть родовым,  так  что
не требуется использовать функции 17 и 18 для удаления группы файлов.
     Функция номер 20, шестнадцатиричное  значение  14,  используется  для
последовательного чтения файла. Из  файла  считывается  очередная  запись.
Если чтение завершилось неудачей, то передается признак ошибки.
     Функция номер 21, шестнадцатиричное  значение  15,  используется  для
последовательной записи в файл. Если операция записи прошла  неудачно,  то
передается признак ошибки.
     Эти функции  последовательного  чтения  и  записи,  а  также  функции
прямого чтения и записи, 33 и 34, описанные ниже, используются только  для
записей фиксированной длины - ДОС не обеспечивает  средств  для  работы  с
записями переменной длины,  например,  строками  в  текстовом  файле.  Для
работы с записями переменной  длины  Ваши  программы  должны  осуществлять
логическую обработку записей. Одно из лучших средств для этого заключается
в описании файла в терминах ДОС как  последовательного  файла  с  записями
длиной в один байт, которые Вы сможете читать и писать посимвольно.
     Функция номер  22,  шестнадцатиричное  значение 16,  используется для
"создания" файла.  Если файл с таким именем существует, то он используется
повторно;  если  нет  -  то  создается  новый элемент справочника файлов с
нулевой длиной данных.  Эта функция также открывает файл, так что ее можно
использовать вместо функции 15,  если файл необходимо открыть,  независимо
то того,  существует файл или нет.  Функция 23, шестнадцатиричное значение
17, используется для переименования одного или нескольких файлов. Для этой
функции также могут использоваться родовые имена.
     Функции  с  номером  24  не    существует.    Функция    номер    25,
шестнадцатиричное  значение  19,  используется  для  определения    номера
дисковода, использующегося сейчас по умолчанию. Числовой код дисковода  от
0 до 3 соответствует именам от А до D. См. также функции 13 и 14.
     Функция номер 26, шестнадцатиричное  значение  1А,  используется  для
установления  адреса  рабочей  области  диска,  DTA,  в   которой    будут
выполняться операции с дискетой. Если Ваши программы не  заменяют  область
DTA, устанавливаемую по умолчанию, в ней будет всего  128  байт  и  нельзя
будет пересылать записи большей длины. DTA - это не то же самое, что буфер
чтения/записи секторов, используемый ДОС.
     Функция номер 27, шестнадцатиричное  значение  1В,  используется  для
определения адреса памяти, по которому находится таблица размещения файлов
текущего дисковода и другой информации о дискете. Эта функция  может  быть
использована для просмотра  таблицы  размещения  файлов,  например,  чтобы
установить сколько места осталось на дискете. Начиная с  версии  2.00  ДОС
эта функция  обеспечивает  доступ  только  к  первой  части  ТРФ,  которая
определяет тип дискеты.
     Функции с номерами от 28 до  32  не  существуют.  Функция  номер  33,
шестнадцатиричное  значение  21,  используется  для  чтения   произвольной
записи, указываемой логическим номером  записи.  ДОС  вычисляет  положение
произвольной записи по фиксированной длине записи и ее номеру.
     Функция номер 34, шестнадцатиричное  значение  22,  используется  для
произвольной записи на дискету.
     Функция номер 35, шестнадцатиричное  значение  23,  используется  для
определения размера файла. При использовании этой функции имеет место  ряд
странностей. Можно использовать родовое имя файла.  Файл  не  должен  быть
открыт. Размер файла определяется в терминах  длины  записи,  указанной  в
блоке управления неоткрытым файлом. Чтобы получить размер файла в  байтах,
необходимо установить размер записи равным одному байту.
     Функция номер 36, шестнадцатиричное  значение  24,  используется  при
переходе от последовательного режима к  произвольному.  Она  устанавливает
поле произвольной записи в ту же  позицию,  в  которой  находится  текущая
последовательная запись.
     Следующие две функции не относятся к обслуживанию дискет.
     Функция номер 37, шестнадцатиричное  значение  25,  используется  для
установки вектора прерывания. Поскольку вектора прерываний устанавливаются
очень просто, непонятно для  чего  нужна  эта  функция  -  разве  что  для
обеспечения дополнительной степени защиты.
     Функция номер 38, шестнадцатиричное  значение  26,  используется  для
создания нового программного  сегмента  в  порядке  подготовки  к  запуску
зависимой программы.
     Теперь мы снова вернемся к функциям, обслуживающим файлы на дискетах.
Функция номер 39, шестнадцатиричное значение 27, используется  для  чтения
нескольких записей, начиная с произвольной позиции в файле.
     Эта функция  может  быть  использована  вместо  нескольких  отдельных
вызовов функции 33, если объем памяти позволяет считывать целые  блоки  из
файлов.
     Функция номер 40, шестнадцатиричное  значение  28,  используется  при
записи в файл, начиная с произвольной позиции, нескольких записей.
     Функция номер 41, шестнадцатиричное  значение  29,  используется  для
преобразования имени файла в том виде, в каком оно вводится пользователем,
например,  "В:CHAPTER.4",  в  формат  блока  управления  файлом,   который
используется ДОС. Это несомненно очень полезная функция, которая позволяет
вводить имена файлов в обычном виде и возлагать всю работу  по  разбору  и
преобразованию на ДОС. Если необходимо, эта функция  позволит  Вам  задать
идентификатор дисковода, имя файла  или  расширение  имени  по  умолчанию,
когда они не указаны в анализируемой строке. Эта функция  также  позволяет
Предыдущая страница Следующая страница
1 ... 9 10 11 12 13 14 15  16 17 18 19 20 21 22 ... 47
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (1)

Реклама