Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Вопрос 3 пч





Команды общего назначения MS DOS

Смена текущего каталога:

Cd[дисковод:][путь]

Cd\ Переход в корневой каталог

Cd.. Переход в головной каталог

просмотр каталогов:

dir[дисковод:][путь\][имя файла][параметры]

dir оглавление текущего каталога

dir a: оглавление диска а

dir /w оглавление текущего каталога в широком формате

Создание каталога:

Md [дисковод:][путь\]имя каталога

Удаление каталога:

Rd [дисковод:][путь\]имя каталога

Переименование каталога:

Move[дисковод:][путь\]имя каталога новое имя каталога

Создание текстовых файлов:

Copy con имя файла

Переименование файла:

Ren имя файла1 имя файла2

Перемещение файлов в другой каталог:

Move[/у]имя файла имя каталога

Вывод файла на экран:

Type Имя файла

Смена текущего дисковода:

Имя дисковода:

Форматирование:

Format a:/u безусловное форматирование

Format a:/s отформатировать и сделать системной

Format a:/q очистка дискеты

Перенос на диск системных файлов:

Sys[путь]диск:

 

 

Таблица векторов прерывания

Для того, чтобы связать адрес обработчика прерываний с номером прерывания, используется таблица векторов прерываний (ТВП), занимающая первый килобайт оперативной памяти. ТВП находится в диапазоне адресов от 0000:0000 до 0000:03FFh и состоит из 256 элементов – дальних адресов обработчиков прерываний.

Адрес точки входа в ISR называется вектором прерывания и хранится в специальной таблице, называемой таблицей векторов прерываний (ТВП). Сама ISR может находиться в любом месте памяти, поэтому вектор прерывания занимает 4 байта: 2 байта – на значение сегментного регистра, устанавливаемое в CS (старшее слово), 2 байта – на значение смещения, устанавливаемое в IP (младшее слово).

Вся ТВП занимает 2564 = 1024 байта (400 h) и располагается в оперативной памяти с адресом 0000:0000.

При возникновении прерывания процессор помещает в стек 6 байт: текущее значение CS, текущее значение IP (пара этих регистров определяет точку, с которой возобновится выполнение прерванной программы), а также 2 байта флагов процессора. После этого в CS и IP устанавливаются значения из ТВП, которые задают адрес начала ISR.

Сама ISR – это программа, построенная с соблюдением специальных правил:

в самом начале она сохраняет все регистры процессора, которые будут изменяться в дальнейшем;

перед завершением измененные регистры восстанавливаются в исходное значение;

последней командой ISR, как правило, является команда возврата из прерывания IRET. Выполняя IRET, процессор извлекает из стека 6 байт информации, которые последовательно помещает в регистры IP, CS и регистр флагов, возвращаясь к исполнению прерванной программы. Часто обработчикам программных прерываний требуется передать какие-то параметры и получить какие-то результаты по завершении исполнения ISR. Для такого обмена данными используются внутренние регистры процессора.

Для определения адреса ISR воспользуемся утилитой DiskEdit

Выбираем прерывание: например 0Ch, определяем смещение относительно начала дампа памяти. Для этого номер прерывания умножаем на 4 (так как вектор прерывания занимает 4 байта): 0Ch*4=30. Находим CS и IP:

CS=037E

IP=006E

Пара CS:IP образуют адрес ISR относительно начала дампа памяти.

Определяем этот адрес, добавляя к CS справа ноль, и прибавляем содержимое регистра IP (получили абсолютный адрес ISR):

037E0+006E=0384E 00000000: 68 10 A7 00 8B 01 70 00 - 16 00 7E 03 8B 01 70 00

00000010: 8B 01 70 00 B9 06 0E 02 - 40 07 0E 02 FF 03 0E 02

00000020: 46 07 0E 02 EC 06 32 05 - 3A 00 7E 03 54 00 7E 03

00000030: 6E 00 7E 03 88 00 7E 03 - A2 00 7E 03 FF 03 0E 02

00000040: A9 08 0E 02 A4 09 0E 02 - AA 09 0E 02 5D 04 0E 02

00000050: B0 09 0E 02 80 0E 8C 07 - C4 09 0E 02 8B 05 0E 02

00000060: 0E 0C 0E 02 14 0C 0E 02 - 1F 0C 0E 02 2E 16 8C 07

00000070: AD 06 0E 02 A4 F0 00 F0 - 37 05 0E 02 FA 24 00 C0

Выбираем с помощью DiskEdit дамп памяти с адреса 0384E, где находится программа обработки прерываний от асинхронного последовательного порта COM1.

В следующей таблице приведены аппаратные прерывания и их соответствующие адреса. Адреса могут и не совпадать: это зависит от версии ОС, конфигурации ПЭВМ, её настройки.

│ IRQ INT Address Description

│ 0 08 020E:0746 Timer Click

│ 1 09 0532:06EC Keyboard

│ 2 0A 037E:003A Second 8259A

│ 3 0B 037E:0054 COM2: COM4:

│ 4 0C 037E:006E COM1: COM3:

│ 5 0D 037E:0088 LPT2:

│ 6 0E 037E:00A2 Floppy Disk

│ 7 0F 020E:03FF LPT1:

│ 8 70 037E:0035 Real-Time Clock

│ 9 71 CE02:2536 Redirected IRQ2

│ 10 72 037E:00BC (Reserved) │ 11 73 037E:00D6 (Reserved)

│ 12 74 037E:00F0 (Reserved)

│ 13 75 020E:0CC6 Math Coprocessor

│ 14 76 D174:074E Fixed Disk

│ 15 77 037E:0124 (Reserved)

├────────────────────────────────────────────

Вопрос 3 пч

Загрузочный сектор - это логический сектор диска с номером

0. Он содержит программу начальной загрузки ДОС с данного диска

(если диск системный) или сообщение об отсутствии системы на

диске, если ее там нет. Начальная область загрузочного сектора

содержит, кроме того, блок информации о диске.

Смещение Длина Содержимое Комментарий

┌─────┬──────┐

+0 3 │ JMP │ **** │ Переход на начало загрузчика

├─────┴──────┴─────┐

+3 8 │ OEM │ Название фирмы и версия ДОС

├──────────┬───────┘

+0Bh 2 │ SectSize │ Количество байтов в секторе

├──────┬───┘

+0Dh 1 │ClustSize Количество секторов в кластере

├──────┴───┐

+0Eh 2 │ ResSecs │ Количество резервных секторов

├──────┬───┘

+10h 1 │FATCnt│ Количество FAT

├──────┴───┐

+11h 2 │ RootSize │ Макс. число элементов корневого каталога

├──────────┤

+13h 2 │ TotSecs │ Общее число секторов на носителе

├──────┬───┘

+15h 1 │Media │ Описатель носителя

├──────┴───┐

+16h 2 │ FATSize │ Количество секторов в одной FAT

├──────────┤

+18h 2 │ TrkSecs │ Количество секторов на дорожке

├──────────┤

+1Ah 2 │ HeadCnt │ Количество головок (поверхностей диска)

├──────────┤

+1Bh 2 │ HidnSec │ Количество скрытых секторов (может

└──────────┘ быть использовано при разбиении диска

на разделы)

1Eh Размер заголовка

 

Примечания:

 

1. Поле OEM может содержать любые 8 байтов. Оно не используется ДОС.

2. Часть загpузочного сектоpа со смещениями с 0Bh по 15h называется блоком параметров BIOS (BPB). BPB - это таблица паpаметpов диска, которая используется драйверами дисков.

3. Резервные сектора располагаются между загрузочным сектором и первой FAT.

4. Описатель носителя совпадает с первым байтом FAT и описан ниже.

5. Поля TrkSecs, HeadCut и HidnSec не использовались в ДОС 2.x, но стали обязательными в ДОС 3.x.

6. Для чтения загрузочного сектора можно использовать Int 25h с DX=0 или функции BIOS, точнее:

- для дискет: читать через Int 13h головку 0, дорожку 0, сектор 1;

- для жестких дисков: читать таблицу разделов для получения головки, дорожки и сектора начала раздела диска.

7. Информация, хранящаяся в загрузочном секторе, позволяет вычислить номер логического сектора по номеру кластера, его содержащего. Следующие формулы описывают единственный документированный метод такого расчета.

а) Вычислить размер корневого каталога в секторах, учитывая, что один элемент каталога состоит из 32 байтов:

RootSectors = (RootSize * 32) / SectSize;

б) Вычислить количество секторов, отведенных под FAT:

FATSectors = (FATSize * FATCnt);

в) Вычислить номер первого сектора области данных (кластер номеp 2):

DataStart = ResSecs + FATSectors + RootSectors;

г) Вычислить логический номер первого сектора в данном кластере:

Sector = DataStart + ((Cluster-2) * ClustSize).

Вместо этой цепочки вычислений можно воспользоваться

 

НЕДОКУМЕНТИРОВАННОЙ фн 32h, которая помимо прочей информации,

возвращает номер начального сектора области данных (см. также следучщее примечание).

8. Нестандартные жесткие диски, требующие загружаемого драйвера, не имеют таблицы разделов и могут содержать в загрузочном секторе случайную информацию. В этом случае не существует документированного способа получения параметров диска.

Таблица размещения файлов диска MS-DOS

Физический адрес сектора на диске определяется с помощью трех «координат», то есть представляется триадой [ t-h-s ], где t – номер цилиндра (дорожки на поверхно-сти диска, cylinder), h – номер рабочей поверхности диска (магнитной головки, head), a s – номер сектора на дорожке. Номер цилиндра t лежит в диапазоне 0...T-1, где T – количество цилиндров. Номер рабочей поверхности диска h принадлежит диапазону 0...Н-1, где Н – число магнитных головок в накопителе. Номер сектора на дорожке s указывается в диапазоне 1...S, где S – количество секторов на дорожке. Например, триада [1-0-2] адресует сектор 2 на дорожке 0 (обычно верхняя рабочая поверхность) цилиндра 1. По физическому адресу [0-0-1] на винчестере располагается главная загрузоч-ная запись (Master Boot Record, MBR), содержащая внесистемный загрузчик (Non–System BootstrapNSB), а также таблицу разделов (Partition Table, PT). Эта запись занимает ровно один сектор, она размещается в памяти, начиная с адреса 0:7C00h, после чего управление передается коду, содержащемуся в этом самом первом секторе магнитного диска. Таким образом, в самом первом (стартовом) секторе физи-ческого жесткого диска находится не обычная запись Boot Record, как на дискете, a Master Boot Record.

MBR является основным средством загрузки с жесткого диска, поддерживае-мым BIOS. В MBR находятся три важных элемента:

программа начальной загрузки (Non - System Bootstrap). Именно она запускается BIOS после успешной загрузки в память первого сектора с MBR. Она не превышает 512 байт и её хватает только на то, чтобы загрузить следующую, чуть более сложную программу, обычно – стартовый сектор операционной системы – и передать ему управление;

таблица описания разделов диска (Partition Table). Располагается в MBR по смещению 0x1BE и занимает 64 байта;

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

Сектор, содержащий загрузочную запись, является самым первым на логиче-ском диске (на дискете – имеет физический адрес [ 0-0-1 ]). Boot Record состоит, как мы уже знаем, из двух частей – Disk Parameter Block (DPB) и System Bootstrap (SB).

Структура блока параметров диска (DPB) служит для идентификации физиче-ского и логического форматов логического диска, а загрузчик System Bootstrap игра-ет существенную роль в процессе загрузки DOS.

Первые два байта Boot Record занимает JMP – команда безусловного перехода в программу SB. Третий байт содержит код 90Н (NOP – нет операции). Далее распо-лагается восьмибайтовый системный идентификатор, включающий информацию о фирме-разработчике и версии операционной системы. Затем следует DPB, a после не-го – SB.

Для работы с загрузочной записью можно использовать широко известную ути-литу Disk Editor из комплекта утилит Norton Utilities (Питера Нортона). Эта утилита снабжена встроенной системой подсказок и необходимой справочной информацией. Используя её, можно сохранять, модифицировать и восстанавливать загрузочную за-пись, а также выполнять много других операций.

Date: 2015-09-02; view: 341; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию