Главная · Поиск книг · Поступления книг · 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 ... 146 147 148 149 150 151 152  153 154 155 156 157 158 159 ... 198
         рамме начальной загрузки. По описанию операционной системы MS-DOS
         версии 2.00 27 байтов записи  начальной  загрузки,  расположенные
         между  начальной командой перехода и программой начальной загруз-
         ки,  содержат информацию о формате диска. Обращаясь к этой группе
         данных, программы могут получить почти всю информацию по формати-
         рованию,  необходимую для диска.  В таблице 11-1 представлено со-
         держимое  блока информации о форматировании находящегося в записи
         начальной загрузки.
              Информация о  форматировании в записи начальной загрузки мо-
         жет оказаться очень нужной при определении формата  диска. Запись
         начальной  загрузки  исходно создается,  когда диск форматируется
         командой FORMAT (для гибких дисков) или командой FDISK (для жест-
         ких дисков). Часть информации о форматировании в записи начальной
         загрузки под названием  "OEM  and  Version"  ("Фирма-изготовитель
         комплектующего  оборудования  и  версия")  обычно содержит номера
         версии и реализации использовавшейся операционной  системы MS-DOS
         для создания записи начальной загрузки.  Если,  например,  версия
         3.3 операционной системы IBM-DOS использовалась для  форматирова-
         ния диска это поле будет содержать информацию "IBM 3.3".  Осталь-
         ные элементы информации по  форматированию  из  записи  начальной
         загрузки  представляют  собой набор (надмножество) из блока пара-
         метров BIOS (блок ВРВ) (см.  главу 6), поскольку он уже существо-
         вал, во время форматирования диска.
              Последние три элемента информации  о  форматировании  (коли-
         чество  секторов на треке,  количество головок и количество скры-
         тых) секторов определяются расчетным путем и эти данные  вставля-
         ются в запись начальной загрузки в процессе форматирования диска.
              Программа READFMT,  представленная листингом 11-1,  содержит
         описание способа, при помощи которого информация о форматировании
         из записи начальной загрузки считывается с диска  и  отображается
         на экране дисплея.  Кроме элементов форматирования,  которые при-
         сутствуют в записи начальной загрузки,  программа  READFMT  также
         осуществляет  расчет  нескольких других элементов,  относящихся к
         форматированию,  таких как общая системная память,  общая  память
         данных и общая емкость дисков. Программа READFMT отображает полу-
         ченные результаты на экране дисплея.


                                     - 11-11 -
                                                         Таблица 11-1
                   Информация по форматированию, содержащаяся в
                             записи начальной загрузки
         ДДДДДДДДВДДДДДДДДДДДВДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
         Смещение¦ Смещение  ¦        ¦
         (деся-  ¦(шестнадца-¦ Размер ¦    Содержание  поля
         тичное) ¦ тиричное) ¦        ¦
         ДДДДДДДД†ДДДДДДДДДДД†ДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
           0     ¦   00      ¦3 байта ¦Ближний переход к программе
                 ¦           ¦        ¦начальной загрузки
         ДДДДДДДД†ДДДДДДДДДДД†ДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
           3     ¦   03      ¦8 байтов¦Название фирмы-изготовителя    ¦
                 ¦           ¦        ¦оборудования и его версия   И  ¦
         ДДДДДДДД†ДДДДДДДДДДД†ДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДД¬  Н  ¦
          11     ¦   0B      ¦1 слово ¦Количество байтов    Б   ¦  Ф  ¦
                 ¦           ¦        ¦в секторе            Л   ¦  О Ф¦
          13     ¦   0D      ¦1 байт  ¦Количество секторов  О   ¦  Р О¦
                 ¦           ¦        ¦в кластере           К   ¦  М Р¦
          14     ¦   0E      ¦1 слово ¦Число зарезервиро-      B¦  А М¦
                 ¦           ¦        ¦ванных секторов      П  I¦  Ц А¦
          16     ¦   10      ¦1 байт  ¦Количество таблиц    А  O¦  И Т¦
                 ¦           ¦        ¦FAT                  Р  S¦  Я И¦
          17     ¦   11      ¦1 слово ¦Количество элементов А   ¦    Р¦
                 ¦           ¦        ¦в каталоге           М   ¦  П О¦
          19     ¦   14      ¦1 слово ¦Количество логичес-  Е   ¦  О В¦
                 ¦           ¦        ¦ких секторов         Т   ¦    А¦
          21     ¦   15      ¦1 байт  ¦Байт описателя среды Р   ¦    Н¦
          22     ¦   16      ¦1 слово ¦Количество секторов  О   ¦    И¦
                 ¦           ¦        ¦таблицы FAT          В   ¦    Ю¦
         ДДДДДДДД†ДДДДДДДДДДД†ДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДЩ     ¦
          24     ¦   18      ¦1 слово ¦Количество секторов в треке    ¦
          26     ¦   1A      ¦1 слово ¦Количество  головок            ¦
          28     ¦   1С      ¦1 слово ¦Количество  скрытых  секторов  ¦
         ДДДДДДДД†ДДДДДДДДДДДБДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
          30     ¦   1E     416 байтов¦Программа начальной загрузки   ¦
         446     ¦   1BE     16 байтов¦Информация о разделении        ¦
                 ¦           ¦        ¦памяти                         ¦
         462     ¦   1CE     50 байтов¦Остальная часть программы      ¦
                 ¦           ¦        ¦ начальной загрузки            ¦
         ДДДДДДДДБДДДДДДДДДДДБДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ


              * Для операционной системы МS-DOS версий 2.Х = 3-байто-
         вый переход
                Для операционной системы МS-DOS версий 2.Х  =  2-байтовый
         короткий переход плюс операция NOP.
              ** Общее количество элементов в корневом каталоге.
              *** Байты описателя среды не всегда являются действительны-
         ми, как для операционной системы MS-DOS версии 2.0
              **** Относится только к жестким дискам,  содержащим  таблицы
         начальной загрузки; эта область не используется на гибких дисках.




                                     - 11-12 -
                          Листинг 11-1. Программа READFMT
         ----------------------------------------------------------------
            PAGE          50,132
            TITLE         READFMT.ASM/.EXE
           .SALL          ; подавить выдачу макрорасширений в программе
           .8086          ; пользоваться  только командами
                          ; микропроцессоров 8086/8088
         ;*************************************************************
         ;**  Программа READFMT  Версии 1.00
         ;**     Настоящая  программа считывает сектор начальной заг-
         ;** рузки с любого диска, расшифровывает обнаруженный в  за-
         ;** писи  начальной загрузки блок параметров BIOS(BPB),и вы-
         ;** водит на экран дисплея эту информацию и некоторую другую
         ;** расчетную информацию.
         ;**
         ;**     Примечание: во время создания этой программы  перек-
         ;** лючатель  LINK  "/СР:1"  должен использоваться для того,
         ;** чтобы во время загрузки программы, ей распределялось  бы
         ;** действительно  нужное  количество  памяти.  По умолчанию
         ;** максимальным объемом распределяемой памяти в том случае,
         ;** когда "/СР:1" не задан, является вся память  выше  точки
         ;** загрузки  программы, что вызывает завершение программы с
         ;** выдачей сообщения об ошибке, потому что она не в состоя-
         ;** нии сделать дополнительное  перераспределение памяти  во
         ;** время своей работы.
         ;*************************************************************
         ;
         ;   СОСТАВ:
         INCLUDE       stdequ.inc  ; включить стандартный файл равенств
         INCLUDE       stdmac.inc  ; включить стандартный файл макросов
         INCLUDELIB    stdlib.lib  ; включить  стандартную библиотеку
                                   ; STDLIB.LIB во временное редакти-
                                   ; рование
                                   ;
         ; Заявки на программы обращения к внешним  библиотекам,
         ; находящиеся в STDLIB.LIB
         EXTRN  dosv2con:NEAR      ; получить и вывести на экран текущую
                                   ; версию DOS
         EXTRN  dosver:NEAR        ; дать текущую версию  DOS
         EXTRN  bin2dec2:NEAR      ; вывести на экран дисплея DX:AX в
                                   ; десятичных цифрах кода ASCII
                                   ; (если  регистр  DX=),  регистр AX
                                   ; считается беззнаковым
         ;
         ; - - - - - -  ИНИЦИАЛИЗАЦИЯ - - - - - - - - - - - - - - - - - -
         ;
         .MODEL   SMALL            ; малая модель
         .STACK  2048              ; создать 2-Кбайтовый  стек
         ;
         ;*************************************************************
         ;  ГЛАBHАЯ  ПРОГРАММА
         ;
         .DATA
         ;
         ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
         ;      Cсылки и обращения к компонентам записи начальной заг-
         ; рузки,  считанной  с диска и помещенный в блок памяти, осу-

                                     - 11-13 -
         ; ществляются при помощи ES.  Обращения  производятся  только
         . компонентам  блока  "Блок параметров BIOS"(BPB); первые три
         ; байта и все данные расположенные после  области  блока  ВРВ
         ; записи начальной загрузки, игнорируются.
         ;
         bootrecord     STRUC
         BootJump       db     3 DUP (?) ; исходная команда перехода
         OEMstring      db     8 DUP (?) ; фирма-изготовитель и версия
                                         ; операционной системы MS-DOS
         SectorBytes    dw     ?         ; количество байтов в секторе
         ClusterSec     db     ?         ; количество секторов в кластере
         ReservedSec    dw     ?         ; зарезервированные сектора
         FATcopies      db     ?         ; количество копий таблицы FAT
         DirEntries     dw     ?         ; количество элементов в
                                         ; корневом каталоге
         TotalSectors   dw     ?         ; общее количество  секторов
                                         ; диска (100% диска)
         MediaDescrip   db     ?         ; описатель среды
         FATsectors     dw     ?         ; количество секторов, занятых
                                         ; одной таблицей FAT
         TrackSectors   dw     ?         ; количество секторов в треке
         Heads          dw     ?         ; количество головок
         HiddenSectors  dw     ?         ; количество скрытых секторов
         bootrecord     ENDS
         ;
         .CODE
         ;
         ; Cохранение локальных данных (храните эти определения
         ; в сегменте  программы)
         ;
         DSsave         dw    seg DGROUP ; память для регистра DS
         ;
         .DATA
         PSPseg         dw     ?         ; сегмент PSP (Префикс про-
                                         ; граммного сегмента)
         .CODE
         main     PROC NEAR              ; начало основного процесса
         ;
         ;***********************************************************
         ; ЗАПУСК ПРОГРАММЫ
         ;***********************************************************
              mov   ds,DSsave           ; инициализация DS
              mov   ax,es               ; получить адрес сегмента PSP
              mov   word ptr PSPseg,ax  ; ....... и сохранить его
         ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
         ; Bывести на экран дисплея сообщение о запуске
         ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

               @DisStr Start1_Msg       ; вывести на экран дисплея
                                        ; сообщение о запуске
Предыдущая страница Следующая страница
1 ... 146 147 148 149 150 151 152  153 154 155 156 157 158 159 ... 198
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 

Реклама