Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Команды переназначения ввода/вывода



Синтаксис:

< < имя устройства>

> < имя устройства>

=< имя устройства>

< имя устройства>

< имя устройства>

~< имя устройства>

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

Команда > переключает весь последующий вывод SYMDEB, а команда < — весь последующий ввод SYMDEB на указанное устройство. Команда = включает в себя обе эти функции.

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

В качестве имени устройства может быть указано принятое в DOS имя устройства или имя файла.

Если в качестве имени устройства задано COM1 или COM2, это накладывает дополнительные ограничения на конфигурацию системы. В частности, в этом случае становятся недоступными и игнорируются комбинации клавиш CTRL-C и CTRL-S.

Выдача регистров

Синтаксис:

R [< имя регистра> [[=]< значение> ]]

Команда R выдает на дисплей содержимое регистров процессора и позволяет загружать их требуемыми значениями.

Если имя регистра опущено, выдаются все регистры и флаги.

 

Кроме того, выдается инструкция, на которую указывают регистры CS и IP, и может быть сделана попытка выполнить ее. При этом SYMDEB вычисляет операнды инструкции. Если инструкцией является вызов DOS, будет показан номер функции. Если регистры CS и IP установлены не на инструкцию, а на позицию в памяти, будет выдан адресующий ее символ.

Если указано имя регистра, SYMDEB выдает его содержимое и запрашивает новое значение (ответ заключается в наборе требуемых символов и нажатии клавиши ENTER ). Если заданы и имя регистра, и значение, производится загрузка регистра.

Могут быть указаны следующие имена регистров: AX, BX, CX, DX, SP, BP, SI, DI, CS, DS, SS, ES, IP, PC ( IP ) и F (флаги).

Установка значений флагов осуществляется следующим образом. При спецификации F в команде R состояние каждого флага выдается в виде двухсимвольного кода. Список значений заканчивается символом -, после которого можно в этом же коде в любой последовательности ввести новые значения выбранных флагов. Значения остальных флагов не изменятся. Каждый флаг в одном списке может быть специфицирован только один раз. Конец списка обозначается нажатием клавиши ENTER.

Коды значений флагов

Флаг 1 0

Переполнение OV NV

Направление DN UP

(уменьшение) (увеличение)

Прерывания EI (запрет) DI (разрешение)

Знак NG (минус) PL (плюс)

Нуль ZR NZ

Вспомогательный
перенос AC NA

Паритет PE PO

(четность) (нечетность)

Перенос CY NC

Флаги модифицируются последовательно по одному. Поэтому при ошибочном кодировании возникнет ситуация, когда часть флагов (до ошибочного символа) изменила свои значения, а часть, начиная с ошибочного символа, — нет.

Формат и объем выдаваемой информации существенно зависит от режима, установленного командой S.

 

Смена экрана

Синтаксис:

\

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

Возврат на экран SYMDEB осуществляется нажатием любой клавиши.

При работе на IBM-машине для использования команды смены экрана необходимо задание опции SYMDEB /S. При работе на машине, совместимой с IBM, необходимо также задать опцию /I.

Команда поиска

Синтаксис:

S < границы> < список>

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

Команда установки режима индикации

Синтаксис:

S-|+|&

Команда S устанавливает режим выдачи на дисплей, которому SYMEB будет в дальнейшем придерживаться.

По команде S+ SYMDEB будет выдавать на экран информацию в терминах линий исходного текста программы. Команда S- устанавливает режим выдачи реассемблированного кода программы. Команда S& обеспечивает обе эти функции. Первоначальным умалчиваемым режимом является S&.

Команда S имеет смысл лишь при работе с программами на языке высокого уровня. Для ассемблерных программ автоматически устанавливается режим S-.

Если символьный план не открыт или не содержит информацию о линиях исходной программы, SYMDEB игнорирует все последующие запросы на выдачу исходных линий. В режиме S& SYMDEB выдает исходную линию, содержащую инструкцию, на которую указывает пара регистров CS и IP.

Команда S оказывает влияние на работу последующих команд реассемблирования U.

Команда S влияет также на работу команд R, T и Р. В режиме S+ эти команды выдают за раз одну исходную линию, которая может соответствовать нескольким реассемблированным инструкциям. В режиме S- выдается только реассемблированный код. В режиме S& выдаются реассемблированный код и номера линий.

Исходные линии выдаются в виде:

< номер линии>: < исходный текст>

Исходные линии при выдаче предшествуют реассемблированным инструкциям.

Всякий раз, когда SYMDEB первый раз обращается к исходному тексту, он ищет в текущем подоглавлении файл с тем же базовым именем, что и соответствующий символьный файл. При неудачном поиске SYMDEB выдает на консоль запрос об имени исходного файла. Если в ответ на него нажать клавишу ENTER, не указав имени, SYMDEB подавит выдачу исходных линий, вместо которых тогда будут выдаваться имя плана и номер линии. Эту процедуру нужно производить при работе с программами, сформированными ранними версиями (до 3.31) компиляторов FORTRAN и PASCAL.

Временный выход в DOS

Синтаксис:

! [< команда DOS> ]

Команда! позволяет выполнить COMMAND.COM и команды MS-DOS вне SYMDEB. COMMAND.COM выполняется без аргументов с сохранением контекста отладки. Для возврата в SYMDEB служит команда MS-DOS EXIT.

Если в команде! задана команда DOS, производится выполнение этой команды и автоматический возврат в SYMDEB.

Использование команды! требует дополнительной памяти. Для более экономного использования памяти рекомендуется предусматривать в ассемблерных программах вызов DOS с функцией 4Ah, который освободит неиспользуемую память. Тот же эффект дает опция LINK /CPARMAXALLOC. Программы на языке C, обработанные компилятором MICROSOFT C версии 3.0 и выше, освобождают ненужную память автоматически, если была выполнена процедура _main. SYMDEB также освобождает неиспользуемую им память.

 

В команде! не может быть использован ограничитель;, так как весь текст после! передается в COMMAND.COM и будет интерпретироваться как командная строка DOS.

Для размещения копии COMMAND.COM SYMDEB использует переменную COMSPEC команды DOS SET.

Команда выдачи кода исходной линии

Синтаксис:

.

По этой команде выдается код исходной линии невзирая на режим, установленный командой S.

Команда не может быть использована при работе с ассемблерными программами.

Команда трассировки стека

Синтаксис:

K [< число> ]

Эта команда позволяет увидеть текущий кадр стека. Первая строка трассы содержит имя текущей процедуры, ее аргументы, имя файла и номер линии, вызвавшей процедуру. Следующая строка описывает вызвавшую процедуру. Если число аргументов процедуры переменно или неизвестно, SYMDEB использует специфицированное в команде K число, которое задает число слов параметров.

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

Команда установки символа

Синтаксис:

Z < символ> < значение>

В результате выполнения команды Z указанный символ будет связан со специфицированным значением адресом.

T-трассировка

Синтаксис:

T [=< адрес начала> ] [< счетчик> ]

Команда T выполняет задаваемую адресом инструкцию и затем выдает на дисплей в формате команды R текущее содержимое всех регистров и флагов.

Если < адрес> опущен, выполняется инструкция по адресу, определяемому регистрами CS и IP.

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

В отличие от P-трассировки T-трассировка не прекращается при вызове процедуры или прерывании. Исключение составляет лишь прерывание с номером 21h (функция DOS).

Трассировка будет идти лучше, если не использовались средства оптимизации данного языка.

С помощью команды T можно трассировать инструкцию в ROM (read-only memory).

Формат и объем выдаваемой информации существенно зависит от режима, установленного командой S.

Команда реассемблирования

Синтаксис:

U [< границы> ]

По команде U на дисплей выдаются реассемблированные инструкции и/или предложения исходной программы. Формат вывода зависит от режима, установленного командой S, и от языка, на котором была написана программа. Если отлаживаемая программа была обработана MASM или несовместимым с SYMDEB компилятором, принудительно устанавливается режим S-. В режимах S+ и S& при работе с программами, выработанными совместимыми с SYMDEB компиляторами, по команде U выдаются линии исходного текста и реассемблированные инструкции (одна исходная линия для каждой соответствующей группы предложений Ассемблера). Исходные линии считываются из исходного файла. Инструкции для реассемблирования берутся из блока памяти в указанных в команде границах.

В отличие от команд T и P, для команды U режимы S+ и S& совпадают. Для обоих режимов (исходного и смешанного) SYMDEB требует, чтобы вместе с программой был загружен и символьный план, содержащий информацию о номерах строк исходной программы. При отсутствии этой информации исходные линии не выдаются.

Если < границы> опущены, обрабатываются первые 8 линий кода по текущему адресу реассемблирования. Текущим адресом реассемблирования является адрес первого байта (линии) после последнего байта (линии), выданного предыдущей командой U. Защищенные инструкции процессора 80286 не могут быть реассемблированы.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2017-03-08; Просмотров: 1192; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.073 с.)
Главная | Случайная страница | Обратная связь