ТАБЛИЦА РАЗМЕЩЕНИЯ ФАЙЛОВ

Первым  сектором первой копии FAT является
второй  сектор   на  нулевой   дорожке  нулевой   стороны  дискеты.  Его
относительный номер - 1. Загрузим его в память машины по адресу  CS:300.
Если вы  работали параллельно  с автором,  то ваш  дебеггер загружен,  а
системная дискета находится на устройстве A. Введите команду:
 

 

  -L CS:300 0 01 01

   После отключения дисковода введите:

  -d CS:300 L20

   На экране появится заданный участок:

976:300 FD FF FF 03 40 00 05 60-00 FF 8F 00 09 A0 00 0B ....@..'........
976:310 C0 00 0D E0 00 0F 00 01-11 20 01 13 40 01 15 60 @..'........@..'

   Это  дамп  первых  32  байтов  таблицы размещения файлов. Первый байт
устанавливается  в  соответствии  с  типом используемого диска. В  нашем 
случае  значение первого  байта обозначает двухстороннюю
дискету с девятью секторами на дорожке. Это значение равно FD. Второй  и
третий байты таблицы всегда равны FFH.

              ПЕРВЫЙ БАЙТ FAT ДЛЯ ДИСКЕТ РАЗЛИЧОГО ТИПА
------------------------------------------------------------------------
Значение байта                        Тип дискеты
------------------------------------------------------------------------
    FF                    Двухсторонняя, 8 секторов на дорожке
    FE                    Односторонняя, 8 секторов на дорожке
    FD                    Двухсторонняя, 9 секторов на дорожке
    FC                    Односторонняя, 9 секторов на дорожке
    F9                    Двухсторонняя, 15 секторов на дорожке
    F8                    Жесткий диск
------------------------------------------------------------------------


 

  -d CS:300 L20
976:300 FD FF FF 03 40 00 05 60-00 FF 8F 00 09 A0 00 0B ....@..'........
                 -----
976:310 C0 00 0D E0 00 0F 00 01-11 20 01 13 40 01 15 60 @..'........@..'

   В нашем  примере значения  03 40  записаны с  третьего байта  таблицы
(номер  первого  байта  равен  0).  Так  как  значение  записывается   в
"обратном" порядке, то наше слово читается как 4003Н. Каждая запись  FAT
состоит из 1,5 байтов. Поэтому полученное значение преобразуется. Если
номер предыдущего кластера четный (в нашем случае 2), то отбрасывается
старшая цифра. Если он нечетный, то отбрасывается младшая.
   Номер первого кластера  равен 2 -  номер четный. Отбрасываем  старшую
цифру  числа  4003Н  и  получаем  003.  Это  номер второго кластера. Для
вычисления номера  третьего кластера  умножим его  на 1,5.  Произведение
равно 4,5. Система отбрасывает ",5" и считает, что "4" - это номер байта
таблицы, где хранится слово с номером кластера.

  -d CS:300 L20
976:300 FD FF FF 03 40 00 05 60-00 FF 8F 00 09 A0 00 0B ....@..'........
                    -----
976:310 C0 00 0D E0 00 0F 00 01-11 20 01 13 40 01 15 60 @..'........@..'

   Слово, записанное с 4-го байта, содержит значение 40 00. Реально  это
значение 0040Н. Так как номер предыдущего кластера нечетный, отбрасываем
младшую цифру и получаем число 004. Это номер третьего кластера IO.SYS.
   Аналогично вычисляется номер четвертого кластера - 5 и номер пятого -
6. Посмотрим,  что произойдет  при вычислении  номера шестого  кластера.
Умножим номер  предыдущего кластера  на 1,5:   6х1,5=9.  Соответствующее
слово в таблице - FF F8:

  -d CS:300 L20
976:300 FD FF FF 03 40 00 05 60-00 FF 8F 00 09 A0 00 0B ....@..'........
                                   -----
976:310 C0 00 0D E0 00 0F 00 01-11 20 01 13 40 01 15 60 @..'........@..'

    Это слово содержит  число 8FFFH. Так  как номер предыдущего  кластера
был четным, то  отбрасывается старшая цифра  этого числа (8).  Результат
находится в интервале значений FF8-FFF и является маркером конца  файла.
То есть полученное число обозначает последний кластер файла IO.SYS.
   По  таблице  размещения  файлов  MS-DOS  осуществляет доступ к любому
файлу на  диске, свободно  ориентируясь среди  множества кластеров.  FAT
настолько  важна  пpи  любой  дисковой  операции,  что  на  каждом диске
организуются   две   ее   копии.   Предполагается,   что   вторая  копия
предназначена для использования в случае повреждения первой. Однако,  по
причинам, известным только разработчикам MS-DOS, вторая копия никогда не
используется.
 

Вы находитесь в разделе: 
Также вам будет интересно:

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