Главная · Поиск книг · Поступления книг · 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 ... 151 152 153 154 155 156 157  158 159 160 161 162 163 164 ... 198
         ; параграфах  (1 параграф = 16 байтам).
         ;
         ;BXОД:       BX = размер в 16-байтовых параграфах запрошенного
         ;                 блока
         ;
         ;ВЫХОД:      "Успешно", если признак переноса = 0  при
         ;             AX = адрес сегмента распределенного
         ;             блока памяти (BX восстанавливается)
         ;             "Сбой",  если признак переноса = 1 при
         ;              AX = код ошибки
         ;                     7 = разрушены управляющие блоки памяти
         ;                     8 = недостаточно памяти
         ;              BX = наибольший  доступный блок памяти
         ;                   в параграфах
         ; Вызываемые стандартные программы: нет
         ;- - - - - - - - - - - - - - - - - - - - - - - - - -- - -
         memalloc          PROC      NEAR
         ;
                      push  bp               ; сохранить указатель базы
                      push  bx               ; сохранить  регистр  BX
                      mov   bp,sp     ; инициализировать указатель базы
         ;
                      xor   al,al     ; очистить AL
                      mov   ah,48h    ; загрузить функцию распределения
                                      ; памяти
                      @DosCall        ; выполнить распределение памяти
                      jnc   end_memalloc     ; выйти, если нет ошибок с
                                     ; с адресом сегмента в регистре AX
                                     ; иначе, выйти с установленным
                                     ; признаком переноса;
                      mov   word ptr [bp],bx ; блок максимального размера
                                             ; (BX) и код ошибки в AX
         ;
         end_memalloc:
                      pop  bx         ; восстановить регистр BX
                      pop  bp         ; восстановить указатель базы
                      ret
         memalloc     ENDP            ;
         ;
         ;
         ;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
         ; MEMFREE:  Освобождение  памяти : освободить блок памяти,
         ;          распределенный ранее стандартной программой MALLOC
         ;
         ;BXОД:     ES = адрес сегмента  распределенного блока памяти
         ;
         ;ВЫХОД:   "Успешно", если признак переноса = 0
         ;          (ES восстанавливается)
         ;
         ;         "Сбой",  если признак переноса = 1 при
         ;          AX = код ошибки
         ;              7 = разрушены управляющие блоки памяти
         ;              9 = неправильный адрес (ES  восстанавливается)
         ;

                                      - 11-29 -
         ; Вызываемые стандартные программы: нет
         ;- - - - - - - - - - - - - - - - - - - - - - - - - -- - -
         memfree      PROC      NEAR
         ;
                      push   bp      ; сохранить указатель базы
                      push   es
                      push   ax      ; сохранить регистр AX
                      mov    bp,sp   ; инициализировать указатель базы
         ;
                      xor    al,al             ; очистить AL
                      mov    ah,49h            ; загрузить функцию
                                               ; освобождения памяти
                      @DosCall         ; выполнить освобождение памяти
                      jnc    end_memfree  ; выход, если не было ошибок
                                        ; иначе, выйти с установленным
                                        ; признаком переноса
                      mov    word ptr [bp],ax  ; и код ошибки
                                               ;(в регистре AX)
         ;
         end_memfree:
                      pop    ax         ; восстановить регистр AX
                      pop    es
                      pop    bp         ; восстановить  указатель базы
                      ret
         ;
         memfree ENDP
         ;
         ;
         ;************************************************************
         ; Конец стандартной программы
         ;************************************************************
         ;
         .DATA                       ; переключение на сегмент данных
         ;************************************************************
         ; Hачало области сохранения данных
         ;************************************************************
         ;
         ; Переменные
         ;
         DiskDrive       db 0    ; рабочий дисковод (начальное
                                 ; значение = дисковод по умолчанию)
         ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
         ; Остальные (из вычисленных) переменные параметров дискового
         ; формата :
         Cylinders    dw   ?   ; общее количество цилиндров
         TotalBytes   dd   ?   ; общая емкость диска в байтах
         TotalFATSec  dw   ?   ; общее  количество  секторов  таблицы
                               ; FAT (всех  копий)
         DirEntBytes  dw   32  ; число байтов в элементе каталога
         DirSectors   dw   ?   ; сектора, занятые корневым каталогом
         DataSectors  dw   ?   ; общее количество секторов для хранения
                               ; файлов
         ClusterBytes dw   ?   ; количество  байтов  в  кластере
         TotalSectors dw   ?   ; общее количество кластеров
         FATentryBits db   12  ; количество битов в элементе таблицы FAT
         DataBytes    dd   ?   ; общее количество байтов данных (для
                               ; хранения файла)

                                     - 11-30 -
         Kbytes       dw   ?   ; общее количество килобайт (всего в
                               ; диске)
         Mbytes       dw   0   ; общее количество мегабайт (всего в
                               ; диске)
         Mbytes2      dw   0   ; и общее количество частей в мегабайтах
         ;
         ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
         ; Tекстовые сообщения
         ;
         Start1_Msg   db "Идентификатор формата диска операционной"
                      db   "системы  MS-DOS"
                      db "-- Версия 1.00",CR,LF,"$"
         Start2_Msg   db "BPB = Значение, извлеченное из записи"
                      db  " начальной загрузки;"
                      db "CAL = Вычисленное  значение",CR,LF,CR,LF
                      db "Информация о формате для дисковода $"
         ;
         OEM_Msg              db  "BPB: Форматируется при помощи:    $"
         SectorBytes_Msg      db  "BPB: Количество байтов в секторе: $"
         ClusterSectors_Msg   db  "BPB: Количество секторов в "
                              db  "кластере: $"
         ReservedSec_Msg      db  "BPB: Зарезервированные сектора:    $"
         FATcopies_Msg        db  "BPB: Копии таблицы FAT:            $"
         DirEntries_Msg       db  "BPB: Элементы корневого каталога:  $"
         TotalSectors_Msg     db  "BPB: Общее количество секторов "
                              db  "диска: $"
         MediaDescrip_Msg     db  "BPB: Описатель носителя:           $"
         FATsectors_Msg       db  "BPB: Сектора  таблицы FAT "
                              db  "(1 таблицы FAT):  $"
         TrackSectors_Msg     db  "BPB: Общее количество секторов "
                              db  "в цилиндре:  $"
         Heads_Msg            db  "BPB: Головки:                      $"
         HiddenSectors_Msg    db  "BPB: Скрытые  секторы:             $"
         ;
         TotalFATsectors_Msg  db  "CAL: Общее количество секторов "
                              db  "таблицы FAT: $"
         DirSectors_Msg       db  "CAL: Секторы каталога:             $"
         Total Bytes_Msg      db  "CAL: Общее количество байтов на"
                              db  "диске: $"
         Cylinders_Msg        db  "CAL: Общее  количество цилиндров:  $"
         DataSectors_Msg      db  "CAL: Общее количество секторов "
                              db  "данных:    $"
         TotalCluaters_Msg    db  "CAL: Общее количество кластеров:   $"
         ClusterBytes_Msg     db  "CAL: Количество байтов в кластере: $"
         FATentrySyze_Msg     db  "CAL: Размер элемента таблицы FAT:  $"
         DataBytes_Msg        db  "CAL: Общее количество байтов "
                              db  "данных:  $"
         ;
         FixedMedia_Msg       db  "(жесткий $"
         RemovableMedia_Msg   db  "(сменный $"
         Media_Msg            db  "носитель)$"
         Bits_Msg             db  "биты$"
         Bytes_Msg            db  "байты$"
         SmallFAT_Msg         db  "1,5 байта)$"
         LargeFAT_Msg         db  "(2 байта)$"
         CurrPartition_Msg    db  "(в пределах текущего разделения)$"
         PartitionInfo_Msg    db  "(информация о разделении)$"

                                      - 11-31 -
         ;
         ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
         ; Сообщения об ошибках:
         NonDOSerr_Msg db "Диск не может быть считан."
                       db "Вероятно, это не диск системы DOS.",CR,LF,"$"
         BadDrive_Msg  db "синтаксическая ошибка или"
                       db "заданный дисковод не разрешен.",CR,LF,"$"
         ReadError_Msg db "Общая ошибка при чтении диска."
                       db CR,LF,"$"
         UnknownErr_Msg db "Неизвестная ошибка - завершение."CR,LF,"$"
         ;
         ;
         ;***********************************************************
         ; Конец памяти данных
         ;***********************************************************
                   END    main                   ; конец программы

         ----------------------------------------------------------------



                         Таблицы разделения жесткого диска

              При ведении поддержки жестких или "фиксированных" дисков под
         управлением  операционной  системы MS-DOS версии 2.00 к сведениям
         по форматированию дисков был добавлен новый элемент: таблица раз-
         деления диска. Таблица разделения диска используется для описания
         того,  как диск разделяется на секции.  Эта таблица почти  всегда
         используется  только для жестких дисков (несменных) с емкостями в
         10 Мегабайт и выше. Таблица разделения диска состоит из 16 байтов
         информации,  начинающейся  со  смещением "шестнадцатиричное 01ВЕ"
         относительно начала записи начальной загрузки (первый  сектор  на
         диске). Структура таблицы разделения диска представлена в таблице
         11-2.
              Когда жесткий  диск разделен на одну или более частей коман-
         дой FDISK,  новая запись начальной загрузки с таблицей разделения
         диска  помещается  в  первый сектор каждой части.  Таким образом,
         диск с одной частью содержит  главную  таблицу  разделения  диска
         (она  хранится в записи начальной загрузки в самом первом секторе
         диске), а вторая таблица разделения диска в записи начальной  за-
         грузки помещается  в  первом секторе самой части.  Дополнительные
         части также содержат свои собственные записи начальной загрузки и
         таблицу разделения диска. Главная таблица разделения диска обнов-
         ляется каждый раз, когда используется команда FDISK для изменения
         разделения  диска, тогда  обновляется "поле состояния разделения"
         каждой отдельной части для того, чтобы оно отображало ее активное
         или неактивное состояние.



                                      - 11-32 -
                                                         Таблица 11-2
                        Структура таблица разделения диска
         ДДДДДДДДДВДДДДДДДДДДВДДДДДДДДВДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДД
         Смещение ¦ Смещение ¦        ¦           ¦
Предыдущая страница Следующая страница
1 ... 151 152 153 154 155 156 157  158 159 160 161 162 163 164 ... 198
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 

Реклама