FAT12 - 16: Загрузочный сектор

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

FAT12 - 16: Загрузочный сектор

Сообщение Zoomie » 21.10.2005 (Пт) 17:56

Народ! Кто знает почему при чтении в загрузочном секторе FAT 11 - 12 байтов получается значение 2, а не 512 (стандартный размер сектора)?
Влият ли на это чтение по 12 бит и 16?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.10.2005 (Пт) 19:52

Потому что всюду в PC младший байт идёт первым.
Изображение

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 21.10.2005 (Пт) 20:07

Во всех, во всех? Это что ли как бы традиция?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.10.2005 (Пт) 20:11

Что ли как бы МП x86 так устроен ;-)
Изображение

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 21.10.2005 (Пт) 20:28

Ага ясно. А вот как быть с 4 Б числами. Например нужно прочитать серийный номер диска или общее кол-во секторов на диске?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.10.2005 (Пт) 20:47

Всегда от младшего байта к старшему.
Изображение

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 21.10.2005 (Пт) 21:01

Тогда получиться чтоли:

N=1B+2B*256+3B*512+4B*1024
или
N=1B+2B*256+3B*256^2+4B*256^3

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 21.10.2005 (Пт) 21:01

Тогда получиться чтоли:

N=1B+2B*256+3B*512+4B*1024
или
N=1B+2B*256+3B*256^2+4B*256^3

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.10.2005 (Пт) 21:42

Конечно же, по степеням 256.
Изображение

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 22.10.2005 (Сб) 17:57

Еще вопрос: почему может возникать ошибка OverFlow при

Код: Выделить всё
Dim HideSectorsLT32 as Long
...
HideSectorsLT32 = GetByte(29) + GetByte(30) * 256 'тута ошибочка 6
...


Там получается 0 + 255 * 256

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.10.2005 (Сб) 18:00

* 256&
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 22.10.2005 (Сб) 18:02

А для чего "&"?

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 22.10.2005 (Сб) 18:09

& - это префикс Long, но я раньше думал что префиксы можно использовать для переменных, а тут вот так вот??? :shock:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.10.2005 (Сб) 18:39

Zoomie писал(а):& - это префикс Long, но я раньше думал что префиксы можно использовать для переменных, а тут вот так вот??? :shock:

Во-первых, это суффикс.
А во-вторых, его можно навешивать на константы, чтобы явно задавать их тип (по уполчанию Integer).
Изображение

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 22.10.2005 (Сб) 18:48

Пока смотрел про этот суффикс нашел ответ на мой вопрос про overflow:

Код: Выделить всё
Dim a As Byte
Dim b As Byte
Dim c As Long

c = [u]Clng(b)[/u] + [u]Clng(a)[/u]

или

c = b& + a&

т.к. c As Long


Все элементарно Ватсон!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.10.2005 (Сб) 18:55

Zoomie писал(а):Пока смотрел про этот суффикс нашел ответ на мой вопрос про overflow:

Ты хочешь сказать, что 256& не сработал?

Zoomie писал(а):
Код: Выделить всё
Dim a As Byte
Dim b As Byte
Dim c As Long

c = b& + a&

т.к. c As Long


Все элементарно Ватсон!

Ты свой код-то проверял?
Хинт: он не работает.
Изображение

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 22.10.2005 (Сб) 19:00

Zoomie писал(а):Dim HideSectorsLT32 as Long
...
HideSectorsLT32 = GetByte(29) + GetByte(30) * 256 'тута ошибочка 6
...


Нет я хочу сказать что это не сработало! :wink:

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 24.10.2005 (Пн) 19:18

А первые 3 Байта "ближний переход на программу начальной загрузки"
указывают на № байта или, может, кластера? :?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 24.10.2005 (Пн) 19:21

Емнип: первый - EB - ближний переход, второй - смещение в байтах, третий - 90 - заглушка.
Изображение

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 25.10.2005 (Вт) 17:30

tyomitch писал(а):третий - 90 - заглушка.


Тобишь 3й байт должен быть 90? :?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.10.2005 (Вт) 18:09

А чему он у тебя равен? 144?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 25.10.2005 (Вт) 18:13

GSerg, ты совершенно прав! Но помоему 144 <> 90 или я чего то не понимаю :(

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.10.2005 (Вт) 18:36

Если 144, значит надо срочно проверять хард скандиском, причём с проверкой поверхности...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 25.10.2005 (Вт) 18:57

Хе-хе!!! :lol: :lol: :lol:

У меня на дичкетах 3 Б - 144, На харде (FAT16) 3 Б - 144!
Тут что не то! Может 144 это 90 или заглушка !

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.10.2005 (Вт) 19:03

Баян в тему.

В мире есть 10 категорий людей: которые понимают двоичную систему счисления и которые не понимают :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 25.10.2005 (Вт) 19:08

Торможу сегодня...

90 (16) = 144 (10)

Мда... 8)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 24

    TopList