Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Dos7book

.pdf
Скачиваний:
76
Добавлен:
09.02.2015
Размер:
5.1 Mб
Скачать

 

Глава 9:

Примеры композиции исполняемых файлов

xchg

AH,AL

 

;=384

Вход для индикации AH-AL

add

AL,30

 

; 386

Переведем 0 - 9 в ASCII

cmp

AL,39

 

; 388

Ýòî 0 - 9 èëè A - F ?

jbe

038E

 

;*38A

Знаки 0 - 9 оставим как есть

add

AL,07

 

; 38C

A - F переведем в ASCII

cmp

BL,80

 

;=38E

Проверим границы

jb

0395

 

;*391

Если за пределами границ,

mov

AL,20

 

;=393

заменим знаки пробелами

push

AX

 

;=395

Сохраним значения

push

DX

 

; 396

регистров AX и DX

mov

AH,02

 

; 397

Вызовем функцию

 

mov

DL,AL

 

; 399

вывода одного

int

21

 

; 39B

знака в STDOUT

pop

DX

 

; 39D

Восстановим значения

pop

AX

 

; 39E

регистров AX и DX

ret

 

 

; 39F

Возврат из подпрограммы

 

;********* Секция 22: замена обработчиков исключений

 

; 3A0 - адрес вызова со строк 24A, 24D, 28D, 290

mov

AH,35

 

;=3A0

вызов функции считывания

int

21

 

; 3A2

адреса обработчика в ES:BX

mov

DI,AX

 

; 3A4

В DI подготовим адрес

shl

DI,1

 

; 3A6

ячейки памяти: DI = AX•2

shl

DI,1

 

; 3A8

350D•4=D434

350E•4=D438

sub

DI,D06E

 

;*3AA

D434-D06E=3C6 D438-D06E=3CA

push

DS

 

; 3AE

Сохраним содержимое

push

DX

 

; 3AF

регистров DS и DX

lds

DX,[DI]

 

; 3B0

DS:DX - указатель на ячейку

mov

AH,25

 

; 3B2

Вызов функции записи

int

21

 

; 3B4

адреса обработчика

pop

DX

 

; 3B6

Восстановим содержимое

pop

DS

 

; 3B7

регистров DS и DX

mov

[DI],BX

 

; 3B8

Сохраним в памяти адрес

mov

[DI+02],ES

; 3BA

прежнего обработчика

inc

AL

 

; 3BD

В AL - следующий номер

ret

 

 

; 3BF

Возврат из подпрограммы

;******** Секция 23: адреса и данные

;3C0 - адрес Himem, в строках 1B4, 1BE, 2B6

;3C2 - сегмент Himem, в строках 1B8, 1C8, 2A4

db

 

00

00 00 00

 

 

 

;

3C4

- третий байт

EFLAG,

в строках 22D, 29C

db

 

00

 

 

 

 

;

3C5

- маска порта

21h, â

строках 238, 293

db

 

00

 

 

 

;3C6 - адрес этой ячейки вычислен в строке 3AA

569 –

Глава 9: Примеры композиции исполняемых файлов

 

; 3C8

- сегмент обработчика 0Dh, вписан из 23F

db

CC 02

00 00

 

; 3CA - адрес этой ячейки вычислен в строке 3AA

 

; 3CC - сегмент обработчика 0Eh, вписан из 243

db

C9 02

00 00

 

; 3CE - место хранения SI, доступ из 251, 258

db

00 00

 

;3D0 - линейный адрес - 1EA, 213, 310, 328, 35A

;3D3 - старший байт линейного адреса - 351

db

00

00

00

00

 

 

; 3D4 - место адреса сообщения - 134, 21A, 282

db

71

04

 

 

 

 

;********

Секция 24: сообщения

 

; 3D6

1-е сообщение, от строки 129

db

0D

0A

'Error: 16-bit machine can' 27

db

't suit' 0D 0A 24

 

 

; 3FB

 

2-е сообщение, от строки 145

db

0D

0A

'Error: can' 27 't run under WINDOWS'

db

0D

0A

24

 

 

 

; 41E

3-е сообщение, от строки 15D

db

0D

0A

'Error: incompatible EMM386 version'

 

; 442

4-е виртуальное сообщение, от строки 2BA

db

0D

0A

24

 

 

 

; 445

5-е сообщение, от строк 1D8, 1F4

db

09

'Line A20 is disabled' 24

 

; 45B

6-е сообщение, от строки 1FA

db

'GS='

20

24

 

 

; 460

7-е сообщение, от строки 223

db

09

'-

below GS base' 24

 

; 471

8-е сообщение, адрес в строке 3D4

db

09

'-

above GS limit' 24

 

; 483

9-е сообщение, от строки 134

db

09

' GS range or privilege violation' 24

 

; 4A5

10-е сообщение, от строки 2C9

db

09

'Page isn' 27 't initialized or is'

db

20

'swapped' 24

 

 

; 4CB

 

11-е сообщение, от строки 18E

db

0D

0A

'Address error: invalid character(s)' 0A

 

; 4F1

12-е сообщение (help), от строки 182

db

0D

0A

09

'GS_dump.com - linear GS address'

db

20

'dump utility' 0D 0A 'Usage examples:'

db

0D

0A

09

09 'GS_dump

002FABCD' 0D 0A 09 09

db

'GS_dump

002FABCD

A' 0D 0A 09 09

db

'GS_dump

002FABCD

R' 0D 0A 20

 

 

 

 

 

– 570 –

Глава 9: Примеры композиции исполняемых файлов

db

'002FABCD

- linear address example, up

to'

db

20

'8

hexadecimal digits long' 0D 0A 09

 

db

'A

-

option: don' 27

't try to enable'

20

db

'line

A20'

0D 0A 09 'R

- option: reset

GS'

db

20

'to zero' 0D 0A 24

 

 

 

; 60B

 

 

 

 

 

n GS_dump.com rBX

0000 rCX 050B w

q

Программа GS_dump.com начинается в первой секции с обычной процедуры высвобождения лишней выделенной памяти (примечание 5 к A.12-7). Проверки процессора и защищенного режима во второй секции выполняются так же, как в описанной выше программе GS_limit.com (9.10-01). Однако в случае констатации защищенного режима программа GS_dump.com не завершается сразу, а переходит к более детальной проверке в секции 3. Если выяснится, что защищенный режим установлен не операционной системой Windows, а совместимой версией драйвера EMM386.EXE (5.04-02), то исполнение будет продолжено.

В4-й секции производится считывание линейного адреса из командной строки

врегистр EBX. По ходу считывания выполняется преобразование знаков кода ASCII с анализом правильности считываемой последовательности. Если там будет обнаружено что-либо иное, кроме шестнадцатеричных цифр, то программа завершится выдачей сообщения об ошибке.

В5-й секции программы GS_dump.com осуществляется активизация линии A20 адресной шины, причем точно так же, как это делается в секции 4 описанной выше программы GS_limit.com (9.10-01).

Оригинальные и принципиально важные операции в программе GS_dump.com начинаются с подготовки регистра GS в секции 6. Дело в том, что до первого акта записи в регистр GS число в нем может сохранять статус селектора. Чтобы избавиться от неопределенности, в строке 1E6 выполняется запись в регистр GS. Даже когда содержимое регистра GS желательно сохранять, в него записывают то самое число, которое заранее, в строке 1E4, было считано из того же регистра GS.

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

В последующих строках секции 6 вызовом подпрограммы 0349 считанный сегментный адрес GS выводится на экран. Далее, в строках 201 – 20B секции 7, из

– 571 –

Глава 9: Примеры композиции исполняемых файлов

указанного пользователем линейного адреса вычисляются байт начала отсчета и базовый адрес, то есть линейный адрес первого байта в строке дампа. В строке 218 сдвиг на 4 бита влево преобразует сегментный адрес GS в линейный адрес. Разность базового линейного адреса и линейного адреса GS, вычисляемая в строке 21F, представляет собой смещение, необходимое для считывания данных по тому абсолютному адресу, который был указан пользователем в командной строке.

Прежде чем подавать вычисленные адреса процессору для исполнения считывания, нужно сделать еще несколько важных приготовлений, потому что операция считывания по 32-битовому линейному адресу может привести к генерации исключений INT 0D, INT 0E (примечания 6 и 7 к разделу 8.01-09) и INT 11 (примечание к 8.01-42). Если не принять должных мер, любое из этих исключений повлечет "зависание" компьютера. Исключение INT 11 можно предотвратить достаточно сбросить в нуль бит контроля выравнивания (12h) в регистре EFLAGS (A.11-4). С этой целью в строках 226 – 235 регистр EFLAGS считывается в стек, исходное состояние 3-го считанного байта запоминается в отдельной ячейке памяти (03C4), прямо в стеке флаг выравнивания сбрасывается в нуль, и потом результат записывается обратно из стека в регистр EFLAGS.

Исключения INT 0D и INT 0E предотвратить нельзя, так как процессор

неизбежно будет их генерировать при попытках доступа к защищенным областям памяти. Можно предусмотреть перехват этих исключений, но дело дополнительно осложнено тем, что при работе в реальном режиме их трудно отличить от вызовов прерываний, которые поступают от устройств по линиям IRQ 5 и IRQ 6 (8.01-09). Во избежание путаницы программа GS_dump.com на время вывода дампа запрещает поступление внешних вызовов по линиям IRQ 5 и IRQ 6. Для этого операции в строках 236 – 23D считывают маску порта 21h (A.14-1), сохраняют ее первоначальное состояние в ячейке 03C5, устанавливают в ней биты 05 и 06, и в таком виде отправляют ее обратно в порт 21h.

Обработчики исключений INT 0D и INT 0E в программе GS_dump.com заготовлены заранее в секции 13. Они представляют собой простую отсылку с коррекцией адреса возврата, который процессор оставляет в стеке. Коррекция исключает "зависание" в цикле исполнения одной и той же команды, а также

обеспечивает правильное возобновление исполнения программы со следующей команды. Чтобы задействовать подготовленные обработчики исключений, операции в строках 23F и 243 секции 8 вписывают фактический сегментный адрес в ячейки памяти 03C8 и 03CC, предназначенные для хранения указателей на обработчики прерываний. Затем два вызова подпрограммы 03A0 меняют местами адреса из таблицы прерываний и те, которые были подготовлены в ячейках 03C8 и 03CC. С этого момента программа GS_dump.com готова правильно реагировать на генерацию процессором исключений INT 0D и INT 0E.

– 572 –

Глава 9: Примеры композиции исполняемых файлов

Поскольку правила доступа в адресном пространстве изменяются с дискретностью не менее 16 байт, постольку о доступности всех байтов одной строки дампа можно судить по одному пробному акту считывания, выполняемому в строке 257 секции 9. Когда запрошенный первый байт строки дампа доступен, тогда процессор, исполняя команду LODSB (7.03-53) в строке 257, изменяет на единицу смещение в регистре SI. Но когда запрос вызывает срабатывание защиты, тогда команда LODSB вообще не исполняется, и смещение в регистре SI приращения не получает. Операция в строке 258 сравнивает текущее значение смещения в регистре SI с предыдущим, сохраняемым в ячейке 03CE. Равенство значений свидетельствует о срабатывании защиты в процессоре.

Если срабатывание защиты в процессоре произошло, то любые попытки доступа к памяти в пределах ближайших 16 байт бесполезны. В таких строках дампа дальнейшие операции секции 9 выводят линейный адрес с сообщением о срабатывании защиты и вычисляют 32-битовое смещение первого байта для следующей строки дампа. Затем следует переход к проверке номера строки дампа в строке 286. Если данная строка дампа не последняя, то произойдет возврат к началу процедуры пробного считывания в секции 9, где те же операции будут повторены для следующей строки дампа.

Если значения SI, сравниваемые в строке 258, неодинаковы, то в строке 25C произойдет переход к формированию строки дампа в секции 10. Оно включает индикацию базового линейного адреса вызовом подпрограммы 0349, цикл 26E – 273 для вывода на экран 16 байт дампа и цикл 278 - 27D для вывода тех же 16 байт в виде знаков кода ASCII. Если данная строка дампа не последняя, то на шаге 289 произойдет возврат в секцию 9 к пробному считыванию следующей строки.

После вывода последней строки дампа программа переходит к операциям секции 11, восстанавливающим исходное состояние всех тех элементов, у которых оно было изменено. Двумя вызовами подпрограммы 03A0 восстанавливаются исходные адреса обработчиков прерываний INT 0D и INT 0E. Операции в строках 293 – 2A3 восстанавливают прежнюю маску порта 21h и прежнее состояние регистра EFLAGS. Операции в строках 2A4 – 2B6 восстанавливают прежнее состояние линии A20 шины адреса.

Когда все должное восстановлено, исполняются операции завершающей секции 12. При успешном завершении финальное сообщение не выводится, и код уровня ошибки устанавливается равным нулю. Но при неудачном завершении те же операции в строках 2BF – 2C4 используются для выведения сообщения об ошибке. Последним следует вызов функции завершения программы в строке 2C7.

Примечание 1: код уровня ошибки, который программа GS_dump.com оставляет в случае своего неудачного завершения, может представлять отдельный интерес. В частности, наибольший код уровня ошибки 8 программа GS_dump.com оставит при попытке исполнения в среде

– 573 –

Глава 9: Примеры композиции исполняемых файлов

"окна DOS" операционной системы Windows. Регистрация актов завершения с уровнем ошибки 8 (3.15-03) позволит предотвращать запуск таких программ, которые в "окне DOS" исполнять нельзя (например, программы Turn_off.com из раздела 9.05-02).

9.11Альтернативные варианты загрузки MS-DOS7

Вотношении обеспечения сохранности данных и основной операционной системы компьютера эксперименты в среде DOS наиболее безопасны тогда, когда DOS загружают с внешнего, отдельного дисковода или со сменного носителя записи дискеты, флэш-карты или компакт-диска. Так обычно действуют при выездном обслуживании компьютеров. Но при систематическом пользовании DOS такой путь, описанный в разделе 9.11-01, недостаточно надежен, потому что в этой роли срок службы всех записываемых сменных носителей невелик.

Стационарную выборочную загрузку компьютера осуществляют с помощью особых программ (boot-менеджеров) или с помощью загрузочных модулей некоторых операционных систем. В разделах 9.11-02 и 9.11-03 рассмотрено

использование с этой целью загрузочного модуля операционной системы Windows-XP, а также самой MS-DOS7: ведь она изначально была задумана как стартовая площадка для операционных систем Windows-95/98. "Способности" MS-DOS7 к исполнению роли boot-менеджера скромны, но у нее есть полезное свойство: совместимость с загружаемыми расширениями системы BIOS. Может быть, для выборочной загрузки компьютера Вам придется применить MS-DOS7.

9.11-01 Загрузка MS-DOS7 со сменных носителей.

Обычная дискета емкостью 1.44 Мбайт становится загрузочной, когда на нее записаны загрузочный сектор (boot-сектор) и системные файлы DOS. В среде MS-DOS7 это делает программа SYS.COM (6.24). В среде Windows Вы можете скачать самораспаковывающийся файл-образ загрузочной дискеты с MS-DOS7 из сети Интернет, например, с хоста http://1gighost.com/ed/jamiephiladelphia/ или с сайта http://anbcomp.com/files/bootdisk/ . Предпочтительны варианты без перебазирования MS-DOS7 на RAM-диск (файлы boot95b.exe, boot98c.exe, boot98sc.exe), потому что примененная в стандартных загрузочных дискетах

процедура перебазирования на многих современных компьютерах работает некорректно. По той же причине не рекомендуется задавать формирование загрузочной дискеты в ходе форматирования. Но отмеченного недостатка нет у загрузочных дискет с MS-DOS8, которые формирует Windows-XP.

– 574 –

Глава 9: Примеры композиции исполняемых файлов

Получив обычную загрузочную дискету, Вы едва ли будете удовлетворены её скудным набором программ. Минимально-приемлемый комплект придется составлять самостоятельно, причем для MS-DOS7 многое можно взять из дистрибутива Windows-95/98. Образы загрузочных дискет с расширенными комплектами программ выложены, например, на сайтах http://www.multiboot.ru/ и http://www.netbootdisk.com/ . Рекомендации автора по составлению базовых

комплектов выражены перечнем драйверов и программ в конфигурационных файлах, приведенных в разделах 6.25, 9.01, 9.04 и 9.09 данной книги. Разумеется,

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

Перед загрузкой компьютера с дискеты нужно еще проверить настройки программы BIOS Setup (о ее вызове в разделе 1.01). На странице "Main" программы BIOS Setup должен быть правильно указан тип имеющегося флоппи-дисковода. На странице "Boot" следует установить такой порядок загрузочных устройств ("Boot Device Priority"), чтобы флоппи-дисковод был бы опрошен раньше, чем жесткий магнитный диск. В компьютерах 1990-х годов порядок обычно задавался буквенными обозначениями дисков, и тогда список должен начинаться с буквы A:, обозначающей флоппи-дисковод. В современных компьютерах флоппи-дисковод ("1st Floppy Drive") надо поставить на первое место в списке устройств на сменных носителях ("Removable Drives"), и загрузке с них присвоить больший приоритет, чем загрузке с жестких магнитных дисков.

К сожалению, операционная система работает с дискеты очень медленно и притом интенсивно ее изнашивает. Ресурса дискеты хватит всего на 10 – 20 часов такой эксплуатации. Работа пойдет быстро и надежно, если конфигурационные файлы организуют перебазирование DOS с дискеты на RAM-диск (примеры в разделах 9.04 и 9.09). Но и в последнем случае дискету нельзя признать удачным носителем для операционной системы. Ленивое перебазирование DOS с дискеты, аккомпанируемое скрежетом дисковода, вызывает раздражение. Помимо прочего, емкость дискеты по нынешним меркам слишком мала.

Оптические диски выглядят намного привлекательнее дискет и по емкости, и по скорости считывания, и по сроку службы. Однако отличной сохраняемостью обладают только оптические диски с постоянной сигналограммой, тиражируемые с матриц на промышленных технологических линиях. У тех "болванок", которые Вы записываете на своем дисководе, физическая основа сигналограммы совсем другая. Сигналограммы на них деградируют при считывании, так что их ресурс не намного отличается от ресурса дискет. По быстродействию разница тоже невелика,

так как позиционирование головки у оптических дисководов занимает примерно 0.1 секунды, а именно оно лимитирует темп доступа к случайно размещенным файлам. Из-за малого ресурса и низкого темпа доступа перебазирование DOS с оптических дисков на RAM-диск не менее актуально, чем при загрузке с дискет.

– 575 –

Глава 9: Примеры композиции исполняемых файлов

Дополнительные сложности возникают из-за отличия файловых систем оптических дисков от тех, которые "понятны" ядру DOS. По этой причине DOS нельзя загрузить с оптического диска непосредственно. На оптический диск нужно заранее записать образ другого диска загрузочного диска с "понятной" файловой системой FAT-12 или FAT-16. Система BIOS компьютера должна быть способна представить (эмулировать) этот образ как физический диск, и только тогда с него можно будет загрузить DOS. Если оригиналом для записанного образа послужила загрузочная дискета, то эмулируемый системой BIOS фиктивный диск станет диском A:, а реальный флоппи-дисковод получит буквенное обозначение B:.

Почти все программы записи оптических дисков позволяют создавать загрузочные оптические диски и способны считывать подлежащий записи образ с загрузочных дискет. Для исполнения этой роли вполне пригодны конфигурации, описанные в разделах 9.04 и 9.09, предусматривающие перебазирование DOS на RAM-диск (5.05) и загрузку драйверов оптических дисков (5.08-04 и 5.09-04). Обеспечивая доступ за пределы записанного на оптический диск образа дискеты, драйвера оптических дисков устраняют проблему ее недостаточной емкости.

Для загрузки с оптического диска оптический дисковод должен быть зарегистрирован как загрузочное устройство. Чтобы убедиться в этом, надо открыть страницу BOOT программы BIOS Setup. Там в списке загрузочных устройств ("Boot Device Priority") разные версии системы BIOS указывают либо класс прибора (CD-ROM), либо конкретный тип оптического дисковода. Там же надо установить такой порядок загрузочных устройств в списке, чтобы оптический дисковод был бы опрошен системой BIOS раньше, чем жесткий магнитный диск.

Потом остается только сохранить новые настройки и успеть вставить загрузочный оптический диск в дисковод до начала стартовых тестов системы BIOS.

В современных компьютерах система BIOS может не зарегистрировать загрузочное устройство из-за неточностей в параметрах интерфейса. В частности, для установки параметров интерфейса IDE нужно сначала открыть страницу MAIN программы BIOS Setup, и из нее выйти на страницу "IDE Configuration". Там параметру "Onboard IDE Operate Mode" надо дать значение "Compatible Mode", а

параметр "Combined Mode Option" привести в соответствие с типом шины подключенных приборов. Оптические дисководы внутреннего исполнения обычно снабжают параллельной шиной P-ATA. Если приборов с последовательной шиной S-ATA в компьютере нет, то параметру "Combined Mode Option" следует дать значение "P-ATA only". В иных случаях лучше выбрать значение "P-ATA+S-ATA". Еще нужно иметь ввиду, что внесенные изменения повлияют на список загрузочных устройств не сразу, а только после перезагрузки компьютера.

Чтобы установить параметры интерфейса USB, надо открыть страницу "Advanced" программы BIOS Setup, и из нее выйти на страницу "USB Configuration". Там параметр "USB Function" (или "USB Controller") должен быть

– 576 –

Глава 9: Примеры композиции исполняемых файлов

поставлен в состояние "Enabled". Этого достаточно для доступа к приборам на шине USB с помощью драйверов (5.07-05). Но те системы BIOS, которые способны загружать компьютер с шины USB, предоставляют дополнительные настройки. Так, в последних версиях BIOS фирмы AMI на той же странице имеется параметр "Legacy USB support". Для обеспечения загрузки ему надо присвоить значение "Enabled". Напомним, что это может вызвать конфликты с драйверами шины USB (5.07-05), так что строки их загрузки из конфигурационных файлов лучше убрать. Если имеются отдельные параметры для контроллера USB 2.0, то их тоже стоит поставить в положение "Enabled", а скорость обмена в положение "HiSpeed".

Шина USB допускает довольно сложные варианты подключения устройств, и

потому на регистрацию внешних загрузочных устройств может повлиять ограничение состава стартовых тестов. Чтобы снять это ограничение, надо открыть страницу BOOT программы BIOS Setup, из нее выйти на страницу "Boot Settings Configuration", и там поставить параметр "Quick Boot" в положение "Disabled".

Длительность стартовых процедур, понятно, немного увеличится.

Когда на шине USB системой BIOS зарегистрировано хотя бы одно устройство, тогда в современных компьютерах программа BIOS Setup со своей страницы "USB Configuration" дает возможность открыть страницу "USB Mass Storage Device Configuration". На ней приведен список зарегистрированных устройств, и показан примененный к каждому из них способ эмуляции. Ошибки установления способа

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

Как правило, способ эмуляции должен соответствовать классу устройства: накопитель на жестких магнитных дисках надо определить как "Hard Disk", оптический дисковод - как "CD-ROM", флоппи-дисковод как "Floppy". Но иногда заранее неизвестно, к какому классу устройств отнести, например, флэш-карту. В таких случаях надо исходить из того, что флэш-карты емкостью от 512 Мбайт и выше форматируются как жесткий магнитный диск в процессе изготовления. А для флэш-карт меньшей емкости в современных системах BIOS предусмотрен особый вид эмуляции – "Forced FDD", при котором флэш-карта будет представлена как "Big Floppy" независимо от того, как она форматирована на самом деле.

Если Вы хотите изменить формат или заново нанести разметку носителя записи, то способ эмуляции обязательно должен точно соответствовать классу устройства. Оставлять определения "Forced FDD" или "Auto" в таких случаях нельзя. Новые, еще не размеченные жесткие магнитные диски регистрируются системой BIOS, но не получают буквенных обозначений. Для их разметки и форматирования лучше использовать современные программы, например, "Partition

– 577 –

Глава 9: Примеры композиции исполняемых файлов

Magic" версии не ниже 8.01. Один из первичных разделов надо обязательно сделать активным. После перезагрузки компьютера разделы получат буквенные обозначения, и тогда активный раздел можно будет сделать загрузочным с помощью программы SYS.COM (6.24). Конфигурация с перебазированием DOS на RAM-диск для жестких магнитных дисков не обязательна.

Большинство систем BIOS не принимает под свое управление те накопители, в которых носители записи не эмулированы, а реально форматированы как "Big Floppy", то есть без MBR. Обычно доступ к ним обеспечивается устанавливаемым драйвером, например, ASPIDISK.SYS (5.07-03, 5.07-05). Но на такие носители можно записать MBR с помощью программ, упоминаемых в примечании 5 к статье 6.13. После перезагрузки компьютера система BIOS примет носитель записи с MBR под свое управление как жесткий магнитный диск. С этого момента с ним можно обращаться как с жестким диском, в том числе можно сделать его загрузочным.

Когда хотя бы один накопитель воспринят системой BIOS как жесткий магнитный диск, тогда программа BIOS Setup со страницы BOOT разрешает выйти на страницу "Hard Disk Drives". Там приведен перечень всех имеющихся в компьютере дисководов на жестких магнитных дисках. Но только первый из них попадет в список загрузочных устройств. Если Вы хотите, чтобы компьютер загружался с внешнего дисковода, то его следует поставить на первое место на странице "Hard Disk Drives". То же наименование дисковода сразу появится в списке загрузочных устройств на странице "Boot Device Priority". Там жесткий магнитный диск не обязательно должен быть первым, но нужно, чтобы в момент загрузки в устройствах с большим приоритетом не было бы носителей записи.

Способ эмуляции "Hard Disk" годится для накопителей на сменных носителях, но при условии, что один и тот же носитель с форматом жесткого магнитного диска находится в накопителе постоянно с момента загрузки. Другой носитель в том же адаптере невозможно будет прочитать. Накопитель, эмулируемый как "Hard Disk", получит буквенное обозначение жесткого магнитного диска. Но если в момент загрузки он не содержит сменного носителя, то он не будет зарегистрирован, и система BIOS не выделит ему буквенного обозначения. Последнее бывает полезно, когда USB-адаптер имеет слоты для нескольких типов флэш-карт, которыми Вы не пользуетесь, и лишние буквы дисков не хотите им выделять.

Накопители, эмулируемые как "Floppy" или как "Forced FDD" получают буквенные обозначения независимо от того, имеются ли в них сменные носители в момент загрузки. Те современные системы BIOS, с которыми автору пришлось иметь дело, не позволяли заменять в них сменные носители и выделяли им только буквы A: и B:. Если в компьютере несколько таких накопителей, то буквенные обозначения получали первые два из списка на странице "Removable Drives" программы BIOS Setup, а остальные оказывались недоступны. Загрузочным может стать только тот накопитель, который Вы поставите на первое место в этом списке.

– 578 –

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]