Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Загрузка файла с флэшки с помощью int 0x13

1.9K
26 января 2007 года
disasm
232 / / 06.02.2006
В бутлоадере пытаюсь загружать файл с флэшки с помощью функции 2 прерывания 0x13. Если файл лежит в начале флэшки то все ок, если ближе к концу, то грузиться что-то левое. Цепочки кластеров просчитываются правильно, единственное что заметил, так это то что для кластеров в конце носителя будет номер рабочей поверхности (head) порядка 60-70, а в документации на прерывание написано, что допустимые значения 0-15.
Может ли загрузка идти не так из-за этого? Если да, то каким прерыванием надо пользоваться?

Для моей флэшки
размер: 256Мб, 503521 секторов
63 сектора на трек
255 поверхностей
Значения взяты из бутсектора после форматирования флэшки.

Заранее спасибо за помощь
252
26 января 2007 года
koderAlex
1.4K / / 07.09.2005
эти прерывания были реализованы раньше чем флешки появились .
пользуй EDD .
1.9K
26 января 2007 года
disasm
232 / / 06.02.2006
А есть ли какая-нибудь документация по этой "загадочной аббревеатуре"?
551
26 января 2007 года
Pavia
357 / / 22.04.2004
Прерывание 13h функция 2-3 позволяет адрессовать к
Цилиндрам в размере 1024
Секторов на трек 63
Головокам 256
Около 8ГБайт

Головок было до 0-15 - было до тех пор пока диски были маленькими. После этого стали придумывать. И придумали в биусе завели виртуальные головки цилинды, секотра. Так что ты можешь использовать это прерывание.
Код:
02H read sectors
    Input: DL = drive number (0=drive A...; 80H=hard disk 0; 81H=hard disk 1)
           DH = read/write head number
           CH = track (cylinder) number (0-n) ◄═╗
           CL = sector number (1-n) ◄═══════════╩══ See note below.
           AL = sector count (no more than 1 cylinder's worth of sectors)
           ES:BX => caller's buffer address
           0:0078 => Diskette Parameter Table  (for diskette operations)
           0:0104 => Hard Disk Parameter Table  (for hard disk operations)
  Output: Carry Flag=CY=1 if error occurred and disk error code in AH.
          ES:BX buffer contains data read from disk

          Note: Sector values are 6-bits and Cylinder values are 10-bits:
                 1 1 1 1 1 1
                ╓5┬4┬3┬2┬1┬0┬9┬8╥7┬6┬5┬4┬3┬2┬1┬0╖
            CX: ║c c c c c c c c C c S s s s s s║
                ╙─┴─┴─┴─┴─┴─┴─┴─╨─┴─┴─┴─┴─┴─┴─┴─╜
                                 ╚═╩═══> used as high bits of cylinder number


Насчет EDD его тоже можно использовать если биус поддерживает.
BIOS Enhanced Disk Drive Services (EDD)
Прерывание тоже int 13h а вот функции для работы имеют номера 41-48.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог