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

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


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)
Demon's Souls |#9| Heart of surprises

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


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

Программирование и кодирование

Предыдущая страница Следующая страница
1 ... 31 32 33 34 35 36 37  38 39 40 41 42 43 44 ... 198
            50   |    3   | Прерывание диспетчера функций. Содержит код
                 |        | для прерывания int 21h вызова диспетчера фун-
                 |        | кций MS-DOS, следующего по выходу far RET.
         ________|________|______________________________________________
            53   |    2   | Зарезервировано.
         ________|________|______________________________________________
            55   |    7   | Расширение блока управления файлом. Поля рас-
                 |        | ширения для блока #1 управления файлом. Уста-
                 |        | ревшее использование. Программы должны ис-
                 |        | пользовать вместо описателя файла. Для полу-
                 |        | чения более подробной информации по FCB (File

                                      - 3-17 -
         ________________________________________________________________
         Шестнадцатиричные|
         -----------------|                  Содержимое
         смещение| размер |
         ________|________|______________________________________________
                 |        | control block - блок управления файлом) обра-
                 |        | титесь к руководствам по MS-DOS).
         ________|________|______________________________________________
            5C   |   10   | Блок управления файлом номер 1. Содержит не-
                 |        | открытый блок FCB #1. Устаревшее использова-
                 |        | ние и в результате может привести к разруше-
                 |        | нию FCB #2 и длины командной строки. Пути
                 |        | имен файлов не поддерживаются. Вместо этого
                 |        | программы должны использовать описатели   фай-
                 |        | лов. Для получения более подробной информации
                 |        | по FCB, обратитесь к руководствам по MS-DOS.
         ________|________|______________________________________________
            6C   |   10   | Блок управления файлом номер 2. Содержит не-
                 |        | открытый блок FCB #2. Устаревшее использова-
                 |        | ние и в результате может привести к разруше-
                 |        | нию параметров командной строки. Вместо это-
                 |        | го программы должны использовать описатели
                 |        | файлов. Для получения более подробной инфор-
                 |        | мации по FCB, обратитесь к руководствам по
                 |        | MS-DOS.
         ________|________|______________________________________________
            7C   |    4   | Зарезервировано.
         ________|________|______________________________________________
             80  |   80   | Дисковая область передачи, назначаемая по
                 |        | умолчанию. Перекрывает при использовании
                 |        | строку текста командной строки.
         ________|________|______________________________________________
            80   |    1   | Длина командной строки. Длина текстовой стро-
                 |        | ки, которая была набрана следом за именем
                 |        | программы, минус любые переназначенные симво-
                 |        | лы или параметры.
         ________|________|______________________________________________
            81   |   7F   | Буфер командной строки. Текстовая строка, ко-
                 |        | торая была введена следом за именем программы.
                 |        | Символы переназначения (< и >) и их соответст-
                 |        | вующие имена файлов в этой области не появля-
                 |        | ются, т.к. переназначение прозрачно для прик-
                 |        | ладной программы.
         ________|________|______________________________________________

            Открытые описатели сохраняют свои показания  в  таблице  файлов
         системы. Неиспользуемые элементы в таблице помечаются шестнадцати-
         ричным значением 0FF. Первые пять обработок в таблице  описателей
         файлов зарезервированы за стандартными устройствами:  STDIN (стан-
         дартный ввод),  STDOUT (стандартный  вывод),  STDERR  (стандартная
         ошибка),  AUXIO (вспомогательный ввод-вывод) и LSTOUT (стандартный
         вывод на печать) и открываются при запуске процесса. Все показания
         отсчитываются от первоначального нулевого значения.
             Рис.3-8 показывает  состояние таблицы описателя  файла, приня-
         той по умолчанию,  сразу  же после успешного открытия файла myfile
         (мой файл).  Таблица  описателя   файла, принимаемая по умолчанию,
         является двадцатибайтовой  таблицей,   размещенной в PSP по смеще-
         нию 18 (шестнадцатиричное значение).   Этот  адрес запоминается  в

                                      - 3-18 -

         адресе таблицы описателя   при запуске процесса. В связи  с  тем,
         что первые  пять  обработок  зарезервированы за стандартными уст-
         ройствами, остается только 15 обработок, доступных для файлов или
         других устройств.
         .00h-----------02h-------------------05h-----------------------.
         |int 20h      |Вершина памяти  | 00 | Далекий вызов MS-DOS     |
          -------------|0Ah----------------------0Eh--------------------|
                       |Адрес завершения        |Адрес выхода Ctrl-Break|
                       |12h---------------------|16h--------------------
                       |Адр.вых. по крит. ошибке|PSP владельца|
         .18h-------------------------------------------------|
         |Таблица описателя файла                             |
         |----------------------------------------------------|
         |Таблица описателя файла (продолжение)               |
         |-------------------------------2Ch-----2Eh--------------------.
         |Таблица описателя файла(конец)|Среда  |Начальный адрес стека  |
          --------------32h-------------|34h----------------------------
                       |Счетчик описат. |Указатель таб.описат.|
         .38h-------------------------------------------------|
         |Зарезервированная область (длиной 40 байт)          |
          ----------------------------------------------------

         .50h-----------------53h----------55h----------------.
         |Функция int 21h    |Зарезерв.   |Расширение FCB     |
         |----------------------------5Ch---------------------|
         |Расширение FCB(продолжение)|Блок управл-я файлом #1 |
         |----------------------------------------------------|
         |Блок управления файлом #1 (продолжение)             |
         |----------------------------6Ch---------------------|
         |Блок управления файлом #1  |Блок управл-я файлом #2 |
         |----------------------------------------------------|
         |Блок управления файлом #2 (продолжение)             |
         |----------------------------7Ch---------------------|
         |Блок управления файлом #2  |Зарезервированная обл.  |
         |80Ch-81Ch-------------------------------------------|
         |Дл. |Буфер команд (длиной 127 байт)                 |
          ----------------------------------------------------

                              Рис.3-7. Структура PSP

             На Рис.3-8 значение описателя, возвращаемое при успешном вы-
         полнении функции OPEN,  равно 0005, которое означает, что файлу с
         именем  myfile назначен шестой элемент (вход) в таблице  описате-
         ля  файлов процесса. При  обращении шестой вход содержит значение
         03,  которое означает,  что файлу myfile был  назначен  четвертый
         вход  в  таблице файлов системы.  Рис.3-8 также демонстрирует ис-
         пользование первых  трех  описателей с  целью  показа  назначения
         для  одного и того же входа в системной таблице файлов нескольких
         обработок.  Максимальное количество входов  в  системную  таблицу
         файлов устанавливается с помощью предложения FILES = в файле кон-
         фигурации системы CONFIG.SYS.


                                      - 3-19 -
             .34h----------------------------.       .--------------.
             | Указатель таблицы описателя   |       | Описатель AX |
             | PS Segment:0018 (шестнадц.)   |       |  OPEN = 0005 |
              -------------------------------         --------------
                           |                               |
                            -------------------------------
                                                   |
                0     1      2      3      4     5 v     6     7
            .-------------------------------------------------------.
            |18h   |      |      |      |      |Таб.описател.файлов |
            | STDIN|STDOUT|STDERR| AUXIO|LSTOUT|myfile|(не использ.)|
            |  01  |  01  |  01  |  00  |  02  |  03  |  FF  |  FF  |
             -------------------------------------------------------
               |      |      |      |      |      |
               |-------------       |      |      |
               |Табл. файлов системы|      |      |
               |  .--------------.  |      |      |
               |  |  AUX      0  |<-       |      |
               |  |--------------|         |      |
                ->|  CON      1  |         |      |
                  |--------------|         |      |
                  |  PRN      2  |<--------       |
                  |--------------|                |
                  |  MYFILE   3  |<---------------
                  |--------------|
                  |Не использ.4  |
                   --------------

                      Рис.3-8. Таблица описателей файлов PSP

             В большинстве ситуаций пользователю никогда нет необходимости
         быть осведомленным об этих устройствах,  однако,  существуют  две
         ситуации, когда эти знания полезны.
             Первая ситуация возникает,  когда программа пользователя тре-
         бует больше описателей,  чем может быть открыто в  данное  время.
         Так как по умолчанию таблица описателей файлов поддерживает толь-
         ко 20 описателей и т.к. 5 описателей уже присвоены, то практичес-
         ки  невозможно  так далеко все предугадать.  Тем не менее,  чтобы
         обойти это ограничение,  программа должна установить  свои  собс-
         твенные  расширенные  таблицы описателей файлов,  как показано во
         фрагменте программы в листинге 3-2.
             При второй  ситуации листинг 3-2 предполагает,  что для прог-
         раммы использовано размещение новой таблицы и, кроме того,  пред-
         полагает,  что таблица была предварительно загружена с кодами 0FF
         (коды неиспользуемых  описателей).  Программа сначала  определяет
         ячейки  PSP,  используя  функцию  62h.  Из PSP находится размер и
         ячейки существующей таблицы описателей файлов,  и старая  таблица
         копируется в новую таблицу.  Новый адрес таблицы и ее размер сох-
         раняются в соответствующих полях PSP и обмен завершается.
             Другой возможностью, предоставляемой этим механизмом, являет-
         ся  то,  что программист теперь управляет переназначением ввода и
         вывода программы. В MS-DOS переназначение выполняется простым из-
         менением драйвера, связанного с конкретным устройством. Этот спо-
         соб даже работает для переназначения ввода и вывода, выполняемого
         со старыми, необрабатываемыми вызовами ввода и вывода (такими как
         функция 09h "Отобразить строку").
             Листинг 3-3  демонстрирует как устройство stdout (стандартный

                                      - 3-20 -
         вывод) переназначается  в  файл или устройство myfile (мой файл).
         Программа сначала открывает имя myfile и сохраняет описатель. За-
Предыдущая страница Следующая страница
1 ... 31 32 33 34 35 36 37  38 39 40 41 42 43 44 ... 198
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 

Реклама