- •Лабораторная работа n 1. Принципы программного управления эвм. Команды ms dos
- •Общие положения
- •Командная строка
- •Справочная информация о командах
- •Порядок выполнения работы
- •Командный процессор
- •Задание 1
- •Содержание отчета
- •Лабораторная работа n 2. Тестирование персонального компьютера и его основных устройств
- •Общие положения
- •Инструменты операционной системы
- •Служебная программа
- •Задание 1
- •Утилита SysInfo
- •Получение общей информации о компьютере
- •Получение информации о видеосистеме
- •Получение информации о прерываниях
- •Получение информации из cmos-памяти
- •Тестирование дисковой памяти
- •Получение информации об использовании основной памяти
- •Получение информации о драйверах устройств пк
- •Тестирование быстродействия центрального процессора
- •Тестирование быстродействия дисковой памяти
- •Тестирование общего быстродействия компьютера
- •Содержание отчета
- •Программный комплекс sandra
- •Начало работы в sandra
- •Задание 1
- •Задание 2
- •Задание 3.
- •Задание 4.
- •Задание 5.
- •Задание 6.
- •Приложение 1.
- •Приложение 2.
- •Лабораторная работа n 3. Функциональные возможности отладчика программ debug
- •Назначение и функциональные возможности отладчика программ debug
- •Основные команды отладчика debug
- •Перечень заданий
- •Содержание отчета
- •Лабораторная работа n 4. 'assembler Часть 1. Этапы формирования ассемблерной программы
- •Порядок выполнения работ
- •Перечень заданий
- •Этапы формирования программы
- •Типовая структура .Asm-программы
- •Пример программы Задача расчета сложных процентов.
- •Основные сведения о листинге и его структуре
- •Программа извлечения квадратного корня.
- •Листинг программы sqr.Asm.
- •Часть 2. Создание исполняемого файла .Exe Порядок выполнения работы
- •Содержание отчета
- •Часть 3. Ассемблерная программа Порядок выполнения работ
- •Содержание отчета
- •Часть 4. Изучение процедур преобразования ascii-кода в двоичный код (str2bin) и двоичного кода в код ascii (bin2str). Краткие пояснения
- •Задание 1. Просмотр сведений о сетевых подключениях компьютера с помощью ос Windows
- •Задание 2. Установление параметров сетевых протоколов (команда ipconfig)
- •Краткая информация о команде ipconfig
- •Задание 3. Проверка ip-адресов
- •Краткая информация о команде ping
- •Задание 4. Трассировка маршрутов
- •Краткая информация о команде tracert
- •Tracert имя_хоста
- •Задание 5. Команды сети net
- •Краткая информация о команде net user
- •Краткая информация о команде net use
- •Краткая информация о команде net stat
- •Лабораторная работа № 6. Ознакомление с новейшими компьютерными технологиями и разработками путем поиска информации в сети интернет
- •Перечень заданий
Основные команды отладчика debug
a (assemble)
Создание двоичного кода процессоров 8086/8087/8088 непосредственно в памяти. Выполненная без параметров команда a начинает работу с точки последнего останова.
a [адрес]
адрес - задает адрес, по которому записаны инструкции на языке ассемблер. Параметр адрес принимает шестнадцатеричные значения без знака h.
Примечания
В Windows XP эта команда не используется. Она предназначена для обеспечения совместимости с файлами MS-DOS.
Адрес состоит из двух частей: первая содержит буквенное обозначение сегментного регистра или адрес сегмента из четырех цифр, а вторая содержит значение смещения. Адрес сегмента или сегментный регистр можно пропустить. По умолчанию для команд debug: a, g, l, t, u и w адрес сегмента содержится в регистре CS. Для других подкоманд по умолчанию используется сегмент DS. Все числовые значения при этом представлены в шестнадцатеричном формате. Между именем сегмента и значением смещения следует вставлять двоеточие.
Примеры правильных адресов: CS:0100 и 04BA:0100
Команда a создает исполняемый машинный код из инструкций на языке ассемблера. Все числовые значения должны быть представлены в шестнадцатеричном формате и записаны как набор от 1 до 4 символов. В программе Debug.exe используется общее соглашение о том, что операнды, указывающие на адрес в памяти, заключаются в квадратные скобки ([ ]).
d (dump)
Просмотр содержимого заданного диапазона адресов памяти. Выполненная без параметров команда d выводит на экран содержимое 128 байт, начиная с конца диапазона адресов, заданного в предыдущей команде d.
d [диапазон]
диапазон - задание начального и конечного адреса или начального адреса и длины блока памяти для просмотра его содержимого.
Параметр диапазон используется в подкомандах debug для задания диапазона памяти. Параметр диапазон можно задать в одном из следующих форматов: начальный адрес и конечный адрес или начальный адрес и длина (обозначаемая l) диапазона. Например, оба следующих выражения задают диапазон из 16 байтов, начинающийся с адреса CS:100: cs:100 10f и cs:100 l 10.
Если используется подкоманда d, содержимое памяти выводится командой Debug.exe двумя частями: шестнадцатеричной (каждый байт представлен в шестнадцатеричном формате) и текстовой (каждый байт представлен символом ASCII). Непечатаемые символы отображаются точкой (.) в текстовой части. Каждая строка на экране представляет содержимое 16 байт со знаком тире между восьмым и девятым байтом. Все строки начинаются на 16-ти байтной границе.
Пример.
dcs:100 10f
Команда выводит содержимое диапазона в следующем формате:
04BA:0100 54 4F 4D 00 53 41 57 59-45 52 00 00 00 00 00 00.....
Каждая строка на экране начинается с адреса, который отстоит от адреса предыдущей строки на 16 байт (или на 8 байт для экрана с 40 колонками). Для каждой последующей подкоманды d, вводимой без параметров, Debug.exe выводит следующую часть сведений непосредственно за предыдущей. Чтобы вывести содержимое 20h байт, начиная с CS:100, введите следующую команду:
dcs:100 l 20
Чтобы вывести содержимое всех байт в диапазоне от 100h до 115h в сегменте CS, введите следующую команду:
dcs:100 115
e (enter)
Ввод данных в память по заданному адресу.
e адрес [список]
адрес - обязательный параметр. Адрес начала области памяти для ввода данных.
список - байтов, которые требуется ввести в память.
Адрес состоит из двух частей: первая содержит буквенное обозначение сегментного регистра или адрес сегмента из четырех цифр, а вторая содержит значение смещения. При задании параметра адрес без указания параметра список Debug.exe выведет на экран адрес и его содержимое, затем повторит адрес на следующей строке и будет ждать ввода новой команды. В этот момент можно выполнить одно из следующих действий.
Заменить байт данных. Для этого введите новое значение. Если введенное значение не является допустимым шестнадцатеричным числом или содержит более двух цифр, Debug.exe не выводит на экран неверные или избыточные символы.
Перейти к следующему байту. Для этого нажмите клавишу ПРОБЕЛ. Для изменения данного байта введите новое значение после текущего. Если при нажатии клавиши ПРОБЕЛ пройдена 8-байтная граница, Debug.exe выводит на экран новую строку с новым адресом в начале строки.
Возвратиться к предыдущему байту. Для этого нажмите клавишу МИНУС. Для перемещения назад более чем на один байт нажмите эту клавишу несколько раз. При нажатии клавиши МИНУС Debug.exe выводит новую строку с текущим адресом и значением.
Остановить выполнение подкоманды e. Для этого нажмите клавишу ENTER. Это можно сделать в любой позиции курсора.
Если введен параметр список, подкоманда e последовательно заменяет существующие значения значениями из списка. При возникновении ошибки никакие значения не будут изменены.
Список может быть задан как шестнадцатеричными числами, так и строкой. При этом числа разделяются пробелами, запятыми или символами табуляции. Строки необходимо заключать в апострофы (т. е. 'строка') или кавычки (т. е. "строка").
Примеры
ecs:100
Debug.exe выведет содержимое первого байта в следующем формате:
04BA:0100 EB._
Чтобы заменить это значение числом 41, введите 41 в позицию курсора, как показано ниже:
04BA:0100 EB.41
Последовательность байтов можно ввести в одной подкоманде e. Вместо нажатия клавиши ENTER после нового значения, нажмите клавишу ПРОБЕЛ. Программа Debug.exe выведет следующее значение. В данном примере, если клавиша ПРОБЕЛ нажата три раза, Debug.exe выведет на экран следующие значения:
04BA:0100 EB.41 10. 00. BC._
Чтобы заменить шестнадцатеричное значение BC числом 42, введите 42 в позицию курсора, как показано ниже:
04BA:0100 EB.41 10. 00. BC.42_
Чтобы изменить значение 10 на 6F, дважды нажмите клавишу МИНУС для возврата к адресу 0101 (значение 10). Программа Debug.exe выводит следующие сведения:
04BA:0100 EB.41 10. 00. BC.42-
04BA:0102 00.-
04BA:0101 10._
Введите 6F в позицию курсора для изменения значения, как показано ниже:
04BA:0101 10.6F_
Нажмите клавишу ENTER для завершения выполнения подкоманды e и возврата к приглашению программы debug.
Рассмотрим пример ввода строковой величины:
eds:100 "Это пример текста"
Эта строка будет занимать 24 байта, начиная с адреса DS:100.
f (fill)
Заполнение адресов в определенной области памяти заданными значениями.
f диапазон список
диапазон - задание начального и конечного адреса или начального адреса и длины области памяти, которую требуется заполнить.
список - задание данных, которые требуется ввести.
Параметр диапазон используется в подкомандах debug для задания диапазона памяти. Параметр диапазон можно задать в одном из следующих форматов: начальный адрес и конечный адрес или начальный адрес и длина (обозначаемая l) диапазона. Например, оба следующих выражения задают диапазон из 16 байтов, начинающийся с адреса CS:100:
cs:100 10f
cs:100 l 10
Данные можно задать в шестнадцатеричном или текстовом формате. Данные, ранее находившиеся по данному адресу, будут удалены.
Список может состоять из шестнадцатеричных чисел или строки, заключенной в кавычки (т. е. "строка").
Примеры
Чтобы заполнить область памяти с 04BA:100 по 04BA:1FF определенными значениями (например, 42, 45, 52, 54, 41) и повторять этот набор, пока 100h байт не будут заполнены программой Debug.exe, введите следующую команду:
f04ba:100l100 42 45 52 54 41
g (go)
Выполнение загруженной программы. Запущенная без параметров подкоманда g начинает выполнение с текущего адреса в реестрах CS:IP.
g [=адрес] [точки_останова]
адрес - задание адреса в памяти, с которого требуется начать выполнение программы.
точки_останова - указание до 10 временных точек останова, которые могут быть заданы как часть подкоманды g.
Адрес состоит из двух частей: первая содержит буквенное обозначение сегментного регистра или адрес сегмента из четырех цифр, а вторая содержит значение смещения.
Введите знак равенства (=) перед параметром адрес, чтобы отличить адрес от адресов точек останова (точки_останова). Выполнение программы будет остановлено в первой встретившейся точке останова, независимо от расположения этой точки останова в списке параметра точки_останова. Debug.exe заменяет код, находящийся в точках останова, на инструкции прерывания. Когда выполнение программы дошло до точки останова, Debug.exe восстанавливает код в точках останова и выводит на экран содержимое всех регистров, все флаги состояния и деассемблированную инструкцию, которая была выполнена последней. Debug.exe выводит те же сведения, которые получают при использовании полкоманды r (регистр) и указании адреса данной точки останова. Если программа не остановлена ни в одной точке, Debug.exe не заменяет коды прерываний первоначальными инструкциями.
Точки останова могут быть установлены только по адресам, содержащим первый байт кода операции 8086 (opcode). Если установлено больше 10 точек останова, выводится следующее сообщение:
bp Error
Указатель на стек, задаваемый пользователем, должен быть допустимым, а емкость стека должна быть не менее 6 байт для подкоманды g. Для перехода к тестируемой программе в подкоманде g используется инструкция iret. Debug.exe устанавливает указатель на стек пользователя, помещает туда пользовательские флаги состояния, значение регистра кодового сегмента и указатель на текущую команду. (Если заданный пользователем стек неверен или имеет недостаточный объем, возможен сбой в операционной системе). Debug.exe записывает код прерывания (т. е. 0CCh) в указанные точки останова или адреса.
Не перезапускайте программу при получении следующего сообщения:
Program terminated normally
Чтобы правильно запустить программу, перезагрузите ее с помощью подкоманд n (name) и l (load). Для получения дополнительных сведений о выполнении циклов, строковых инструкций, программных прерываний и процедур - подкоманда p (proceed), сведения о выполнении одной инструкции - подкоманда t (trace).
Примеры
Чтобы запустить текущую программу и выполнить ее до точки останова по адресу 7550 в сегменте CS, введите следующую команду.
gcs:7550
Debug.exe выведет на экран содержимое регистров и состояние флагов, а затем остановит подкоманду g.
Чтобы установить две точки останова, введите следующую команду:
gcs:7550, cs:8000
Если подкоманда g введена снова после остановки в точке останова, выполнение начнется с инструкции, следующей за точкой останова, а не с обычного адреса начала программы.
i (input)
Считывание и вывод на экран одного байта из указанного порта ввода.
i порт
порт - ввода адресом. Адрес может быть 16-битным значением.
Примеры
Введите следующую команду:
i2f8
Если находящаяся в порту величина равна 42h, Debug.exe считает ее и выведет в следующем виде:
42
l (load)
Загрузка файла или содержимого сектора диска в память. Выполненная без параметров подкоманда l загружает файл, указанный в командной строке программы debug, в память, начиная с адреса CS:100. В регистрах BX и CX указывается количество загруженных байт. Если имя файла не было задано в командной строке debug, используется файл, ранее заданный при вызове последней подкоманды n.
l [адрес]
l [адрес] [диск] [первый_сектор] [число]
адрес - области памяти, в которую требуется загрузить содержимое файла или сектора. Если параметр адрес не задан, используется текущий адрес в регистре CS.
диск - диск, с которого считываются определенные сектора. Данный параметр задается числом: 0 = A, 1 = B, 2 = C и т. д.
первый_сектор - шестнадцатеричный номер первого сектора, содержимое которого требуется загрузить.
число - шестнадцатеричное число последовательных секторов, содержимое которых требуется загрузить.
диск, первый_сектор и число используются только в том случае, когда необходимо загрузить содержимое определенных секторов, а не файл, указанный в командной строке debug или в последней подкоманде n (name).
Для загрузки задаваемого регистрами BX:CX числа байтов из файла на диске используется: l [адрес]. Для пропуска файловой системы и прямой загрузки указанных секторов используется: l [адрес] [диск] [первый_сектор] [число]. Адрес состоит из двух частей: первая содержит буквенное обозначение сегментного регистра или адрес сегмента из четырех цифр, а вторая содержит значение смещения. Адрес сегмента или сегментный регистр могут быть пропущены.
При вызове подкоманды l с указанием параметра адрес Debug.exe загрузит файл или содержимое сектора диска в область памяти, начиная с адреса. При вызове подкоманды l со всеми параметрами Debug.exe загружает содержимое сектора диска, а не файла. Каждый сектор в указанном диапазоне считывается с диска, заданного параметром диск. Debug.exe начинает загрузку с первого_сектора и последовательно загружает сектора в память, пока не будет загружено заданное число секторов.
Для файлов с расширением .exe параметр адрес игнорируется. В этом случае Debug.exe использует загрузочный адрес, задаваемый в заголовке .exe файла. При загрузке заголовок отделяется от самого .exe файла, загружаемого в память, поэтому размер файла, указанный в заголовке, и фактически занимаемый размер в памяти будут различаться. Для просмотра .exe файла целиком он может быть переименован в файл с другим расширением и затем просмотрен в программе Debug.
В программе Debug.exe файлы с расширением .hex распознаются как файлы в шестнадцатеричном формате. Подкоманду l можно запустить без параметров для загрузки такого шестнадцатеричного файла, начиная с адреса, указанного в данном файле. Если подкоманда l запущена с параметром адрес, начальная точка загрузки определяется как сумма заданного адреса и адреса, содержащегося в шестнадцатеричном файле.
Примеры
debug
nfile.com
Чтобы загрузить файл File.com, введите следующую команду:
l
Debug.exe загружает этот файл и выводит приглашение debug.
Чтобы загрузить содержимое 109 (6Dh) секторов диска C, начиная с логического сектора 15 (0Fh), в область памяти, начиная с адреса 04BA:0100, введите следующую команду:
l04ba:100 2 0f 6d
m (move)
Копирование содержимого одного блока памяти в другой.
m диапазон адрес
диапазон - начальный и конечный адрес или начальный адрес и длина области памяти, содержимое которой требуется скопировать.
адрес - начальный адрес области памяти, в которую требуется скопировать содержимое диапазона.
Параметр диапазон используется в подкомандах debug для задания диапазона памяти. Параметр диапазон можно задать в одном из следующих форматов: начальный адрес и конечный адрес или начальный адрес и длина (обозначаемая l) диапазона. Например, оба следующих выражения задают диапазон из 16 байтов, начинающийся с адреса CS:100:
cs:100 10f
cs:100 l 10
Адрес состоит из двух частей: первая содержит буквенное обозначение сегментного регистра или адрес сегмента из четырех цифр, а вторая содержит значение смещения. Адрес сегмента или сегментный регистр могут быть пропущены. Если адреса в копируемом блоке памяти заданы так, что в этот блок не записываются новые данные, то информация в этом блоке не изменяется. Если же операция копирования является перекрывающей, перекрывающиеся данные перезаписываются. (Операция копирования является перекрывающей, если два блока памяти имеют общую часть).
Подкоманда m выполняет перекрывающее копирование без потери данных в области назначения. Содержимое адресов, которые будут перезаписаны, копируется в первую очередь. Если данные копируются из старших адресов в младшие адреса, операция копирования начинается с младшего адреса исходного блока и продолжается в направлении старшего адреса. И наоборот, если данные копируются из младших адресов в старшие, копирование начинается со старших адресов исходного блока и продолжается в направлении младшего адреса.
Примеры
Чтобы скопировать содержимое адресов с CS:110 по CS:510, а затем с CS:10F по CS:50F и так далее, пока все содержимое адресов с CS:100 по CS:500 не будет скопировано, введите следующую команду:
mcs:100 110 cs:500
Чтобы просмотреть результаты, воспользуйтесь подкомандой d (dump), указав адреса, заданные в подкоманде m.
n (name)
Задание имени исполняемого файла для команд debug l (load) или w (write) или задание параметров для отлаживаемого исполняемого файла. Выполненная без параметров подкоманда n очищает текущие значения.
n [путь][исполняемый_файл]
n [параметры_файла]
Задание расположения и имени исполняемого файла для тестирования, параметров и ключей командной строки для тестируемого исполняемого файла.
Подкоманду n можно использовать двумя способами. Во-первых, для задания имени файла для последующих подкоманд l (load) или w (write). Если программа Debug.exe вызвана без задания имени файла для отладки, команда n имя_файла должна быть вызвана перед использованием команды l для загрузки файла. Имя файла форматируется соответствующим образом для контрольного блока файла (FCB) по адресу CS:5C. Во-вторых, подкоманда n может использоваться для задания параметров и ключей командной строки отлаживаемого файла.
В таблице перечислены четыре области памяти, которые используются командой n.
Область памяти |
Содержимое |
CS:5C |
Блок управления файлом (FCB) для файла 1 |
CS:6C |
Блок управления файлом (FCB) для файла 2 |
CS:80 |
Длина строки команды n (в символах) |
CS:81 |
Начало строки команды n |
Первое имя файла, задаваемое командой n, размещается в блоке управления файлом по адресу CS:5C. Если задано второе имя, оно помещается в блок управления файлом по адресу CS:6C. Количество символов в командной строке команды n (кроме первого символа, n) сохраняется по адресу CS:80. Собственно командная строка n (снова без символа n) сохраняется, начиная с адреса CS:81. Эти символы могут быть любыми параметрами и разделителями, которые допустимо вводить с командной строки в Windows 2000.
Примеры
В этом примере запускается команда debug и загружается программа Prog.com для отладки. Чтобы указать два параметра для программы Prog.com и запустить эту программу, введите следующую команду:
debug prog.com
nparam1 param2
g
В этом случае подкоманда g (go) запускает программу так, как если бы она была запущена с командной строки в виде:
prog param1 param2
При тестировании и отладке создается среда времени исполнения для программы Prog.com.
В следующей последовательности команд первая подкоманда n задает имя файла File1.exe для последующей подкоманды l (load), которая загружает файл File1.exe в память. Вторая подкоманда n задает для файла File1.exe. Наконец, подкоманда g запускает File1.exe так, как если бы с командной строки было бы введено File1 File2.dat File2.dat.
nfile1.exe
lnfile2.dat file3.dat
g
После команды l во втором экземпляре команда n не используется. Если подкоманда w (write) используется во втором экземпляре подкоманды n, файл File1.exe (т. е. отлаживаемый) сохраняется под именем File2.dat. Чтобы этого не произошло, всегда вызывайте команду l или w сразу же после команды n в первой форме.
o (output)
Вывод байта в порт вывода.
o порт байт
порт - адрес порта вывода, 16-битное значение.
байт - значение байта, выводимого в порт.
Примеры
Чтобы отправить байт 4Fh в порт вывода по адресу 2F8h, введите следующую команду:
o2f8 4f
p (proceed)
Выполнение цикла, строковой инструкции, программного прерывания или процедур, а также вход в другую инструкцию. Выполненная без параметров команда p выводит список реестров и их текущих значений.
p [=адрес] [число]
адрес - инструкции, которая будет выполнена первой. Если адрес не указан, по умолчанию выполнение начнется с инструкции, задаваемой регистрами CS:IP.
число - количество инструкций, которые будут выполнены перед возвратом управления программе Debug.exe. По умолчанию используется значение 1.
Адрес состоит из двух частей: первая содержит буквенное обозначение сегментного регистра или адрес сегмента из четырех цифр, а вторая содержит значение смещения. Адрес сегмента или сегментный регистр могут быть пропущены.
Если в параметре адрес не указан сегмент, Debug.exe использует регистр CS тестируемой программы. Если параметр адрес опущен, выполнение программы начинается с адреса, указываемого регистрами CS:IP. Чтобы отличить параметр адрес от параметра число, перед адресом обязательно должен быть введен знак равенства (=). В случае если инструкция по заданному адресу не является циклом, строковой инструкцией, программным прерыванием или процедурой, подкоманда p работает также, как подкоманда t (trace).
Если в программе Debug.exe управление передано тестируемой программе с помощью команды p, выполнение продолжается до тех пор, пока цикл, строковая инструкция, программное прерывание или процедура не будут закончены или пока не будет выполнено заданное количество инструкций. Затем управление возвращается к Debug.exe.
После запуска подкоманды p Debug.exe выводит на экран содержимое регистров, флаги состояния и следующую инструкцию в деассемблированном виде.
Подкоманда p не может быть использована для отладки инструкций, содержащихся в ПЗУ.
Примеры
В этом примере тестируемая программа содержит инструкцию call по адресу CS:143F. Чтобы выполнить процедуру, указанную в call, и возвратиться в программу Debug.exe, введите следующую команду:
p=143f
Результаты программы Debug.exe будут выведены в следующем формате:
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=2246 ES=2246 SS=2246 CS=2246 IP=1443 NV UP EI PL NZ AC PO NC
2246:1442 7505 JNZ 144A
q (quit)
Окончание работы программы Debug.exe без сохранения тестируемого файла и возврат в командную строку.
q
r (register)
Редактирование содержимого одного или нескольких регистров ЦПУ. Выполненная без параметров команда r выводит содержимое всех регистров и флагов из временного хранилище регистра, состояния всех всех флагов и декодированную инструкцию в текущей области.
r [регистр]
регистр - имя регистра, содержащего сведения, которые требуется вывести на экран.
Если задан регистр, Debug.exe выводит на экран его 16-разрядное значение в шестнадцатеричном формате и двоеточие в качестве приглашения. Если требуется изменить значение содержащееся в регистре, введите новое значение и нажмите клавишу ENTER. В противном случае нажмите клавишу ENTER для возврата к приглашению программы debug.
В следующей таблице перечислены допустимые регистры x86 для параметра регистр.
Ax |
bp |
bx |
Cs |
Cx |
di |
ds |
Dx |
Es |
f |
ip |
Pc |
Si |
sp |
ss |
|
Если задан недопустимый регистр, выводится следующее сообщение: Ошибка: br
Если указать f вместо регистра, Debug.exe выводит на экран текущее значение каждого флага состояния в виде двухбуквенного кода и приглашение debug. Для изменения значения флага введите соответствующий двухбуквенный код, воспользовавшись следующей таблицей.
-
Флаг
Установлен
Снят
Переполнение
Ov
Nv
Направление
dn (уменьшение)
up (увеличение)
Прерывание
ei (включено)
di (выключено)
Знак
ng (отрицательный)
pl (положительный)
Ноль
zr
Nz
Добавочный перенос
ac
Na
Четность
pe (четный)
po (нечетный)
Перенос
cy
Nc
Новые значения флагов могут быть введены в любой последовательности. Между этими значениями не нужно вводить пробел. Чтобы завершить выполнение подкоманды r, нажмите клавишу ENTER. Флаги, новые значения для которых не вводились, останутся неизмененными.
При задании более одного значения для флага выводится следующее сообщение:
Ошибка: df
При вводе кода, не содержащегося в таблице, выводится следующее сообщение:
Ошибка: bf
В обоих случаях Debug.exe пропустит все значения, следующие после неверного ввода.
Когда запускается программа Debug.exe, сегментный регистр указывает на нижнюю границу свободной памяти, указатель инструкций устанавливается равным 0100h, все флаги состояния очищаются, оставшиеся регистры обнуляются, за исключением sp, который устанавливается равным FFEEh.
Примеры
Если текущее положение указателя инструкций равно CS:11A, выводятся следующие сведения:
AX=0E00 BX=00FF CX=0007 DX=01FF SP=039D BP=0000 SI=005C DI=0000
DS=04BA ES=04BA SS=04BA CS=O4BA IP=011A NV UP DI NG NZ AC PE NC
04BA:011A CD21 INT 21
Чтобы просмотреть только состояния флагов, введите следующую команду:
rf
Результаты программы Debug.exe выводятся в следующем формате:
NV UP DI NG NZ AC PE NC - _
Введите одно и несколько допустимых значений флагов с пробелами или без них. Например:
nv up di ng nz ac pe nc - pleicy
Debug.exe завершит выполнение подкоманды r и выведет приглашение debug. Для просмотра изменений воспользуйтесь командой r или rf. Программа Debug.exe выводит следующие сведения:
NV UP EI PL NZ AC PE CY - _
Нажмите клавишу ENTER для возврата к приглашению программы debug.
s (search)
Поиск в области памяти по шаблону из одного или нескольких байт.
s диапазон список
диапазон - начальный и конечный адреса области памяти, в которой будет производиться поиск.
список - шаблон из одного или нескольких байт или символьной строки для поиска.
Параметр диапазон используется в подкомандах debug для задания диапазона памяти. Параметр диапазон можно задать в одном из следующих форматов: начальный адрес и конечный адрес или начальный адрес и длина (обозначаемая l) диапазона. Например, оба следующих выражения задают диапазон из 16 байтов, начинающийся с адреса CS:100:
cs:100 10f
cs:100 l 10
Если используется параметр список, отделяйте значение каждого байта пробелом или запятой, а строки заключайте в кавычки (т. е. "строка"). Если список содержит несколько значений, выводится только первый адрес, в котором встречается данное значение. Если список содержит только одно значение, выводятся все адреса из указанного диапазона, в которых встречается данное значение.
Примеры
Чтобы найти все адреса в диапазоне от CS:100 до CS:110, содержащие значение 41, введите следующую команду:
scs:100 110 41
Результаты программы Debug.exe будут выведены в следующем формате:
04BA:0104
04BA:010D
Чтобы найти строку «Ph» в диапазоне от CS:100 до CS:1A0, введите следующую команду:
scs:100 1a0 "Ph"
t (trace)
Выполнение одной инструкции с выводом содержимого регистров, флагов состояния и декодированной формы выполняемой инструкции. При запуске подкоманды t без параметров выполнение начинается с адреса, указанного в регистрах CS:IP программы.
t [=адрес] [число]
адрес, с которого Debug.exe начнет выполнение инструкций.
число инструкций для выполнения.
Указанное значение должно быть шестнадцатеричным числом. По умолчанию значение равно 1.
Адрес состоит из двух частей: первая содержит буквенное обозначение сегментного регистра или адрес сегмента из четырех цифр, а вторая содержит значение смещения. Адрес сегмента или сегментный регистр могут быть пропущены.
Подкоманда t использует аппаратный режим трассировки микропроцессоров 8086 и 8088. Можно трассировать инструкции, хранимые в ПЗУ.
Примеры
Если текущая позиция указателя кода является 04BA:011A, Debug.exe выведет следующие сведения:
AX=0E00 BX=00FF CX=0007 DX=01FF SP=039D BP=0000 SI=005C DI=0000 DS=04BA ES=04BA SS=04BA CS=O4BA IP=011A NV UP DI NG NZ AC PE NC 04BA:011A CD21 INT 21
u (unassemble)
Деассемблирование байтов и просмотр соответствующего исходного кода, включая адреса и двоичные значения. Деассемблированный код выводится в формате, похожем на распечатку ассемблерного файла. Выполненная без параметров подкоманда u деассемблирует 20h байт (значение по умолчанию), начиная с первого адреса после адреса, использованного в предыдущей подкоманде u.
u [диапазон]
диапазон - начальный и конечный адрес или начальный адрес и длина участка двоичного кода, который требуется деассемблировать.
Параметр диапазон используется в подкомандах debug для задания диапазона памяти. Параметр диапазон можно задать в одном из следующих форматов: начальный адрес и конечный адрес или начальный адрес и длина (обозначаемая l) диапазона.
Примеры
Чтобы деассемблировать 16 (10h) байт, начиная с адреса 04BA:0100, введите следующую команду:
u04ba:100l10
Результаты программы Debug.exe выводятся в следующем формате:
04BA:0100 206472 AND [SI+72],AH
04BA:0103 69 DB 69
04BA:0104 7665 JBE 016B
04BA:0106 207370 AND [BP+DI+70],DH
04BA:0109 65 DB 65
04BA:010A 63 DB 63
04BA:010B 69 DB 69
04BA:010C 66 DB 66
04BA:010D 69 DB 69
04BA:010E 63 DB 63
04BA:010F 61 DB 61
Чтобы просмотреть сведения только об адресах с 04BA:0100 по 04BA:0108, введите следующую команду:
u04ba:0100 0108
Программа Debug.exe выводит следующие сведения:
04BA:0100 206472 AND [SI+72],AH
04BA:0103 69 DB 69
04BA:0104 7665 JBE 016B
04BA:0106 207370 AND [BP+DI+70],DH
w (write)
Запись файла или определенных секторов на диск. При запуске подкоманды w без параметров запись начинается с адреса CS:100.
w [адрес]
w [адрес] [диск] [первый_сектор] [число]
адрес - начальный адрес файла или части файла, который требуется записать на диск.
диск - диск назначения. Данный параметр задается числом: 0 = A, 1 = B, 2 = C и т. д.
первый_сектор - шестнадцатеричный адрес первого сектора для записи.
число - количество секторов, которые требуется записать.
Для записи количества байт, заданного в регистрах BX:CX, в файл на диске используется следующий команды:
w [адрес]
Для пропуска файловой системы и прямой записи указанных секторов используется следующий команды:
w [адрес] [диск] [первый_сектор] [число]
Адрес состоит из двух частей: первая содержит буквенное обозначение сегментного регистра или адрес сегмента из четырех цифр, а вторая содержит значение смещения. Адрес сегмента или сегментный регистр могут быть пропущены. Имя файла на диске нужно задать при запуске программы Debug.exe или в последней вызванной подкоманде n (name). Оба эти метода правильно форматируют имя файла для блока управления файлом (FCB) по адресу CS:5C.
Сброс значений регистров BX:CX перед использованием команды w без параметров. Если используются подкоманды g (go), t (trace), p (proceed) или r (register), перед использованием команды w без параметров значения регистров BX:CX необходимо сбросить. Если файл был изменен, но имя, размер и начальный адрес не менялись, Debug.exe позволяет записать файл в его исходное расположение на диске. Файлы с расширениями .exe и .hex нельзя записать с помощью этой команды. Непосредственная запись в сектор диска является исключительно опасной, так как в этом случае не выполняется дескриптор файла Windows XP. Логическая структура диска может быть повреждена при вводе неверного значения.
Примеры
Чтобы записать содержимое области памяти, начиная с адреса CS:100, на диск B и собрать данные из 2Bh секторов, начиная с логического сектора диска под номером 37h, введите следующую команду:
wcs:100 1 37 2b
После окончания операции записи выводится приглашение программы debug.
xa (allocate expanded memory)
Выделение заданного количества страниц памяти EMS. Выполненная без параметров подкоманда xa проверяет наличие или отсутствие поддержки дополнительной памяти (EMS).
xa [число_страниц]
число_страниц памяти EMS. Размер страницы составляет 16 килобайт.
Система Windows XP не поддерживает память EMS. Для использования памяти EMS на компьютере должен быть установлен драйвер памяти EMS, поддерживающий версию 4.0 спецификации Lotus/Intel/Microsoft Expanded Memory Specification (LIM EMS). Если запрашиваемое количество страниц доступно, Debug.exe выводит сообщение о шестнадцатеричном номере созданного дескриптора. В противном случае выводится сообщение об ошибке.
Примеры
Чтобы выделить восемь страниц дополнительной памяти, введите следующую команду:
xa8
Если команда успешно выделит память, выводятся следующие сведения:
Создан дескриптор=0003
xd (deallocate expanded memory)
Освобождение дескриптора памяти EMS. Выполненная без параметров подкоманда xd проверяет наличие или отсутствие поддержки дополнительной памяти (EMS).
xd [дескриптор]
дескриптор - освобождаемый дескриптор.
Система Windows XP не поддерживает память EMS. Для использования памяти EMS на компьютере должен быть установлен драйвер памяти EMS, поддерживающий версию 4.0 спецификации Lotus/Intel/Microsoft Expanded Memory Specification (LIM EMS).
Примеры
Чтобы освободить дескриптор 0003, введите следующую команду:
xd 0003
При успешном выполнении программы Debug.exe будет выведено сообщение:
Дескриптор 0003 освобожден
xm (мар expanded memory pages)
Отображение логической страницы памяти EMS, соответствующей заданному дескриптору, в физическую страницу памяти EMS. Выполненная без параметров подкоманда xm проверяет наличие или отсутствие поддержки памяти EMS.
xm [лог_страница] [физ_страница] [дескриптор]
лог_страница - номер логической страницы памяти EMS, которая будет отображена в физическую страницу физ_страница.
физ_страница - номер физической страницы памяти EMS, в которую будет отображена логическая страница лог_страница.
дескриптор - задание дескриптора.
Система Windows XP не поддерживает память EMS. Для использования памяти EMS на компьютере должен быть установлен драйвер памяти EMS, поддерживающий версию 4.0 спецификации Lotus/Intel/Microsoft Expanded Memory Specification (LIM EMS).
Примеры
Чтобы отобразить логическую страницу 5 дескриптора 0003 в физическую страницу 2, введите следующую команду:
xm 5 2 0003
При успешном выполнении программы Debug.exe будет выведено сообщение:
Логическая страница 05 отображена на физическую страницу 02
xs (display expanded memory status)
Вывод сведений о состоянии памяти EMS.
xs
Для использования памяти EMS на компьютере должен быть установлен драйвер памяти EMS, поддерживающий версию 4.0 спецификации Lotus/Intel/Microsoft Expanded Memory Specification (LIM EMS). Результаты программы Debug.exe выводятся в следующем формате:
Для дескриптора xx выделено xx страниц
Физическая страница xx = Сегмент EMS xx
Выделено xx из xx страниц EMS
Выделено xx из xx дескрипторов EMS
Примеры
Чтобы вывести сведения о состоянии памяти EMS, введите следующую команду:
xs
Подкоманда xs выводит сведения в следующем виде:
Handle 0000 has 0000 pages allocated
Для дескриптора 0001 выделено 0002 страниц
Физическая страница 00 = Сегмент EMS C000
Физическая страница 01 = Сегмент EMS C400
Физическая страница 02 = Сегмент EMS C800
Физическая страница 03 = Сегмент EMS CC00
Выделено 2 из 80 страниц EMS
Выделено 2 из FF дескрипторов EMS
