Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2011, 18:57   #1
Napkin
Пользователь
 
Аватар для Napkin
 
Регистрация: 09.12.2009
Сообщений: 25
Вопрос Количество секторов и размер диска

Используя механизм PIO получаю доступ к жесткому диску (ATA). После команды IDENTIFY DEVICE (0xEC) читаю паспорт диска.
Не могу разобраться как узнать кол-во секторов и соответственно получить размер диска.
Адресация - LBA-48. Число секторов, доступных в этом режиме, можно узнать из слов 100-103 блока идентификации устройства.
Вот полученные значения:
WORD 100:
старший байт: 234
младший байт: 176

WORD 101:
старший байт: 37
младший байт: 66

WORD 102:
старший байт: 0
младший байт: 0

WORD 103:
старший байт: 0
младший байт: 0

Посмотрел в то, что пишет EVEREST: 625142448 секторов (по 512 байт). Никак связать полученные мной значения с этой цифрой не получилось.. Все остальные параметры, которые я определял по паспорту, совпали с эверестовскими.
Удел сильных - уделывать слабых
Napkin вне форума Ответить с цитированием
Старый 04.04.2011, 19:42   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

смотрю по Кулакову
слово 57-58 текущая емкость в секторах.
а слова 92-126 зарезервированы.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.04.2011, 20:12   #3
Napkin
Пользователь
 
Аватар для Napkin
 
Регистрация: 09.12.2009
Сообщений: 25
По умолчанию

Слова 57-58 - это для режима CHS.
Смотрю по гуку (2007г, Интерфейсы устройств хранения: ATA, SCSI и другие). Не все слова из 92-126 зарезервированы. В частности 100-103, которые как раз и показывают сколько секторов доступно в LBA-48 (там ограничение по секторам - до 2^48 -1 штук)
Удел сильных - уделывать слабых
Napkin вне форума Ответить с цитированием
Старый 05.04.2011, 00:50   #4
Napkin
Пользователь
 
Аватар для Napkin
 
Регистрация: 09.12.2009
Сообщений: 25
По умолчанию

Разобрался. Может кому пригодится:
Максимальное число секторов (2^48)-1 будет занимать 48 бит (16 байт). Значение слова №100 соответствует первым 16 битам от общего числа секторов, слово №101 - битам 16-31 и так далее. Т.к. в моем случае последние 2 слова равны нулю, то:
word101 << 16;
word101+=word100;
Теперь значение word101 равно числу секторов диска.
Удел сильных - уделывать слабых
Napkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчитать количество слов и количество букв MDSIQ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 13.11.2010 16:57
Запись секторов на логический диск Windows 7/Vista SP2 Ivan_32 Win Api 0 11.10.2009 07:25
Как определить количество занятых секторов на диске в делфи? buka_14 Помощь студентам 0 16.04.2009 16:42
количество цифр и количество символов до первой гласной буквы 111111 Общие вопросы C/C++ 2 22.12.2008 12:15
Размер Image изменяется на размер картинки, а сама она рисуется на области первой картинки RPGer Мультимедиа в Delphi 6 20.10.2008 19:54