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

Ваш аккаунт

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

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

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

Обращение к диску >8 Гб с помощью Int 13

1.1K
04 октября 2001 года
Charles
1 / / 20.04.2000
Как и куда передавать параметры и где получать результат
Аноним
1. Чтение секторов.
Вход: AH = 02
AL = число читаемых секторов
CH = цилиндр
CL = начальный сектор (биты 0..5)
и два старших бита номер
цилиндра (биты 6..7 )
DH = головка
DL = дисковод 00...7fh - FDD
80h..FFh - HDD
для первого master диска - 80h

ES:BX - адрес блока памяти, куда будут
отправлены прочитанные данные.

Выход: CF = 0
AH = 0
AL = число переданных секторов

Cf=1 -> Ошибка


А вообще INT 13h -это уже старый отстой. Лучше работать через контроллер HDD

from techno-cat
461
31 января 2002 года
gerard
102 / / 20.12.1999
Вообще-то, действительно лучше напрямую через порты. Но если уж нужно через INT 13, то лучше использовать INT 13 Extension, поддерживающее режим LBA. Оно есть во всех
современных BIOS-ах (с 1998 года - точно).
Проверить его наличие можно так

Вход
AH = 41h
BX = AA55h
DL = номер дисковода
Выход
AH = номер версии
BX = 55AAh
CF = 0
Если CF = 1 и AH = 1, то BIOS не поддерживает
INT 13 Extension.

Функции у него такие
42h - чтение
43h - запись
44h - проверка
47h - поиск
48h - получить параметры устройства
49h - считать состояние Change Line
4Eh - настроить устройство

Первые четыре используются для операций с секторами и имеют следующий формат

Ввод
AH = номер функции
DL = номер дисковода
DSSI = адрес блока адресов
Выход
CF = 0 и AH = 0 либо CF = 1 и AH = код ошибки

Блок адресов устроен так

00 (1 байт) - размер блока в байтах (должен быть не меньше 10h)
01 (1 байт) - пустой
02 (1 байт) - число секторов (максимум 7Fh),
если 0 - данные не передаются
03 (1 байт) - пустой
04 (4 байта) - адрес буфера для обмена
данными (сегментсмещение)
08 (8 байт) - абсолютный номер сектора на
диске (начиная с 0)
10 - здесь теоретически тоже может быть какая-то информация, но реально эта область не используется

Функция AH = 48h имеет такой же формат, только DSSI - адрес, куда помещаются
параметры устройства в следующем виде

00h (2 байта) - размер блока параметров
02h (2 байта) - информационные биты
04h (4 байта) - число цилиндров (физических)
08h (4 байта) - число головок (физических)
0Ch (4 байта) - число секторов на дорожке
10h (8 байт) - общее число секторов на диске
18h (4 байта) - число байт в секторе

В остальных функциях указывается только номер
устройства в DL


[ Это Сообщение было отредактировано gerard в 2002-02-01 0504 ]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог