![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 07.05.2012
Сообщений: 2
|
![]()
Кто знает, как работать с флэшкой через сервисы BIOS и есть ли в ней или каких-либо современные расширения по работе с USB Flash drive? Как программно определить устройство, что оно - USB Flash device (т.е. какой у него номер? по типу: HDD - 80h, есть ли какая сигнатура устройства) и как выполнить чтение с него?
Поясню, почему нужны сервисы BIOS - программа для реального режима, должна работать в качестве загрузочного сектора, т.е. без какой-либо операционной системы. Последний раз редактировалось Atmel; 07.05.2012 в 11:26. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
там флэшка будет как жесткий диск подключена.
насколько помню, соответственно прерывания аналогичные. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#3 |
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 ; segment ![]() dd 1,0 ; номер первого сектора для чтения (отсчет с 0) в LBA |
![]() |
![]() |
![]() |
#4 |
Новичок
Джуниор
Регистрация: 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 Какой же номер будет у флэшки? |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как к 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 |