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

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


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)

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


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

Ассемблер и программирование для IBM PC

Предыдущая страница Следующая страница
1 ... 37 38 39 40 41 42 43  44 45 46 47 48 49 50 ... 85
увеличиваться на 3,  а адрес элементов таблицы цен - на 2.  Если сохранить
число выполненных циклов при поиске на равно,  то,  умножив это число на 2
(SHL  сдвиг  влево  на  один  бит),  получим  относительный адрес искомого
значения цены. (Начальное значение счетчика циклов должно быть равно -1).

     - Помните,  что DB позволяет определять значения, не превышающие 256,
а  DW записывает байты в обратной последовательности.  Команды CMP и CMPSW
предполагают,   что   байты   в   сравниваемых   словах   имеют   обратную
последовательность.

     - Если  таблица  подвергается  частым  изменениям,  или  должна  быть
доступна нескольким программам,  то запишите  ее  на  диск.  Для  внесения
изменений  в  таблицу можно разработать специальную программу модификации.
Любые программы могут загружать таблицу с диска и при обновлениях  таблицы
сами программы не нуждаются в изменениях.

     - Будьте  особенно  внимательны  при  кодировке сортирующих программ.
Пользуйтесь трассировкой для тестирования,  так как малейшая ошибка  может
привести к непредсказуемым результатам.


     ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ
     ________________________________________________________________

     14.1. Определите таблицу, которая содержит имена дней недели, начиная
с воскресения.

     14.2 Предполагая, что воскресенье равно 1, напишите  команды  прямого
доступа  к  таблице,  определенной  в  вопросе  14.1.  используйте   любые
подходящие имена.

     14.3 Определите три отдельных связанных таблицы, содержащих следующие
данные:
          а) числовые элементы: 06, 10, 14, 21, 24;
          б)  элементы  наименований:  видеокассеты,  приемники,   модемы,
     клавиатуры, дискеты;
          в) цены: 93.95, 82.25, 90.67, 85.80, 13.85.

     14.4  Составьте  программу,  позволяющую  вводить  числовой   элемент
(ITEMIN) и количество (QTYIN) с клавиатуры.  Используя таблицу из  вопроса
14.3, разработайте программу табличного поиска  элемента  равного  ITEMIN.
Выделите из таблиц наименование и  цену.  Рассчитайте  величину  стоимости
(Количество х Цена ) и выдайте на экран наименование и стоимость.

     14.5 Используя описание таблицы из вопроса 14.3, составьте процедуры:
а) пересылающую содержимое одной таблицы  в  новую  (пустую)  таблицу;  б)
сортирующую содержимое новой таблицы в восходящей последовательности.



ГЛАВА 15                                    Дисковая память I: Организация
__________________________________________________________________________

     Ц е л ь: Рассмотреть основные форматы записей  в  памяти  на  твердом
диске  (винчестере)  и  на  дискете,  включая   оглавление    и    таблицу
распределения файлов.


     ВВЕДЕНИЕ
     ________________________________________________________________

     Диск  является  распространенным  средством  для  более  или    менее
долговременного хранения данных.  Процессы  обработки  данных  на  твердом
диске (винчестере) аналогичны процессам для  гибких  дисков  (дискет),  за
исключением  того,  что возможно потребуется обеспечить пути для доступа к
многочисленным подоглавлениям винчестера.  Для  обработки  файлов  полезно
ознакомиться с организацией дисковой памяти.  Каждая cторона стандартной 5
1/4 дюймовой дискеты содержит 40 концентрических дорожек,  пронумерованных
от 00 до 39. На каждой дорожке форматируется восемь или девять секторов по
512 байтов каждый.
     Данные записываются  на диск в виде файлов,  аналогично тому,  как вы
записываете ассемблерные программы.  Хотя на типы  данных,  которые  можно
хранить   в   файле,   не   существует  каких-либо  ограничений,  типичный
пользовательский  файл  содержит  списки  заказчиков,  описи   товаров   и
предложений или списки имен и адресов. Каждая запись содержит информацию о
конкретном заказчике или описание товара.  Внутри файла все  записи  имеют
одинаковую  длину  и  формат.  Запись  может  содержать oдно или несколько
полей.  Файл заказчиков,  например,  может состоять из записей,  в которые
входит номер заказчика,  имя заказчика и долговой баланс. Эти записи могут
быть  расположены  в  порядке  возрастания  номеров  заказчиков  следующим
образом:

       ЪДДВДДДВДДДДД¬ЪДДВДДДВДДДДД¬ЪДДВДДДВДДДДД¬   ЪДДВДДДВДДДДД¬
       ¦#1¦имя¦суммদ#2¦имя¦суммদ#3¦имя¦сумма¦...¦#n¦имя¦сумма¦
       АДДБДДДБДДДДДЩАДДБДДДБДДДДДЩАДДБДДДБДДДДДЩ   АДДБДДДБДДДДДЩ

     Для  программирования  дисковых  файлов  следует  в   общих    чертах
ознакомится только с концепцией  и  терминологией.  Если  в  данной  главе
размеры диска не указываются, то предполагается диск 5 1/4" формата.


     ЕМКОСТЬ ДИСКА
     ________________________________________________________________

     Емкость гибких дисков:

          Версия DOS       Число       Число      Число       Всего
            и тип         дорожек     секторов   байтов в    на двух
            диска        на стороне  на дорожке  секторе     сторонах

          До DOS 2.0          40         8         512        327 680
          DOS 2.0 и после     40         9         512        368 640
          Высокая плотность   80        15         512      1 228 800
          3 1/2"              80         9         512        737 280

     Емкость твердых дисков:

             Тип           Число       Число       Число       Всего
            диска         дорожек     секторов    байтов в    на 4-х
                         на стороне  на дорожке   секторе     сторонах

          10 мегабайт        306         17        512      10 653 696
          20 мегабайт        614         17        512      21.377.024

     Указание  стороны  (головки),  дорожки  или    сектора    на    диске
осуществляется по номеру.  Для стороны и дорожки отсчет ведется с 0, а для
сектора - с 1.


     ОГЛАВЛЕНИЕ ДИСКА (КАТАЛОГ)
     ________________________________________________________________

     Для  того,  чтобы  организовать  хранение  информации    на    диске,
операционная система DOS резервируют определенные сектора для своих  нужд.
Организация данных на дискете или на твердом диске существенно зависит  от
их емкости.  Форматированная двухсторонняя дискета с девятью секторами  на
дорожке содержит следующую системную информацию:

          Сторона Дорожка Сектор

               0     0     1       Запись начальной загрузки
               0     0     2-3     Таблица распределения файлов (FAT)
               0     0     4-7     Каталог
               1     0     1-3     Каталог
               1     0     4 ...   Файлы данных

     Область записей данных начинается с третьего сектора на  1-й  стороне
0-й дорожки и продолжается до девятого сектора. Следующие записи заносятся
на 0-ю сторону 1-й доpожки, затем на 1-ю сторону 1-й дорожки, затем на 0-ю
сторону 2-й дорожки и т.д. Такая особенность заполнения дисковой памяти на
противоположных дорожках  снижает  число  перемещений  головки  дисковода.
Данный метод используется как для гибких, так и для твердых дисков.
     При использовании утилиты FORMAT /S для форматизации дискеты,  модули
DOS IBMBIO.COM и IBMDOS.COM записывается в первые сектора области данных.
     Все файлы, даже меньшие 512 байт (или  кратные  512),  начинаются  на
границе сектора.  Для каждого файла DOS создает на нулевой  доpожке  диска
элемент оглавления.  Каждый такой элемент описывает имя,  дату,  размер  и
расположение файла на диске. Элементы оглавления имеют следующий формат:

Байт                     Назначение

0-7       Имя файла,  определяемое из программы,  создавшей  данный  файл.
          Первый байт может указывать на статус файла: шест.00 обозначает,
          что данный файл не используется,  шест.E5 - файл удален, шест.2E
          - элемент подоглавления.
8-10      Тип файла
11        Атрибут файла, определяющий его тип:
          шест.00 - обычный файл;
          шест.01 - файл можно только читать;
          шест.02 - "спрятанный" файл;
          шест.04 - системный файл DOS;
          шест.08 - метка тома;
          шест.10 - подоглавление;
          шест.20 - архивный файл (для твердого диска).
12-21     Зарезервировано для DOS.
22-23     Время дня, когда файл был создан или последний раз изменялся,  в
          следующим двоичном формате:

                            |чччччммммммссссс|

24-25     Дата создания или последнего изменения файла, сжатая в два слова
          в следующем двоичном формате:

                           |ггггггг|ммммддддд|

          где год начинается с 1980 и может принимать  значения  от  0  до
          119, месяц - от 1 до 12, а день - от 1 до 31.
26-27     Начальный кластер  файла.  Относительный  номер  последних  двух
          секторов каталога.  Первый файл  данных  (без  COM-модулей  DOS)
          начинается  на  относительном  кластере  002.  Текущая  сторона,
          дорожка и кластер зависят от емкости диска.
28-31     Размер файла в  байтах.  При  создании  файла  DOS  вычисляет  и
          записывает размер файла в это поле.

     Все поля в каталоге диска,  превышающие  один  байт,  записываются  в
обратной последовательности байтов.


     ТАБЛИЦА РАСПРЕДЕЛЕНИЯ ФАЙЛОВ
     ________________________________________________________________

     Назначение таблицы распределения файлов (FAT - File Allocation Table)
- распределение дискового пространства для файлов.  Если вы создаете новый
файл или изменяете существующий, то DOS меняет элементы таблицы  файлов  в
соответствии с расположением файла на  диске.  Запись  начальной  загрузки
находится на секторе 1, далее на секторе 2 начинается  FAT.  FAT  содержит
элементы для каждого кластера, длина элементов FAT зависит  от  устройства
дисковой памяти.  Кластер для односторонних дискет представляет собой один
сектор, для двухсторонних дискет - смежную пару секторов.  Одно  и  то  же
число  элементов  в  FAT  определяет  в  два  pаза  больше   данных    для
двухсторонних дискет, чем для односторонних.
     Первые байты FAT определяют тип устройства:

               FE   Односторонняя на 8 секторов
               FC   Односторонняя на 9 секторов
               FF   Двухсторонняя на 8 секторов
               FD   Двухсторонняя на 9 секторов
               F9   Повышенная емкость (1,2 мегабайта)
               F8   Твердый диск

     Второй и  третий  байты  пока  содержат  FFFF.  В  следующей  таблице
показана организация данных  для  нескольких  типов  устройств  (приведены
начальные и конечные  номера  секторов).  Колонка  "Кластер"  представляет
число секторов в кластере:

          Устройство диска         Запись   FAT  Каталог Кластер
                                   нач.загр.
          Односторонний, 8 секторов    1    2-3     4-7     1
          Односторонний, 9 секторов    1    2-5     6-9     1
          Двухсторонний, 8 секторов    1    2-3     4-10    2
          Двухсторонний, 9 секторов    1    2-5     6-12    2
          Повышенная емкость (1,2 М)   1    2-15   16-29    1
          Твердый диск XT              1    2-17   18-49    8
          Твердый диск AT              1    2-838   4-115   4

     Начиная с четвертого байта, элементы FAT определяют  сектора.  Каждый
такой элемент имеет длину 12 битов. (В версии DOS 3 и старше элементы  FAT
для твердого диска могут иметь длину 16 битов).  Два первых элемента  FAT,
известные как относительные сектора 000 и 001,  соответственно,  указывают
на два последних сектора оглавления, определяя его размер и формат. Первый
файл данных начинается на относительном секторе 002.  Каждый  элемент  FAT
состоит из трех  шест.цифр  (12  битов),  которые  указывают  на  характер
использования конкретного сектора:

          000  свободный кластер,
          nnn  относительный номер следующего кластера для файла,
          FF7  неиспользуемый кластер (сбойная дорожка),
          FFF  последний кластер файла.

     Предположим, например, что дискета содержит только один файл с именем
Предыдущая страница Следующая страница
1 ... 37 38 39 40 41 42 43  44 45 46 47 48 49 50 ... 85
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (15)

Реклама