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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2012, 11:22   #1
Atmel
Новичок
Джуниор
 
Регистрация: 07.05.2012
Сообщений: 2
По умолчанию Как работать с флэшкой через сервисы BIOS

Кто знает, как работать с флэшкой через сервисы BIOS и есть ли в ней или каких-либо современные расширения по работе с USB Flash drive? Как программно определить устройство, что оно - USB Flash device (т.е. какой у него номер? по типу: HDD - 80h, есть ли какая сигнатура устройства) и как выполнить чтение с него?

Поясню, почему нужны сервисы BIOS - программа для реального режима, должна работать в качестве загрузочного сектора, т.е. без какой-либо операционной системы.

Последний раз редактировалось Atmel; 07.05.2012 в 11:26.
Atmel вне форума Ответить с цитированием
Старый 07.05.2012, 11:41   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

там флэшка будет как жесткий диск подключена.
насколько помню, соответственно прерывания аналогичные.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.05.2012, 18:44   #3
Станислав1
http://www.asmcode
Пользователь
 
Регистрация: 16.11.2011
Сообщений: 15
По умолчанию

Если загрузились с флешки или винта то можно так прочитать
mov dl,80h
mov ah,42h
mov si,dap
int 13h

dap: dw 16 ; DAP : Disk Address Packet
dw 43 ; Число секторов для чтения (не больше 127)
dw 7C00h+512,0 ; segmentffset pointer на память КУДА читать
dd 1,0 ; номер первого сектора для чтения (отсчет с 0) в LBA
Станислав1 вне форума Ответить с цитированием
Старый 07.05.2012, 22:13   #4
Atmel
Новичок
Джуниор
 
Регистрация: 07.05.2012
Сообщений: 2
По умолчанию

В BIOS Setup есть опция установки приоритета загрузочных устройств, в том числе отдельная опция для Bootable USB Flash drive. Значит, сама программа BIOS как-то различает эти устройства. Может быть, потому, что хорошо «разбирается» в шинах и своих мостах. Но не исключено, что и как-то по идентификаторам устройства.

У меня стоит задача перенаправить загрузку с флэшки в том случае, если опция загрузки с нее слетела. Попадаются платы, которые не всегда корректно работают при обрыве питания, и эта опция почему-то может слетать, и исправлять это приходится вручную. Вполне возможно, что «виновата» в этом также и сама флэшка (ее контроллер). Но чтобы выполнить эту задачу, нужно опросить все имеющиеся блочные устройства, что и должна выполнить программа загрузочного сектора винчестера. Но как обратиться к флэшке в отсутствие ОС?

В функции 42 прерывания 13h к диску обращаются по его номеру в DL drive index (1st HDD = 80h). В Result Buffer возвращается структура, в которой нет ничего, что бы определяло тип устройства.

00h 1st floppy disk ( "drive A:" )
DL = 01h 2nd floppy disk ( "drive B:" )
80h 1st hard disk
81h 2nd hard disk

Какой же номер будет у флэшки?
Atmel вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как к BIOS обращаться. Нужно чтение/запись BIOS. Dethon_ASM_Scarel Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 26.10.2011 11:40
Как включить сетевую карту через BIOS? pro100saniok Компьютерное железо 3 25.02.2011 09:32
Как работать с регистром 1С через OLE Toreno_87 Помощь студентам 0 22.07.2010 00:27
Как работать через Bluetooth в Delphi? W0LF Общие вопросы Delphi 6 29.11.2009 16:17
Как работать с двумерными массивами через указатели? pascalC Общие вопросы C/C++ 1 12.11.2008 08:33