Тестирование аппаратных средств с помощью отладчика

Цель: освоить приемы работы с отладчиком для тестирования компонентов компьютера.

Оборудование: компьютер, загрузочная дискета MS-DOS с отладчиком debug.exe.

ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Процесс тестирования можно разделить на отдельные части, называемые элементарными проверками. Элементарная проверка состоит в подаче на объект тестового воздействия и в измерении (оценке) ответа объекта на это воздействие. Алгоритм тестирования определяется как совокупность и последовательность элементарных проверок вместе с определенными правилами анализа результатов последних с целью отыскания места в объекте, параметры которого не отвечают заданным значениям. Таким образом, диагностика - это контроль, но контроль последовательный, направленный на отыскание неисправного места (элемента) в диагностируемом объекте.

Обычно тестирование начинается по сигналу ошибки, выработанному схемами контроля компьютера или в случаи возникновения сбоев в работе ПК.

УРОВНИ ДИАГНОСТИЧЕСКИХ ПРОГРАММ

1. Тестовые средства компьютера (тест POST) (микродиагностика);

2. Системные средства (средства операционной системы);

3. Дополнительные программы, которые либо поставляются вместе с комплектующими компьютера. Debug.exe - программа-отладчик, которую используют с целью:

 наблюдений и отладки программ на ассемблере и машинных кодах.

 трассировки программ, установки точек останова, просмотра областей памяти, ввода программ непосредственно в память ПК.

 представления загружаемых программ как программ .СОМ.

Debug появился в операционной системе MS-DOS. Под более поздние версии операционных систем работает через эмулятор MS-DOS и имеет ограниченные возможности. Вызывается через командную сроку DEBUG или DEBUG [[диск:] [маршрут] имя_файла [параметры]]. Например: DUBUG C:\...\file.com.

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

ПРАВИЛА НАБОРА КОМАНД В DEBUG.EXE

 НЕ РАЗЛИЧАЕТСЯ РЕГИСТР букв.

 ПРОБЕЛЫ в командах используется только для разделения параметров.

 Вводимые числа должны быть в ШЕСТНАДЦАТЕРИЧНОЙ системе счисления, причем БЕЗ завершающей буквы п.

 Сегмент и смещение записываются с использованием двоеточия, в формате СЕГМЕНТ:СМЕЩЕНИЕ, например, CS:3C1 (смещение ЗС1п в сегменте кода) или 40:17 (смещение 17п в сегменте, адрес начала которого - 40[0]п).

КРАТКАЯ ТАБЛИЦА КОМАНД DEBUG.EXE



Команда Описание Формат
A (Assemble) Транслирование команд ассемблера в машинный код; адрес по умолчанию - CS:0100h. А [<адрес_начала_кода>]
С (Compare) Сравнение содержимого двух областей памяти; по умолчанию используется DS. В команде указывается либо длина участков, либо диапазон адресов. С < начальный_адрес_1> 1_<длина > <начал ьный_адрес_2> С <начальный_адрес_1> <конечный_адрес_1> <начал ьный_адрес_2>
D (Display/Dump) Вывод содержимого области памяти в шестнадцатеричном и ASCII-форматах. По умолчанию используется DS; можно указывать длину или диапазон. D [<начальный_адрес> [L<длина>]] D [начальный_адрес конечный_адрес]
Е (Enter) Ввод в память данные или инструкции машинного кода; по умолчанию используется DS. Е [<адрес> [<инструкции/данные>]]
F (Fill) Заполнение области памяти данными из списка; по умолчанию используется DS. Использовать можно как длину, так и диапазон F <начальный_адрес_1> 1_<длина> '<данные>' F <начальный_адрес> <конечный_адрес> <данные>'
G (Go) Выполнение отлаженной программы на машинном языке до указанной точки останова; по умолчанию используется CS. При этом убедитесь, что IP содержит корректный адрес. G [=<начальный_адрес>] <адрес_останова> [<адрес_останова> ...]
H (Hexadecimal) Вычисление суммы и разности двух шестнадцатеричных величин. H <величина_1> <величина_2>
I (Input) Считывание и вывод одного байта из порта I <адрес_порта>
L(Load) Загрузка файла или данных из секторов диска в память; по умолчанию – CS:100h. Файл можно указать с помощью команды N или аргумента при запуске debug.exe. L [<адрес_в_памяти_для_загрузки>] L [<адрес_в_памяти_для_загрузки> [<номер_дис ка> <начальный_сектор> <количество_секторов>]]
M (Move) Копирование содержимого ячеек памяти; по умолчанию используется DS. Можно указывать как длину, так и диапазон. М <начальный_адрес> L<длина> <адрес_назначения> М <начальный_адрес> <конечный_адрес> <адрес_назначения>
N (Name) Указание имени файла для команд L и W. N<имя_файла>
O (Output) Отсылка байта в порт. О <адрес_порта> <6айт>
P (Proceed) Выполнение инструкций CALL, LOOP, INT или повторяемой строковой инструкции с префиксами REPnn, переходя к следующей инструкции Р [=<адрес_начала>] [<количество_инструкций>]
Q (Quit) Завершение работы debug.exe. Q
R (Register) Вывод содержимого регистров и следующей инструкции. R <имя_регистра>
S (Search) Поиск в памяти символов из списка; по умолчанию используется DS. Можно указывать как длину, так и диапазон. S <начальный_адрес> L<длина> '<данные>' S <начальный_адрес> <конечный_адрес> '<данные>'
T(Trace) Пошаговое выполнение программы. Как и в команде Р, по умолчанию используется пара CS:IP. Замечу, что для выполнения прерываний лучше пользоваться командой Р. Т [=<адрес_начала>] [<количество_выполняе мых_команд>]
U (Unassemble) Дизассемблирование машинного кода; по умолчанию используется пара CS:IP. К сожалению, debug.exe некорректно дизассемблирует специфические команды процессоров 80286+, хотя они все равно выполняются корректно. U [<начальный_адрес>] U [<начальный_адрес конечный_адрес>]
W (Write) Запись файла из debug.exe; необходимо обязательно задать имя файла командой N, если он не был загружен. А программы записываются только в виде файлов .СОМ! W [<адрес> [<номер_диска> <начальный_сектор> < количество_секторов> ]]

Примечание: Символами [] отмечены необязательные параметры.

В Windows можно также запустить debug.exe и в появившимся консольном окне ввести команды, которые приведут к сбросу настроек BIOS Setup:

-О 70 33 70 - порт 33 – байт

-О 71 33

-Q

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

Т.к. адреса не всегда совпадают с 33, то имеет смысл сбросить ячейки в диапазоне 30 - 33, 40, 70. Будьте осторожны, некоторые настройки ОС также будут сняты, поэтому после перезагрузки может потребоваться ее переустановка.

Наши рекомендации