Тест остановился из-за избыточного числа сбоев на дисководе. Теперь, когда номера сбойных цилиндров и поверхностей известны, осталось выяснить адреса сбойных секторов и вид дефекта в физических секторах. Определим сначала номера секторов, ориентируясь на сообщения о сбойных цилиндрах CHECKIT. Для данной работы воспользуемся возможностями программы DISKED IT. EXE пакета программ Norton Utility. Выбрав подпрограмму чтения физических секторов, получили список сбойных секторов.
CYL 0 HEAD 1 SECTORS (2, 7, 33, 39, 51)
CYL 0 HEAD2 SECTORS 49
CYL 0 HEAD234 SECTORS (9, 15, 27) CYL 0 HEAD235 SECTORS 25
и так далее.
При последовательном чтении физических секторов выдавалось сообщение о неправильном формате сектора и байты сбойного сектора не отображались на экране монитора. DISKEDIT заполнял пространство на экране кодом 00.
Физический адрес месторасположения логического диска «D:» мы получили, расшифровав запись в первом физическом секторе нулевой поверхности нулевого цилиндра (MasterBoot). Логический диск начинался с восемнадцатого цилиндра, с нулевой поверхности, с первого сектора, так как, операционная система не смогла разместить логический диск, начиная с нулевого цилиндра, первой поверхности, с первого сектора из-за сбоев при чтении физических секторов (сбойные участки приходились как раз на системные области будущего логического диска — см. рис. 4).
Рис. 4. Размещение логического диска на физическом диске
Получив адреса сбойных физических секторов, можно провести уточняющую диагностику при помощи полноэкранного отладчика «AFD». В составе отладчика нет подпрограмм для чтения физических секторов, но есть режим ассемблирования, который позволяет создавать такие программы на ассемблере.
Программно-доступные элементы компьютера (регистры, ячейки ОЗУ и ПЗУ). Нам с помощью AFD (для чтения или записи) доступны:
— регистры микропроцессора, например, 32-х разрядные регистры с мнемоническим обозначением на ассемблере: ЕАХ, ЕВХ, ЕСХ, EDX
16-ти разрядные регистры АХ, СХ … ; 8-ми разрядные регистры АН, AL и т.д.:
— ячейки ПЗУ (постоянное запоминающее устройство: например, ячейка ПЗУ с адресом FFFFOh);
— ячейки ОЗУ (динамическая память: например, ячейка памяти с адресом 2000h);
— регистры контроллеров (расположенные в контроллерах внешних устройств и контроллерах системной платы: например, регистр с адресом lFOh — регистр данных контроллера HDD).
Все эти программно-доступные элементы имеют свои индивидуальные шестнадцатеричные или мнемонические адреса (например: 70, 0700h, FFFFOh, АХ. ЕВХ и др.), по которым можно инициировать чтение или запись. Регистры, расположенные в контроллерах внешних устройств и контроллерах системной платы, программистами указываются только в командах IN, OUT, INS, OUTS. Регистры микропроцессора указываются в командах ассемблера и AFD их мнемоническим обозначением ЕАХ, ЕВХ, … и т.д. Команды на ассемблере — это мнемоническое, удобное для человека, изображение команд микропроцессора в символьном виде. Например, команде микропроцессора EBFEh (1110 1011 1111 111 OB) однозначно соответствует запись той же команды на ассемблере JMP 100. Программы на ассемблере удобно набирать с помощью «профотладчика» AFD (в окне ассемблирования), а его специальная программа-транслятор обрабатывает и заменяет каждую команду ассемблера соответствующей двоичной командой микропроцессора. В результате получаем команды программы, которую может выполнять микропроцессор.