Turbo Debugger 5.0: Руководство по применению, при выполнении лабораторных работ, страница 7

Появляющееся после инициирования опции Goto окно подсказки запрашивает занесения искомого адреса программы (если задается адрес в том же сегменте, то достаточно задания смещения в сегменте), и последующего нажатия левой клавиши мыши или нажатия клавиши Enter клавиатуры.

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

Если при создании объектного и загрузочного (исполнительного) файла предусматривается создание символьной таблицы (использование ключа /zi при компиляции, и ключа /v при компоновке), то задание адреса может быть осуществлено не только указанием адресной константы. Оно может быть определено именем переменной (типа “myvar”), меткой (типа “lab1”) или номером строки (например: #54), и даже символьным выражением, которое определяет местоположение в памяти (например: “abc [4].def”).

Origin

ДирективаOriginпозволяет отобразить в кодовой панели участок программы по адресу, находящемуся в данный момент в регистровой паре CS:IP и, следовательно, инструкция отлаживаемой программы в первой строке кодовой панели, после инициирования данной директивы, будет являться текущей инструкцией, подлежащей исполнению

Follow

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

Эта директива используется для просмотра инструкций, которые должны будут выполняться, если будет иметь место вызов процедуры или переход. Если текущая инструкция при инициировании директивы Follow является инструкцией условного перехода вы, естественно, сможете просмотреть код по адресу перехода только в том случае, если условия перехода были выполнены и переход будет осуществлен.

Caller

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

Турбоотладчик не всегда может определить, откуда вызвана подпрограмма, особенно если вы занесли данные в стек внутри подпрограммы. В этом случае директива Caller не сработает.

Previous

Директива Previous устанавливает отображение кодовой панели, которое было перед тем, как была выдана директива, изменившая адрес дисплея.

Эта директива очень удобна для отмены действий директив Follow и Caller.

Search

Опция Search позволяет осуществлять поиск байт или инструкций в отлаживаемой программе. При инициализации этой опции вам предлагается ввести инструкцию, которую вы хотите найти (в кодовой панели) либо последовательность байт и/или строк символов, разделенных интервалами (в панели данных).

ViewSource

Директива ViewSourceоткрывает окно Modulewindow, в котором отображен исходный файл программы, инструкции которого соответствуют дизассемблированным инструкциям, наблюдаемым в окне CPU.

Mixed

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

No: отображаются только дизассемблированные инструкции, даже если соответствующий исходный файл имеется.

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

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

New cs:ip

Директива Newcs:ip формирует адрес инструкции, начиная с которой отлаживаемая программа начнет исполняться после ее запуска. Само формирование этого адреса реализуется путем занесения логического адреса этой инструкции в сегментный регистр - cs и регистр указателя инструкций – ip. А задается этот адрес текущим положением высвеченной курсорной полосы, устанавливаемым пользователем клавишами-стрелками или курсором мыши с последующим нажатием левой ее клавиши.

Рекомендуется пользоваться этой директивой с большой осторожностью, так как при этом можно легко пропустить инструкцию, которая требует вызова подпрограммы, сохранения регистров или поддержки стековой области памяти достоверной.

Assemble

Опция Assemble позволяет вводить и ассемблировать новую инструкцию на место прежней, выделенной курсорной полосой. При инициировании этой опции открывается окно Enterinstructiontoassemble, в котором вам предлагается ввести новую требуемую инструкцию. Заметим, что указанное окно автоматически открывается и при непосредственном вводе ассемблерной инструкции, даже без вашего инициирования опции Assemble.

Набирайте ассемблерные инструкции так же, как это вы бы делали, формируя исходный ассемблерный файл, или, вводя ассемблерный оператор в исходный файл на языке С.

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

При вводе инструкций пользуйтесь следующими клавишами:

→ - перемещение вправо на один символ;

← - перемещение влево на один символ;

 ↑  - перемещение на одну строку вверх;

 ↓  - перемещение на одну строку вниз;

Ctrl→ - перемещение вправо на одно слово;

Ctrl← - перемещение влево на одно слово;

Backspace – устранение символа влево от курсора;

Dell - устранение символа под курсором;

Esc – ликвидация диалогового блока и возврат;

Home – перемещение в начало вводимой строки;

End - перемещение в конец вводимой строки;

Enter – ввод строки.

I/O

Опция I/Oпозволяет вам прочитать и записать байты или слова из задаваемых портов ввода/вывода. Значение байт или слов, заносимых в регистр данных портов ввода/вывода или считываемых из них, отображаются как в десятичном, так и в шестнадцатеричном форматах. Вместо конкретных значений, вы можете задавать целые синтаксически правильные выражения, определяющие номер порта. Значения номеров портов могут задаваться в пределах от 0 до 65535.