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

Ваш аккаунт

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

Последние темы форума

Показать новые сообщения »

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

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

Работа с дискетой в защищенном режиме

359
28 июля 2008 года
P*t*
474 / / 15.02.2007
Пытаюсь научиться в защищённом режиме читать данные с дискеты.
Нашёл вот такую информацию:
page1
page2
page3
page4
Проблема в том, что информация несколько устарела - там адрес в памяти задаётся 20битным числом, тоесть считать что-либо с дискеты можно только в первый мегабайт памяти:
Цитата:

Остальные два регистра содержат адрес буфера в памяти, с кото-
рым будет происходить обмен данными. Этот адрес задается как
20-битное число...


Трогать первый мегабайт очень не хочется. Можно ли как-нибудь работать с дискетой без его использования?

349
28 июля 2008 года
Phantom-84
656 / / 27.10.2005
Лично я использую для работы с флоппиком ISA DMA, т.е. ту самую 20-битную адресацию. Можешь использовать PIO, т.е. читать/писать данные побайтово вообще без использования аппаратных буферов. Кстати почему не хочется трогать первый мегабайт? Он сейчас для этих целей в основном и используется.
359
28 июля 2008 года
P*t*
474 / / 15.02.2007
Цитата: Phantom-84
Кстати почему не хочется трогать первый мегабайт? Он сейчас для этих целей в основном и используется.


причина 1) Я этот мегабайт уже почти весь использую.

причина 2) Прочитанные данные должны оказаться в области данных задачи, инициировавшей чтение. Их всё равно придётся перемещать из первого мегабайта. Было бы хорошо вместо это сразу считывать в нужное место.

Впрочем я, наверное, обойдусь и 20битной адресацией - я думал, что возможно как-нибудь образом в DMA использовать 32битную, но если нельзя, то ничего страшного.

39K
11 августа 2008 года
kupec
17 / / 11.08.2008
Вообще-то DMA контролер использует 24-битную адресацию. А если не хочется трогать первые 16мб, то можно попробовать через использование страничной адресации(изменяя cr3 в начале процедуры и возращая его обратно в конце), хотя я не уверен, что это сработает
349
12 августа 2008 года
Phantom-84
656 / / 27.10.2005
Флоппик заведен на канал 2, который является 8-битным, а для 8-битных каналов принято использовать только младшие 4 бита страничного регистра. Кроме того, для работы на уровне физических адресов в моей программе можно использовать только память ниже отметки 1 Мб. Память выше этой отметки содержится в общесистемном пуле так, что физический адрес очередной выделенной страницы является произвольным.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

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