Низкоуровневое программирование для Дzenствующих

Вид материалаДокументы

Содержание


Рустам Галиев
Начальная загрузка
JMP) на код, начинающийся после блока параметров BIOS
2.Загрузочный код
AH – функция (0 – сброс, 2 – чтение сектора, 3 – запись сектора); AL
CH – номер дорожки; CL
13h прерывания BIOS 10h
Бог или студент
Низкоуровневое программирование для Дzenствующих #34
Бредисловие от WASM GROUP
Гарри Поттер и девайс маглов
Рустам Галеев
Нестандартный загрузчик
Jmp invite
Jmp txt_out
Jmp txt_out
CF); при успешном открытии файла он сброшен, а в регистре AX
7B00h байт от начала файла. Для управления файловым указателем предназначена функция 42h
3Fh прерывания DOS 21h
CF сбрасывается, а в регистре AX
...
Полное содержание
Подобный материал:
  1   2   3   4   5   6   7   8   9   ...   42

Низкоуровневое программирование для Дzenствующих

#Бредисловие

Последняя ночь перед...


Как таинственная и трагична последняя ночь перед страшным экзаменом. Там не дадут достать или поднять маленький обрывок бумаги, на кончике котором зашифрована, напечатана или отксеренна судьба грешной души студента. Спасения нет, шары НЕ БУДЕТ!!! Но остаётся только одна единственная ночь, чтобы изменить мир...

Сквозь тусклый свет призраки спускаются к бедной голове, что, склонившись над таинственной тетрадью, словно заклинание, повторяет непонятные слова из 21-ой буквы, в которых заключено имя страшного предмета.

Часовая стрелка незаметно скользит вперёд. Вот-вот и она уже на 12.00. Текст расползается перед глазами, духи говорят с тобою. Мистика. В чёрной чашке с надписью NestCafe бурлит чёрная жидкость. Кошмарные видение ненаступившего «завтра» висят в воздухе комнаты. Всё соединяется в ужасный единый крик: «Завтра не наступит»… а потом слышится звон… тяжёлый звон из реальности, звон будильника…. Наступило последнее утро.



Мистика, неправад ли? WASM.RU спешит поздравить всех Дzenствующих студентов с окончанием кошмаров по имени "сессия". А всем поступающим желает познать её таинство.

И вот теперь, когда наступило лето, (а у кого-то может быть идёт практика, или сборы на военной кафедре), когда душа поёт и ликует, самое время занятся безумством. Тем более, если это замечательно безумство программирование на ASSEMBLERе.

Как утверждает сам Serrgio[HI-TECH], программирование на ассемблере не только делает ум гибким и лёгким, а так же повышает кислотно-щелочной баланс, выводит шлаки, позволяет закодировать от курения, выпивания и других забавных занятий, а кроме того, улучшает внутренний и внешний товаробмен веществ. А самое главное увеличивает мужскую силу и женское обаяние (я ничего не забыл? Если да присылайте свои объявления по адресу dzenreclama@kanal.ort).

И вот, чтобы хорошо расслабится, я предлагаю, заняться ещё более безумным делом чем программирование на ассемблере. Вы наверное удивитесь: "А что такое возможно?". О, да!!! Такое возможно. Читайте далее.


Рустам Галиев

Нестандартный загрузчик

(часть 1)

  1. Начальная загрузка
  2. Загрузочный код

Данная статья предназначена для тех, кто хочет подробнее узнать о процессе начальной загрузки компьютера и поэкспериментировать с ним. Материал излагается с использованием языка ассемблера, однако каждый шаг подробно комментируется и разобраться в нем при желании смогут и читатели, не имеющие специальной подготовки (хотя знакомство с ассемблером и архитектурой процессора Intel 0х86 облегчит восприятие). Не потребуется также никакого специального программного обеспечения: все описываемые действия проделываются с использованием отладчика debug, входящего в состав Windows 95/98. Проделав описанные в статье действия на своем компьютере, вы сможете создать вспомогательную программу wb.com и установить в реестре ее ассоциацию с расширением файлов .bot, что позволит одним щелчком мыши переносить созданные с помощью debug файлы на дискету, сделав ее загружаемой.

Начальная загрузка


После проверки программой BIOS подключенного оборудования управление передается процедуре начальной загрузки с дисков, доступ к которой можно получить через прерывание INT 19h. Данная процедура загружает всего один сектор (первый) с нулевой дорожки нулевой головки, размещая его в памяти по адресу 7С00h, и передавая управление после загрузки сектора по этому же адресу. В области данных BIOS хранится последовательность обращения к дискам, пока не будет произведена успешная загрузка (это значение устанавливается через BIOS Setup). Ответственность за дальнейшую загрузку компьютера ложится на код, содержащийся в загрузочном секторе соответствующего диска.

Совершенно очевидно, что из-за ограниченного объема сектора (512 байт) загрузочный код разнообразием не блещет и в основном сводится к операции загрузки с диска в оперативную память дополнительных секторов, содержащих ядро операционной системы, и передаче управления по соответствующему адресу памяти. Кроме кода загрузки, в загрузочном секторе содержится также приведенный ниже в таблице блок параметров BIOS с данными о форматировании диска.

Смещение

Размер, байт

Содержание

3h

8

Аббревиатура и номер версии ОС

Bh

2

Число байтов в секторе (512)

Dh

1

Число секторов в кластере

Eh

2

Число резервных секторов в резервной области раздела

10h

1

Число копий FAT в разделе (2)

11h

2

Количество 32-байтных дескрипторов файлов в корневом каталоге

13h

2

Общее число секторов в разделе

15h

1

Тип носителя информации (для современных дискет F0h)

16h

2

Количество секторов, занимаемых одной копией FAT

18h

2

Число секторов на дорожке

1Ah

2

Число головок

1Ch

4

Число скрытых секторов перед началом раздела (для дискет 0)

20h

4

0 (используется FAT32)

24h

1

Номер дисковода (для дискет - от 0 до 3)

25h

1

0 (для Windows NT)

26h

1

Признак расширенной загрузочной записи (29h)

27h

4

Номер логического диска (создается при форматировании)

2Bh

11

Метка диска (текстовая строка)

36h

8

Аббревиатура типа файловой системы

3Eh

 

Начало загрузочного кода

Первые три байта загрузочного сектора содержат инструкцию безусловного перехода ( JMP) на код, начинающийся после блока параметров BIOS. Кроме того, последними двумя байтами являются 55h и AAh (сигнатура – признак загрузочного сектора логического диска). Желающие могут посмотреть на эти данные, воспользовавшись программой diskedit.exe из пакета Norton Utilities, и прочитать с ее помощью физический сектор №1 любой форматированной дискеты. Данные блока параметров BIOS должны присутствовать всегда, поскольку Загрузчик BIOS проверяет его целостность.