Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Прочитать все секторы жесткого диска через порт !


Автор: BAHO 5.8.2004, 13:58
Мужики, проблема такова! Загружаюсь с дискеты Вин95, а на компе стоит диск объемом 80 гигов, надо прочитать все секторы на диске. В распоряжении есть Borland C.
Прерывание 13H не работает с такими объемами!
Как мне можно это сделать? Может кто ссылочку кинет на какую-нибудь статейку про управлению жесткими дисками через порты....

Заранее благодарен.

Автор: Step 5.8.2004, 14:01
Рекомендую этот вопрос задать сначала в разделе АСМ-а, когда ответ получите там, то и тут Вам смогут помочь на основание ответа в АСМ разделе

Автор: p0s0l 5.8.2004, 14:48
Зачем через порты ? У 13-ого прерывания есть функция для чтения сектора, где №сектора - 64-битный, так что хватит для 80 гигов...
Лаба у меня когда-то была, вот накопал, не помню точно назначение полей структуры, но этот код прочитает 1 сектор:
Код

lea si, infoblock
mov byte ptr[si+0], 10h
mov byte ptr[si+1], 00h
mov word ptr[si+2], 0001h
mov word ptr[si+4], offset buf
mov word ptr[si+6], ds
mov ah, 42h
mov dl, 80h
int 13h

infoblock - это 16-байтная структура
si+4, si+6 - адрес буфера
si+2, если не ошибаюсь, сколько секторов читать...
№сектора указывается начиная с si+8...
dl = 80h - №диска
а это зачем - не помню:
Код
mov byte ptr[si+0], 10h
mov byte ptr[si+1], 00h

Автор: BAHO 5.8.2004, 17:20
p0s0l, спасибо! Покопаю в этом направлении smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)