ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 19


                      Выражение условия
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Когда вы выбираете селективный переключатель  Changed Memory
(Изменение памяти),   Expression  True  (Выражение  истинно)  или
Hardware Condition (Аппаратное условие), нужно задать набор усло-
вий,  которые  будут  известны  Турбо  отладчику при срабатыванию
точки останова. Набор условий состоит из одного или более выраже-
ний.  Чтобы  весь набор условий принял истинное значение,  каждое
условие должно принять истинное значение.

     С набором условий связывается набор действий.  Когда при вы-
числении условия получается истинное значение,  выполняется соот-
ветствующий набор действий.

          Примечание: Подробнее о задании  действия, выполняемого
     по точке останова,  рассказывается ниже в разделе "Выражение
     действия".

     Чтобы добавить к точке останова условие, нужно:

     1. Выбрать селективный переключатель Changed Memory (Измене-
        ние  памяти),  Expression  True  (Выражение  истинно) или
        Hardware (Аппаратная).

     2. Выбрать "кнопку" Add(Добавление) под текстовым поле ввода
        Condition Expression.

     3. Ввести  в  текстовое поле Condition Expression (Выражения
        условия) условие или выражение с переменной.

     4. Если вы хотите,  чтобы для  конкретного  набора  действий
        проверялось  значение  нескольких переменных или условий,
        повторите шаги 2 и 3,  пока в  текстовое  поле  Condition
        Expression не будут добавлены все условия.

     5. Когда вы зададите набор условий, используйте для указания
        списка действий,  выполнение которых вы хотите задать при
        срабатывании точки останова, поле ввода Action Expression
        (Выражение действия).

     Одна точка останова может иметь несколько  наборов связанных
с ней условий и действий. Если вы хотите связать с точкой остано-
ва более одного набора условий и действий,  то выберите после за-
дания первой  последовательности  условий и действий "кнопку" OK.
При этом будет закрыто диалоговое окно Conditions and  Actions, и
вы вернетесь в диалоговое окно Breakpoint Options (Параметры точ-
ки останова). Здесь выберите для добавления нового набора условий
и  действий  команду Add (Добавление).  Если точка останова имеет
несколько условий и действий,  каждое из них будет вычисляться  в
том порядке, в каком они введены. Если при вычислении условий ис-
тинное значение принимает несколько условий, то будет выполняться
более одного набора действий.

     "Кнопка" Delete (Удаление),  которая находится под текстовым
полем Condition Expression,  позволяет вам удалить из  текстового
поля Condition  Expression (Выражение условия) текущее подсвечен-
ное выражение.  Выберите эту "кнопку", если вы хотите удалить ус-
ловие из набора условий.

                       Выражение действия

     При выборе  селективного переключателя Execute (Выполнение),
Enable Group (Разрешение группы) или  Disable  Group  (Запрещение
группы) должен быть предусмотрен набор действий,  благодаря кото-
рым Турбо отладчик будет знать, что нужно делать при срабатывании
точки останова. Набор действий может состоять из нескольких дейс-
твий:

     Чтобы добавить к точке  останова  набор  действий,  сделайте
следующее:

     1. Выберите  селективный переключатель Execute (Выполнение),
        Enable Group (Разрешение группы) или Disable Group  (Зап-
        рещение группы).

     2. Выберите "кнопку" Add (Добавление), которая находится под
        текстовым полем Action Expression.

     3. Введите действие в текстовое поле Action Expression  (Вы-
        ражения действия).

        Если вы хотите, чтобы при срабатывании точки останова вы-
        полнялось несколько действий,  повторите шаги 2 и 3, пока
        все  они  не  будут  добавлены  в  текстовое  поле Action
        Expression.

     4. Когда вы закончите вводить действия,  выберите в диалого-
        вом окне Conditions and Actions "кнопку" OK.

     Если вы выбрали селективные переключатели Enable Group (Раз-
решение группы) или Disable Group (Запрещение группы), для указа-
ния  группы,  которую  вы ходите разрешить или запретить,  просто
введите в текстовое поле Action Expression номер группы.

     "Кнопка" Delete (Удаление),  которая находится под текстовым
полем Action Expression, позволяет вам удалить текущее условие из
набора условий.

                  Поле ввода Pass Count...
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Поле ввода Pass Count (Счетчик проходов) задает, сколько раз
данное действие должно быть обнаружено перед тем,  как оно срабо-
тает. Значение счетчика уменьшается только в том случае, если со-
ответствующее точке останова условие принимает истинное значение.
Это означает,  что если наряду с условием установили счетчик про-
ходов, то точка останова сработает, когда условие n-ый раз примет
истинное значение.

                  Настройка точек останова
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                   Простые точки останова
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     При первоначальной установки точки останова она имеет назна-
чаемые по умолчанию параметры Always Break. После установки точки
останова выполняемые по ней действия и  условия  ее  срабатывания
можно настроить. Точки останова можно задать несколькими способа-
ми, каждый из них удобно использовать в определенных  обстоятель-
ствах.

     1. Переместите курсор на нужную строку исходного кода (в ок-
        не Module или в области кода окна CPU)  и  дайте  команду
        BreakpointsіToggle (Точки остановаіПереключение) или наж-
        мите клавишу F2 (можно также  щелкнуть  кнопкой  "мыши").
        Если  дать  эту команду на строке,  где уже имеется точка
        останова, то эта точка останова будет удалена.

     2. Дайте команду локального меню Add  (Добавить)  в  области
        списка  точек  останова  окна Breakpoints и введите адрес
        кода,  по которому вы ходите задать точку останова. Адрес
        кода имеет тот же формат,  что и формат указателя исполь-
        зуемого языка.  Подробнее о выражениях  рассказывается  в
        Главе 9.

     3. Чтобы  установить точку останова на текущей строке в окне
        Module, дайте команду BreakpointsіAt  (Точки  остановаіПо
        адресу...).

                  Глобальные точки останова
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

          Примечание: Если  вы хотите установить аппаратные точки
     останова, проверьте переключатель Global.

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

          Примечание: Быстрый способ задания глобальной точки ос-
     танова  предлагает  окно  Breakpoints.  Подробнее о командах
     Changed Memory Global и Expression True Global рассказывает-
     ся выше.

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

           Остановка при изменении объектов данных
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Когда вы хотите определить, где в вашей программе изменяются
определенные объекты данных, сначала с помощью одного из методов,
описанных в предыдущем разделе, установите глобальную точку оста-
нова.  Затем можно использовать селективный переключатель Changed
Memory   (Измененная  память)  диалогового  окна  Conditions  and
Actions (Условия и действия).  Введите выражение,  ссылающееся на
область  памяти,  которую  вы хотите отслеживать и необязательный
счетчик числа отслеживаемых объектов. Общее число байт отслежива-
емой области соответствует произведению размера объекта, на кото-
рое ссылается выражение,  на число объектов.  Предположим, напри-
мер, что у вас имеется следующий массив Си:

     int string[81];

     Если вы  хотите отследить изменение первого элемента данного
массива, введите в поле ввода Condition Expression следующий эле-
мент:

     &sting[0], 10

     Наблюдаемая область памяти имеет длину 20 байт, так как зна-
чение int занимает два байта, а вы задали отслеживание 10 байт.

     Если точка останова по изменению памяти (Changed Memory) яв-
ляется глобальной, то ваша программа будет выполняться существен-
но медленнее,  поскольку область памяти будет проверяться при вы-
полнении каждой строки исходного кода.

     Если у вас установлен аппаратный драйвер, Турбо отладчик для
отслеживания изменений в области данных попытается установить ап-
паратную точку останова. Различные аппаратные отладчики поддержи-
вают  различное число и типы аппаратных точек останова.  Увидеть,
используются ли  для точки останова аппаратные средства,  можно с
помощью  окна  Breakpoints  (Точки  останова)  и  команды   Viewі
Breakpoints (ОбзоріТочки останова). Все точки останова, для кото-
рых используются вспомогательные аппаратные средства, будут отме-
чены  звездочками  (*).  Такие точки останова выполняются гораздо
быстрее, чем другие глобальные точки останова, для которых не ис-
пользуются вспомогательные аппаратные средства.

                      Выражения условия
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

   Область действия выражений, заданных для точек останова
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     И действием,  которое будет выполняться при достижении точки
останова,  и условием,  при котором она срабатывает, можно управ-
лять с помощью задаваемого вами выражения. Это выражение вычисля-
ется  с  использованием области действия адреса,  где установлена
точка останова,  а не той области действия,  где в данный  момент
остановилась программа.  Это означает,  что в вашем выражении для
точки останова могут использоваться только имена переменных,  ко-
торые являются допустимыми в том месте программы, где задана точ-
ка останова (если эта область действия не  переопределена).  Пол-
ностью область действия обсуждается в Главе 9.

     Если вы хотите установить точку останова для выражения в мо-
дуле, который в данный момент не загружен отладчиком, и Турбо от-
ладчик не может найти данное выражение,  то вы можете переопреде-
лить область действия и задать файл,  который содержит выражение,
или использоваться  для  смены  модулей  команду ViewіModule (Об-
зоріМодуль).

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

                  Аппаратные точки останова
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Аппаратная точка останова использует поддерживающие средства
аппаратной отладки  (плату  аппаратной отладки или отладочные ре-
гистры процессора 80386 или старше).  Если в вашей системе  уста-
новлены средства  аппаратной отладки (команда FileіGet Info пока-
зывает установку Breakpoints в Hardware),  то с помощью одного из
следующих методов вы можете задать аппаратную точку останова:

     - Выберите команду BreakpointsіChanged Memory Global,  кото-
       рая чаще всего используется для аппаратных точек останова.

     - Выберите команду BreakpointsіHardware.

     - Выведите меню Breakpoint Options  (выберите  команду  окна
       ViesіBreakpoints BreakpointsіAt  или  Set Options),  затем
       сделайте следующее:

          - проверьте переключатель Global;

          - активизируйте "кнопку" Change (Изменение)ж

          - в диалоговом окне Conditions and Actions выберите се-
            лективный переключатель Hardware (Аппаратная) и акти-
            визируйте "кнопку" Hardware диалогового окна;

          - для  вывода  диалогового  окна  Hardware   Breakpoint
            Options (Параметры аппаратной точки останова) активи-
            зируйте "кнопку" Hardware;

          - выберите в диалоговом окне нужный параметр (параметры
            описываются в текстовом файле HDWDEBUG.TD).

               Регистрация значений переменных
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

     Выберите селективный  переключатель Log (Регистрация) диало-
гового окна Breakpoint Options (Параметры точки останова).  В от-
вет  на выводимую подсказку введите выражение,  значение которого
должно регистрироваться при каждом срабатывании  точки  останова.
Если  вы  хотите  регистрировать  значение нескольких переменных,
нужно установить несколько точек останова.

          Примечание: При регистрации выражений  нужно  учитывать
     побочные эффекты.

                  Точки останова и шаблоны
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Турбо отладчик поддерживает шаблоны C++.  Точки останова ус-
танавливаются по-разному, в зависимости от использования F2 в ок-
не Module,  в окне CPU или задании их с помощью диалогового  окна
Breakpoint Options.

              Точки останова и классы шаблонов
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Для задания точек останова в шаблонах имеется несколько  ме-
тодов:

     - Если  вы установили точку останова в самом шаблоне,  нажав
       клавишу F2  при нахождении курсора в строке исходного кода
       шаблона в окне Module,  точки останова устанавливаются  во
       всех экземплярах классов этого шаблона.  Это средство поз-
       воляет вам отлаживать все поведение шаблона.

     - Если вы установили точку останова в шаблоне, нажав клавиши
       Alt-F2 для вывода диалогового окна Breakpoint Options (Па-
       раметры точки останова),  то ввод в окне Module адреса вы-
       ражения  шаблона выводит диалоговое окно,  позволяющее вам
       выбрать экземпляр класса,  для которого вы хотите  устано-
       вить точку останова.

     Вы можете  удалить точку останова шаблона точно так же,  как
удаляете любую другую точку останова - позиционировавшись  в окне
Module подсвеченную  строку  на шаблон и нажав клавишу F2 или ис-
пользуя команду удаления окна Breakpoint. При этом удаляются так-
же точки останова соответствующего экземпляра класса.

     Если вы  позиционируетесь  на  точке  останова  в экземпляре
класса в окне CPU и нажмете клавишу F2, то удаляется только точка
останова для данного экземпляра класса.

              Точки останова в шаблонах функций
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Вы можете устанавливать и отменять точки останова для шабло-
нов функций  точно также,  как это делается для шаблонов классов.
При этом используются два метода - нажатие клавиши F2 или исполь-
зование диалогового  окна  Breakpoint Options.  Они имеют для эк-
земпляров функций тот же эффект, что и для экземпляров классов.

  Точки останова в шаблонах экземпляров классов и объектов
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                          Окно Log
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Окно Log  (Регистрация)  можно   создать,   выбрав   команду
ViewіLog (ОбзоріРегистрация).  Это окно позволяет вам просмотреть
список значащих событий,  которые имели место во время сеанса от-
ладки.

         Й[*]НLogНННННННННННННННННННННННННН3НН[ ][ ]НН»
         єAt MCINPUT.124                              ^
         єBreakpoint at TPDEMO.220                    І
         єBreakpoint at TPDEMO.220                    °
         єBreakpoint at TPDEMO.220                    °
         єBreakpoint at TPDEMO.220                    °
         єBreakpoint at TPDEMO.220                    °
         єBreakpoint at TPDEMO.220                    °
         єBreakpoint at TPDEMO.220                    °
         єWe are now entering procedure Params...     °
         єBreakpoint±at±TPDEMO.180±±±±±±±±±±±±±±±±±±±±v
         И<І°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°>ДЅ

     Рис. 7.6 Окно Log

     В окне  Log  (Регистрация)  выводится  пролистываемый список
строк (вывод в окно).  Если зарегистрировано более 50  строк,  то
самые  старые  строки списка теряются.  Для настройки числа строк
используйте параметр командной строки при запуске Турбо отладчика
или  измените  это число с помощью программы установки TDINST.  С
помощью команды локального меню Open Log File (Открыть  файл  ре-
гистрации)  можно сохранить всю регистрацию,  записывая ее непре-
рывно в файл на диске.

     Перечислим, какие причины могут вызвать запись строк в  про-
токол регистрации:

     - Ваша программа остановилась по заданному адресу.  Адрес ее
       останова регистрируется.

     - Вы дали команду локального меню Add Comment (Добавить ком-
       ментарий).  Выводится  подсказка,  по которой нужно ввести
       комментарий, регистрируемый в протоколе.

     - Срабатывает точка останова,  которая регистрирует значение
       выражения. Это значение помещается в протокол регистрации.

     - Вы  использовали команду WindowіDump Pane To Log (ОкноіВы-
       вод области в протокол регистрации)  (из  основного  меню)
       для записи текущего содержимого области окна.

     - Вы  отлаживаете прикладную программу для Microsoft Windows
       и использовали команду ViewіWindows Messages  (ОбзоріСооб-
       щения Windows) для вывода окна Windows Messages,  и теперь
       находитесь в локальном меню области Messages  этого  окна.
       Вы переключаете  параметр  Send  to Log Window (Передача в
       окно регистрации) в значение Yes (Да),  чтобы все приходя-
       щие в данное окно сообщения также отображались в Log.

     - Вы  отлаживаете прикладную программу для Microsoft Windows
       и используете команду Display Window Info (Вывод  информа-
       ции  Windows) локального меню окна Log для записи в журнал
       информации о глобальной динамически распределяемой области
       памяти,  информации о локальной динамически распределяемой
       области или списка модулей.

                   Локальное меню окна Log
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

     Локальное меню окна Log (Регистрация) выводится  при нажатии
клавиш Alt-F10. Если разрешено использовать сокращения с клавишей
Ctrl, то для непосредственного доступа к команде этого меню можно
нажать клавишу Ctrl совместно с первой буквой нужной команды.

                               ЪДДДДДДДДДДДДДДДДДДДДДДДДї
     Открыть файл регистрации  і Open log file...       і
     Закрыть файл регистрации  і Close log file         і
     Регистрация               і Logging        YES     і
     Добавить комментарий      і Add comment...         і
     Стереть файл регистрации  і Erase log              і
     Вывести информацию        і Display Windows Info...і
      Windows                  АДДДДДДДДДДДДДДДДДДДДДДДДЩ

                  Команда Open Log File...
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     По команде  Open  Log  File  (Открыть  файл регистрации) все
строки, записываемые в протокол регистрации, записываются также в
файл на диске.  Вам выводится подсказка с запросом имени файла, в
который нужно записывать протокол регистрации.

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

     Если вы хотите начать регистрацию на диске, не включая в нее
строки,  которые уже выведены на экран,  то перед выбором команды
Open File Log (Открыть файл регистрации) выберите сначала команду
Erase Log File (Стереть файл регистрации).

                   Команда Close Log File
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Close Log File (Закрыть файл регистрации) останавли-
вает запись строк в файл регистрации,  заданный в команде локаль-
ного меню Open Log File (Открыть файл регистрации).  Данный  файл
закрывается.

                       Команда Logging
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Logging (Регистрация) разрешает  или  запрещает  ре-
гистрацию, управляя выводом в окно Log (Регистрация).

                     Команда Add Comment
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Add Comment  (Добавить  комментарий)  позволяет  вам
включить  в  регистрируемую  информацию  комментарий.  В ответ на
подсказку можно ввести строку  текста,  которая  может  содержать
столько символов, сколько вам требуется.

                      Команда Erase Log
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Erase Log (Стереть регистрацию) очищает  список  ре-
гистрации.  Окно Log (Регистрация) заполняется пробелами.  Это не
влияет на запись регистрации в файл на диске.

                Команда Display Windows Info
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данная команда  выводит  диалоговое окно Windows Information
(Информация Windows),  позволяющий получить информацию о глобаль-
ной  и  локальной  динамически  распределяемой области памяти или
списке модулей,  входящих в вашу прикладную программу. Это средс-
тво описано подробнее в Главе 17.

           Глава 8. Просмотр и модификация файлов
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     При отладке  программы  Турбо отладчик обрабатывает файлы на
диске  как естественное расширение программы. Вы можете проверить
и  модифицировать  любой  файл на диске,  просматривая его в коде
ASCII или в шестнадцатиричном виде. Из среды Турбо отладчика мож-
но также изменить текcтовые файлы с  помощью  используемого  вами
текстового процессора или редактора.

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

             Просмотр исходных файлов программы
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

          Примечание: Загрузка и отладка модулей Windows DLL опи-
     сывается в Главе 17.

     При прохождении программы с использованием  Турбо  отладчика
он автоматически выводит на экран ту часть исходного кода,  кото-
рая соответствует текущему адресу программы.

     Файлы, включенные в исходный файл с использованием директивы
компилятора, которая генерирует номера строк (аналогично директи-
ве #include в языке Си и INCLUDE в Ассемблера) также рассматрива-
ются, как исходные файлы программы. Для просмотра исходных файлов
программы всегда нужно использовать  окно  ViewіModule  (ОкноіМо-
дуль),  поскольку это указывает Турбо отладчику,  что файл предс-
тавляет собой исходный модуль.  Для выбора одного из файлов нужно
использовать команду локального меню File (Файл).

                         Окно Module
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Окно Module (Модуль) можно создать,  выбрав в  главном  меню
команду ViewіModule (ОбзоріМодуль) (или нажав клавишу F3).

  ЙН[*]НModule: TPDEMO File: TPDEMO.PAS 217 НННННННННННННННННННН»
  є      end;                                                   ^
  є   Writeln;                                                  І
  є  end; { ParmsOnHeap }                                       ±
  є                                                             ±
  є> begin                                                      ±
  є    Init;                                                    ±
  є    Buffer := GetLine;                                       ±
  є    while Buffer <> '' do                                    ±
  є    begin                                                    ±
  є      ProcessLine(Buffer);                                   ±
  є      Buffer := GetLine;                                     ±
  є    end;                                                     ±
  є    ShowResult;                                              ±
  є    ParmsOnHeap;                                             ±
  є  end.                                                       ±
  є                                                             ±
  є                                                             ±
  є                                                             ±
  є                                                             v
  И<±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±>Щ

     Рис. 8.1 Окно Module

     В диалоговом окне вы можете ввести имя модуля, который хоти-
те просмотреть.

     Если вы отлаживаете прикладную программу Windows,  в  данном
диалоговом окне выводится список, в котором показаны модули прог-
раммы, и список, в котором показаны файлы DLL и .EXE, загруженные
в данный момент Windows.

          Примечание: При запуске отладчика TDW вам требуется как
     файл .EXE, так и исходные текстовые файлы, а также выполняе-
     мый  и  исходный код всех написанных для программы библиотек
     DLL.

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

     1. В каталоге, в котором находится выполняемый файл компиля-
        тора.

     2. В каталогах,  заданных командой  OptionsіPath  (Параметры
        іМаршрут) для команды Source (Исходный модуль), или в па-
        раметре командной строки -sd.

     3. В текущем каталоге.

     4. В каталоге, где содержатся отлаживаемые программы.

     В окне Module (Модуль) выводится содержимое  исходного файла
выбранного модуля. В заголовке окна Module показывается имя прос-
матриваемого модуля,  имя исходного файла и номер строки, в кото-
рой находится  курсор.  Текущий  адрес  программы (CS:IP) отмечен
символом стрелки (>) в первой позиции окна.

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

     Если после имени файла в заголовке появляется слово modified
(модифицирован), то со времени последней компиляции или компонов-
ки для создания отлаживаемой программы файл был изменен.  Это оз-
начает,  что  номера  строк программ в обновленном исходном файле
могут не соответствовать номерам  строк  отлаживаемой  программы.
Это может привести к тому,  что стрелка, показывающая текущий ад-
рес в программе (CS:IP), будет указывать на неверную строку.

                 Локальное меню окна Module
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В локальном меню окна Module (Модуль) предусмотрено несколь-
ко команд,  позволяющих вам перемещаться в указанном модуле, ссы-
латься на элементы данных и проверять их, а также выводить в окно
новый файл или модуль.

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

     Для вывода локального меню данного окна  можно  использовать
комбинацию клавиш Alt-F10. Если разрешено использовать сокращения
с клавишей Ctrl, то для непосредственного доступа к команде этого
меню можно  нажать клавишу Ctrl вместе с первой буквой нужной ко-
манды (например, при нажатии Ctrl-S вызовется команда Search).

                                        ЪДДДДДДДДДДДДї
            Проверка                    і Inspect    і
            Просмотр                    і Watch      і
                                        ГДДДДДДДДДДДДґ
            Модуль                      і Module...  і
            Файл                        і File...    і
                                        ГДДДДДДДДДДДДґ
            Предыдущий                  і Previous   і
            Строка                      і Line...    і
            Поиск                       і Search...  і
            Следующий                   і Next...    і
            Начало                      і Origin     і
            Переход                     і Goto...    і
            Редактирование              і Edit       і
                                        АДДДДДДДДДДДДЩ

                       Команда Inspect
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

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

                        Команда Watch
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

          Примечание: Если курсор не находится на переменной, вам
      выведется подсказка для ее ввода.

                      Команда Module...
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Module (Модуль) позволяет вам просмотреть другой мо-
дуль  (который  можно выбрать из выводимого списка модулей).  Эту
команду полезно использовать,  когда вас больше не интересует те-
кущий модуль, но вы не хотите открывать еще одно окно Module.

                       Команда File...
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда File  (Файл) позволяет вам переключиться на просмотр
того или иного исходного файла,  входящего в состав просматривае-
мого  модуля.  Выберите файл,  который вы хотите просмотреть,  из
списка файлов.  Большинству модулей соответствует  один  исходный
файл,  в котором находится весь исходный код. В других включаемых
в данный файл файлах содержатся обычно только определенные  конс-
танты и структуры данных. Используйте данную команду, если исход-
ный код вашего модуля содержится в нескольких файлах.

     Если вы  хотите просматривать одновременно несколько файлов,
то для  создания другого окна File (Файл) используйте команду ос-
новного меню ViewіAnotherіFile (ОбзоріДругойіФайл), или для того,
чтобы просмотреть первый файл - команду ViewіFile (ОбзоріФайл).

                      Команда Previous
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Previous (Предыдущий) возвращает вас в последний ис-
ходный модуль,  который вы просматривали. Эту команду можно также
использовать для возврата к предыдущему месту после того,  как вы
дали команду, которая изменила позицию в текущем модуле.

                       Команда Line...
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Line (Строка) позиционирует вас в файле на  строку с
другим номером.  Введите номер новой строки, на которую вы хотите
перейти.  Если вы введете номер строки, превышающий число строк в
файле, во эта команда переместит вас на последнюю строку файла.

                      Команда Search...
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Search (Поиск) выполняет  поиск  символьной  строки,
начиная  от текущей позиции курсора.  Если курсор позиционируется
на что-либо, напоминающее имя переменной, выводится подсказка по-
иска,  инициализированная данным именем.  Кроме того,  если с по-
мощью клавиши Ins вы отметили в файле блок,  то этот  блок  будет
использован для инициализации подсказки поиска. Это позволяет вам
избежать ввода строки, которая уже видна в файле.

     При поиске допускается задавать простые трафаретные символы:
?,  задающий один символ, и *, показывающую 0 или более символов.
При достижении конца файла поиск не будет продолжен с его начала.
Чтобы выполнить поиск по всему файлу, перейдите на начало файла с
помощью клавиш Ctrl-PgUp.

                        Команда Next
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Next (Следующий) выполняет поиск следующего  вхожде-
ния  символьной  строки,  которую вы задали в команде Search (По-
иск). Эту команду можно использовать только после команды Search.

     Иногда команда поиска,  найдя соответствие,  останавливается
не  на  нужной строке,  а нужная строке находится дальше в файле.
Команда Next позволяет вам возобновить поиск без повторного ввода
искомой строки.

                       Команда Origin
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Origin (Начало) позиционирует вас на  тот  модуль  и
номер  строки,  которые  соответствуют  текущему адресу программы
(определяемому содержимым регистров CS:IP).  Если просматриваемый
в данный момент модуль не является  модулем,  содержащим  текущий
адрес программы, окно Module (Модуль) переключится, и будет выве-
ден нужный модуль.  Данную команду полезно использовать после то-
го,  как  вы  просмотрели  исходный код и хотите вернуться к тому
месту, где в данный момент остановилась программа.

                       Команда Goto...
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Goto  (Перейти на...) позиционирует вас на любой ад-
рес в программе. От вас требуется ввести соответствующий "адрес".
При этом допускается вводить номер строки,  имя функции или шест-
надцатиричный адрес.  Полное описание способов задания адреса со-
держится в Главе 9.

     Эту команду можно вызвать, если просто начать вводить метку,
на которую вы хотите перейти. Это приведет к выводу окна подсказ-
ки (как  если бы вы использовали команду RunіExecute to (Выполне-
ниеіВыполнение до курсора)).  Для часто используемой команды  это
является удобным сокращением.

          Примечание: Если  адресу не соответствует строка исход-
     ного кода, то открывается окно CPU.

                        Команда Edit
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Edit (Редактирование) позволяет выбрать  редактор, с
помощью которого вы можете внести изменения в исходный файл прос-
матриваемого модуля.  Задать команду,  запускающую ваш  редактор,
можно с помощью программы установки  параметров  Турбо  отладчика
TDINST.

               Просмотр других файлов на диске
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     С помощью окна File (Файл) вы можете проверить и модифициро-
вать любой файл в вашей системе.  Просматривать файл можно в коде
ASCII (текстовый вид) или в шестнадцатиричном виде,  либо в  виде
шестнадцатиричных байт  данных  (для  этого  используются команда
Display As, описанная далее в данной главе).

                          Окно File
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Окно File  (Файл)  можно  создать,  выбрав команду ViewіFile
(ОбзоріФайл) из основного меню.  Для получения списка файлов  для
выбора допускается использовать трафаретные символы DOS.

    Й[*]НFile: C:\tc\doc.h 197НННННННННННННННННННННННН[ ][ ]»
    є char _Cdecl peekb (unsigned segment, unsigned offset);^
    є void _Cdecl poke  (unsigned segment, unsigned offset, І
    є void _Cdecl pokeb (unsigned segment, unsigned offset, ±
    є int  _Cdecl randbrd (struct fcb *fcb, int rcnt);      ±
    є int  _Cdecl segread (struct fcb *fcb, int rcnt);      ±
    є void _Cdecl setblock(unsigned segx, unsigned newsize);±
    є int  _Cdecl setcbrk (int cbrkvalue);                  ±
    є int  _Cdecl setdate (struct date *datep);             ±
    є void _Cdecl setswrichar  (char ch);                   ±
    є void _Cdecl settime (struct time *timep);             ±
    є void _Cdecl setvect (int interruptno, void interrupt (±
    є void _Cdecl setverify   (int value);                  ±
    є void _Cdecl sleep (unsigned seconds);                 ±
    є void _Cdecl sound (unsigned frequency);               v
    И<І±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±>Щ

     Рис. 8.2 Окно File

     В окне File (Файл) выводится содержимое выбранного вами фай-
ла. Имя просматриваемого файла,  а также номер строки, на которой
в файле находится курсор, выводится в заголовке окна (как текст в
коде ASCII).

     При первом создании окна File файл может выводиться  либо  в
виде текста в коде ASCII,  либо в шестнадцатиричном виде, в зави-
симости от того, рассматривает ли Турбо отладчик данный файл, как
текстовый файл (ASCII) или как двоичные данные. С помощью команды
локального меню  Display  As (Вывести,  как...) можно переключить
режим вывода на экран (эта команда описана далее).

    Й[*]НFile: C:\tc\doc.h 197НННННННННННННННННННННННН[ ][ ]»
    є0000: 2f 2a 09 64 6f 73 2e 68 і* dis.h                 ^
    є0008: 0d 0a 0d 0a 09 44 65 66      Def                 І
    є0010: 69 6e 65 73 20 73 74 72 ines str                 ±
    є0018: 75 63 74 73 2c 20 75 6e ucts, un                 ±
    є0020: 69 6f 6e 73 2c 20 6d 61 lons, ma                 ±
    є0028: 63 72 6f 73 2c 20 61 6e cros, an                 ±
    є0020: 63 20 66 75 6e 63 74 69 d functi                 ±
    є0038: 6f 6e 73 20 74 6e 67 0d ons for                  ±
    є0040: 64 65 61 6c 20 68 6e 4d dealing                  ±
    є0048: 0a 09 77 69 20 61 20 4d   with M                 ±
    є0050: 53 44 4f 53 41 49 6e 64 SDOS and                 ±
    є0058: 20 74 68 65 63 50 6e 74  the Int                 ±
    є0060: 65 6c 20 69 50 72 58 38 el iAPx8                 ±
    є0068: 36 20 6d 69 41 72 6f 70 6 microp                 ±
    є0070: 72 6f 63 65 63 73 6f 72 rocessor                 v
    И<І±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±>Щ

     Рис. 8.3 Окно File с выводом шестнадцатиричных данных

                  Локальное меню окна File
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Локальное меню окна File (Файл) содержит команды для переме-
щения по файлу на диске,  изменения характера вывода  содержимого
файла на экран и внесения в файл изменений.

     Для вывода  локального меню окна File используйте комбинацию
клавиш Alt-F10. Если разрешено использовать сокращения с клавишей
Ctrl, то для непосредственного доступа к команде этого меню можно
нажать клавишу Ctrl совместно с первой буквой нужной команды.

          ЪДДДДДДДДДДДДДДДДДДДї
          і Goto...           і   Переход
          і Search...         і   Поиск
          і Next              і   Следующий
          ГДДДДДДДДДДДДДДДДДДДґ
          і Display as  Ascii і   Вывести в виде...
          і File...           і   Файл
          і Edit              і   Редактирование
          АДДДДДДДДДДДДДДДДДДДЩ

                        Команда Goto
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                       Команда Search
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Search (Поиск) выполняет  поиск  символьной  строки,
начиная от текущей позиции курсора (для ввода  символьной  строки
вам выводится подсказка).  Если курсор позиционируется на что-ли-
бо, напоминающее имя переменной, выводится подсказка поиска, ини-
циализированная данным именем. Кроме того, если с помощью клавиши
Ins вы отметили в файле блок,  то этот блок будет использован для
инициализации подсказки поиска.  Это позволяет вам избежать ввода
строки, которая уже видна в файле.

     Если файл выводится в коде ASCII, при поиске допускается за-
давать простые трафаретные символы: ?, задающий один символ, и *,
показывающую 0 или более символов.

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

     Например, в языке Си список байт,  состоящий из шестнадцати-
ричного числа 0408, вводится следующим образом:

     Ox0884

     Если текущим языком является Паскаль,  то тот же список байт
вводится так:

     $0804

          Примечание: Полная  информация о списках байт приведена
     в Главе 9.

     При достижении конца файла поиск не будет  продолжен  с  его
начала. Чтобы выполнить поиск по всему файлу, перейдите на начало
файла с помощью клавиш Ctrl-PgUp.

     Вы можете вызвать эту команду, просто начав набирать строку,
которую хотите найти.  При этом,  как при команде Search (Поиск),
будет выведено окно подсказки.

                        Команда Next
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Next  (Следующий) выполняет поиск следующего вхожде-
ния символьной строки,  которую вы задали в команде  Search  (По-
иск).  Эту команду можно использовать только после команды Search
(Поиск).

     Иногда команда поиска,  найдя соответствие,  останавливается
не  на  нужной строке,  а нужная строке находится дальше в файле.
Команда Next позволяет вам возобновить поиск без повторного ввода
искомой строки.

                     Команда Display As
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Display As (Вывести как...)  позволяет переключаться
между выводом файла в виде текста ASCII и в шестнадцатиричном ви-
де.  При выборе вывода на экран в коде ASCII файл выводится в та-
ком виде, как вы видите его при работе с редактором или текстовым
процессором.  Если вы выберете  шестнадцатиричный  вывод,  каждая
строка будет начинаться с шестнадцатиричного смещения в файле. На
строке может выводиться 8 или 16 байт данных,  в  зависимости  от
ширины области окна. Справа от шестнадцатиричного вывода байт вы-
водятся соответствующие каждому байту символы.Поскольку может вы-
водиться полный набор символов,  байтовые значения < 32 или > 127
выводятся на экран в виде соответствующих символов.

                       Команда File...
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда File (Файл) позволяет вам переключиться  на просмотр
другого файла. Для получения списка файлов для выбора допускается
использовать трафаретные символы DOS, либо можно ввести имя конк-
ретного файла,  который и будет загружен. Если вы хотите просмат-
ривать на экране два различных файла одновременно,  то для созда-
ния    другого    окна    File    (Файл)    используйте   команду
ViewіAhotherіFile (ОбзоріДругойіФайл).

                        Команда Edit
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Если вы просматриваете файл в  виде  текста  ASCII,  команда
Edit  (Редактирование)  позволяет  вам  вносить в файл изменения,
вызвав редактор, выбранный с помощью программы установки парамет-
ров отладчика TDINST.

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

         Примечание: Полное  описание  списков  байт содержится в
     Главе 9.

                     Глава 9. Выражения
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

     Турбо отладчик может вычислять выражения и сообщать вам зна-
чение  результата.  Выражения можно также использовать для ссылки
на элементы данных в памяти,  значение которых вы хотите  узнать.
Выражение  можно  вводить  в ответ на любую подсказку,  в которой
запрашивается значение адреса памяти.  (Заметим,  что в различных
языках выражения вычисляются по-разному.)

     Для вычисления значения введенного выражения можно использо-
вать команду основного меню DataіEvaluate/Modify (ДанныеіВычисле-
ние/Модификация). Эту команду можно также использовать, как прос-
тейший калькулятор, а также для проверки значений объектов данных
в программе.

     В данной  главе мы расскажем вам о том,  каким образом Турбо
отладчик определяет, какой язык нужно использовать для вычисления
выражения,  и как задать использование конкретного языка. Мы опи-
шем элементы выражений,  которые являются общими для всех языков,
такие, как номера исходных строк и доступ к регистрам процессора.
Затем мы опишем компоненты,  которые входят в выражение на  любом
языке,  включая константы,  переменные программы, строки и опера-
ции.  Для каждого языка мы перечислим также поддерживаемые  Турбо
отладчиком операции и опишем синтаксис выражений.

     Полное описание выражений Си,  Паскаля или Ассемблера содер-
жится в руководствах пользователя и  справочных  руководствах  по
соответствующим языкам. (см. Borland C++ Getting started, Borland
C++ Programmers  Guide,  Turbo  Pascal Users Guide,  Turbo Pascal
Reference Guide, Turbo Assembler Reference Guide).

            Выбор языка для вычисления выражения
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Турбо отладчик обычно определяет, какой язык нужно использо-
вать для вычисления выражения,  на основе расширения имени исход-
ного файла в текущем модуле.  Это тот модуль, в котором останови-
лась ваша программа.  Этот выбор можно отменить с помощью команды
OptionsіLanguage  (ПараметрыіЯзык)  и  открытия  диалогового окна
Expression Language (Язык для выражений),  в котором вы можете  с
помощью многопозиционного переключателя выбрать один из поддержи-
ваемых языков (Паскаль,  Си или Ассемблер). Если вы выберете зна-
чение Source (Исходный),  то выражения вычисляются в соответствии
с языком исходного файла (если Турбо отладчик не может определить
этот язык, он использует правила языка Ассемблера).

     Обычно Турбо отладчик сам определяет используемый язык.  Од-
нако, иногда полезно задать язык явным образом, например, если вы
отлаживаете  вызываемый из других языков модуль Ассемблера.  Явно
задав использование для вычисления выражений  конкретного  языка,
вы  можете обращаться к данным так,  как это делается в соответс-
твующем языке,  даже если в текущем  модуле  используется  другой
язык.

     Иногда удобно интерпретировать выражение или переменную  та-
ким образом,  как если бы оно было написано на другом языке. Нап-
ример, при отладке программы Паскаля для изменения значения байта
в строке удобнее использовать соглашения Си или Ассемблера.

     Если при запуске Турбо отладчика начальный выбор языка  кор-
ректен, то  при использовании соглашений других языков трудностей
не будет.  Турбо отладчик сохраняет информацию о исходном языке и
выполняет соответствующее  преобразование  и запись данных.  Если
язык не определен однозначно,  Турбо отладчик использует  Ассемб-
лер.

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

          Адреса кода, адреса данных и номера строк
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Обычно, когда нужно получить доступ к переменной  или  имени
подпрограммы в вашей программе,  вы просто вводите ее имя. Однако
можно также вводить указатель, при вычислении которого получается
указатель на память,  или задавать адреса кода в виде номеров ис-
ходных  строк,  указывая перед номером строки символ #, например,
#123 (только  для Си и C++).  В следующем разделе рассказывается,
как можно обращаться к идентификаторам,  находящимся вне  текущей
области действия.

     Конечно, с помощью обычного синтаксиса вида  "сегмент:смеще-
ние" вы можете задать шестнадцатиричный адрес:

    ЪДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
    і Язык                  і  Формат        і     Пример    і
    ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДґ
    і Си                    і  Oxnnnn        і Ox1234:Ox0010 і
    і Паскаль               і  $nnnn         і $1234:0010    і
    і Ассемблер             і  nnnnh         і 1234h:0B234h  і
    АДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ

    Доступ к идентификаторам вне текущей области действия
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Область, в которой Турбо отладчик ищет идентификатор,  назы-
вается областью действия этого идентификатора. Доступ к идентифи-
каторам, лежащим за пределами текущей области действия, представ-
ляет собой сложное понятие, глубоко разбираться в котором в боль-
шинстве случаев использования отладчика нет необходимости.

     Обычно Турбо  отладчик ищет входящий в выражение идентифика-
тор точно так же, как это делает соответствующий компилятор. Нап-
ример,  компилятор языка Си ищет его сначала в  текущей  функции,
затем в текущем модуле (статический идентификатор),  а затем ищет
глобальный идентификатор. Компилятор Турбо Паскаля ищет идентифи-
катор  сначала  в текущей процедуре или функции,  затем во "внеш-
ней" подпрограмме (если данная (активная) область действия вложе-
на   в  другую),  затем  в  разделе  реализации  (inplementation)
текущего модуля,  и, наконец, выполняет поиск глобального иденти-
фикатора.

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

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

         Синтаксис переопределения области действия
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

     - В  Си,  С++ и Турбо Ассемблере для переопределения области
       действия используется обычно символ #.

     - В Паскале с этой целью можно использовать точку (.).

     Выражение с уточненным идентификатором можно  вводить везде,
где допустимо выражение, включая:

     - диалоговое окно Evaluate/Modify;

     - окно Watches;

     - диалоговое окно DataіInspector;

     - диалоговое  окно,  выводимое командой локального меню Goto
       или окно Module (когда вы хотите перейти на адрес исходно-
       го кода).

                   Переопределение области
           действия в программах Си, С++ и Ассемблера
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Для разделения компонентов области действия используйте сим-
вол #.

     Таким образом, для переопределения области действия использу-
ется следующий синтаксис (в квадратные скобки заключены  необяза-
тельные элементы):

     [#модуль[#имя_файла]]#номер_строки[#номер_переменной]

или

     [#модуль[#имя_файла]][#имя_функции]#имя_переменной

          Примечание: Переопределение области действия  не  дейс-
     твуют для регистровых переменных.

     Если вы не задаете модуль,  то подразумевается  текущий  мо-
дуль.

     Например, в окне Watches вы можете для  переменной программы
TDDEMO nlines ввести разные номера строк,  чтобы увидеть, как из-
меняется ее значение в различных подпрограммах.  Чтобы  наблюдать
за значением  переменной  на строке 42 и 57,  можно ввести в окне
Watches следующую запись:

     #41#nlines
     #57#nlines

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

      В первых  6 примерах показаны различные способы использова-
ния номеров строк для генерации адресов и переопределения области
действия:

        #123

        (Строка 123 в текущем модуле.)

        #123myvar1

        (Идентификатор myvar1 доступен из строки 123 текущего мо-
        дуля.)

        #mymodule#123

        (Строка 123 в модуле #mymodule.)

        #mymodule#123#myvar1

        (Идентификатор myvar1 доступен из  строки  123  в  модуле
        mymodule.)

        #mymodule#file#123

        (Строка 123  в  исходном  файле  file,  который  является
        частью модуля mymodule.)

        #mymodule#file#123#myvar1

        (Идентификатор myvar1  доступен  из строки 123 в исходном
        файле file1, который является частью модуля mymodule.)

     Следующие 6  примеров показывают различные способы переопре-
деления области действия переменной с использованием имени  моду-
ля, файла или функции:

        #myvar2

        (То же, что и myvar2 без #.)

        #myfunc#myvar2

        (Переменная myvar2 доступна из подпрограммы myfunc.)

        #mymodule#myvar2

        (Переменная myvar2 доступна из модуля mymodule.)

        #mymodule#myfunc#myvar2

        (Переменная myfunc доступна из подпрограммы myfunc в  мо-
        дуле mymodule.)

        #mymodule#file2#myvar2

        (Переменная myvar2  доступна из файла file2,  являющегося
        частью модуля mymodule.)

        #mymodule#file2#myfunc#myvar2

        (Переменная myvar2 доступна из подпрограммы myfunc, опре-
        деленной   в   файле   file2,  который  входит  в  модуль
        mymodule.)

     Следующие 4 примера показывают переопределения области дейс-
твия для классов, объектов и функций-элементов С++:

     AnObject#AMemberVar

     Элемент данных AMemberVar доступен в объекте AnObject,  дос-
тупном в текущей области действия.

     AnObject#AMemberF

     Функция-элемент AMemberF  доступна в объекте AnObject,  дос-
тупном в текущей области действия.

     #AModule#AnObject#AClass::AMemberVar

     Элемент данных AMemberVar в классе AClass доступен в объекте
AnObject, доступном в модуле AModule.

     Если при  отладке программы на языке С++ вы хотите проверить
функцию с переопределенным именем, то для этого в соответствующем
поле  ввода просто введите имя функции.  Турбо отладчик открывает
диалоговое окно Pick a Symbol Name (Выбор  имени  идентификатора)
со  списком всех функций с данным именем вместе с их аргументами.
Вы можете выбрать то, что вам нужно.

   Некоторые замечания по переопределению области действия
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     При переопределении  области действия в программах на языках
Си, C++, Паскаль или Ассемблер вам могут помочь следующие замеча-
ния:

     1. Если  вы используете имя файла с оператором переопределе-
        ния области действия,  то ему должно  предшествовать  имя
        модуля.

     2. Если имя файла имеет расширение (.ASM,  .C или .CPP),  то
        вы должны указать расширение. Турбо отладчик сам расшире-
        ние не распознает.

     3. Если первым элементом в операторе переопределения области
        действия является функция,  то перед ней не должен указы-
        ваться символ #. При наличии символа # Турбо отладчик ин-
        терпретирует имя функции как имя модуля.

     4. Любая переменная,  к которой вы обращаетесь с помощью пе-
        реопределения  области  действия, уже должна быть инициа-
        лизирована.

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

     6. Турбо  отладчик  поддерживает  шаблоны и вложенные классы
        C++.

        - Область действия шаблона зависит от  текущей  ячейки  в
          программе. Окна Wathes и Inspector с выражениями шабло-
          на зависят от текущего  объекта,  в  котором  находится
          программа.

        - Вложенный класс находится в области действия того клас-
          са,  в который он вложен.  Область действия  вложенного
          класса не является для программы глобальной.

    Переопределение области действия в программах Паскаля
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Для разделения  компонентов  области  действия  используется
точка (.).

     Для переопределения  области действия используется следующий
синтаксис (в квадратные скобки заключены  необязательные  элемен-
ты):

     [модуль.[имя_процедуры]имя_переменной

или

     [модуль.[объектный_тип.][реализация_объекта.][метод]имя_поля

     Если вы не задаете модуль,  то подразумевается  текущий  мо-
дуль.

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

     В следующих примерах показаны различные способы  переопреде-
ления  области  действия  с помощью использования имени процедуры
или модуля:

     AVar                          Переменная AVar доступна в те-
                                   кущей области действия.

     AProc.AVar                    Локальная переменная AVar про-
                                   цедуры AProc доступна в  теку-
                                   щей области действия.

     AUnit.AVar                    Локальная переменная AVar дос-
                                   тупна в модуле AUnit.

     AUnit.AProc.AVar              Переменная   AVar  доступна  в
                                   процедуре AProc,   которая,  в
                                   свою очередь, доступна в моду-
                                   ле AUnit.

     Ниже приводятся несколько примеров, включающих объекты и ме-
тоды:

 Instance                                   Реализация   Instance
                                            доступна  в   текущей
                                            области действия.

 Instance.AField                            Поле AFild доступно в
                                            реализации  Instance,
                                            доступной  в  текущей
                                            области действия.

 AnObjectType.AMethod                       Метод AMethod  досту-
                                            пен  в  типе  объекта
                                            AnObjectType, доступ-
                                            ном в текущей области
                                            действия.

 AnInstance.AMethod                         Метод AMetod доступен
                                            в          экземпляре
                                            AnInstance, доступном
                                            в   текущей   области
                                            действия.

 AUnit.AInstance.AFild                      Поле AFild доступно в
                                            экземпляре AInstance,
                                            который  доступен   в
                                            модуле AUnit.

 AUnit.AnObjectType.AMethod                 Метод AMethod  досту-
                                            пен       в      типе
                                            AnObjectType, который
                                            доступен   в   модуле
                                            AUnit.

 AUnit.AnObjectType.AMetod.ANestedProc.AVar Локальная  переменная
                                            AVar  доступна в про-
                                            цедуре   ANestedProc,
                                            которая   доступна  в
                                            методе AMethod, кото-
                                            рый  доступен  в типе
                                            AnObjectType,   кото-
                                            рый,  в свою очередь,
                                            доступен   в   модуле
                                            AUnit.

     Вы можете  вводить такие уточненные идентификаторы выражений
в любом месте,  где выражение допустимо (в том числе  и  в  окнах
просмотра и вычисления (Watch и Evaluate)), например, если вы из-
меняете выражение в окне проверки (Inspector) или используете ло-
кальное меню в окне Module (Модуль) для перехода (Goto) по адресу
метода или процедуры в исходном коде.

   Некоторые замечания по переопределению области действия
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     При переопределении  области  действия в программах на языке
Паскаль вам могут помочь следующие замечания:

     1. Любая переменная,  к которой вы обращаетесь с помощью пе-
        реопределения  области  действия, уже должна быть инициа-
        лизирована.

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

     3. В  Паскале в качестве части оператора переопределения об-
        ласти действия вы не можете использовать имя файла. Одна-
        ко, для изменения языка на Си, в котором это допускается,
        можно использовать команду  OptionsіLanguage  (Параметрыі
        Язык).

                   Область действия и DLL
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Поскольку TDW одновременно загружает таблицы идентификаторов
файла .EXE текущего модуля и его библиотек DLL (к которым он  об-
ращается и для которых имеется исходный код и таблица идентифика-
торов), вы можете не иметь возможности  немедленно  обратиться  к
переменным DLL (или к переменным файла .EXE,  когда вы находитесь
в DLL).

     TDW сначала ищет переменную в таблице идентификаторов  теку-
щего модуля или DLL, а затем во всех других таблицах в порядке их
загрузки. Если переменная имеет одно и то же имя в нескольких DLL
или в файле .EXE и в DLL,  то отладчик TDW видит только первый ее
экземпляр. Для доступа к таким переменным вы не можете  использо-
вать синтаксис переопределения области действия. Вместо этого для
загрузки соответствующего модуля или DLL нужно использовать  кла-
вишу F3 или диалоговое окно Load Modules and DLLs (Загрузка моду-
лей и библиотек DLL).

     Отладчик TDW загружает таблицу идентификаторов для:

     1. Текущего модуля файла .EXE.

     2. Любой  явно  загружаемой  с  помощью  команды Symbol Load
        (Загрузка идентификаторов) диалогового окна  Load Modules
        and DLLs (Загрузка модулей и DLL) DLL.

     3. Любой DLL, в которую вы вошли из вашей программы.

      Неявная область действия при вычислении выражений
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

     В качестве основы при принятии решения об  области  действия
Турбо отладчик обычно использует текущую позицию курсора.  Напри-
мер,  вы можете задать область действия,  которая будет использо-
ваться при вычислении выражения, переместив курсор на ту или иную
строку в окне Module (Модуль).

     Это означает, что при смещении курсора с текущей строки, где
остановилась  ваша программа,  вы можете при вычислении выражения
получить непредвиденные результаты. Если вы хотите убедиться, что
выражения вычисляются в текущей области действия вашей программы,
используйте команду локального меню окна Module  Origin (Начало),
чтобы вернуться к текущему адресу исходного кода.  Задать область
действия выражения можно также,  перемещаясь в области Code (Код)
окна CPU (Центральный процессор), устанавливая курсор на подпрог-
рамму в  окне  Stack  (Стек)  или  на  имя  подпрограммы  в  окне
Variables (Переменные).

                         Списки байт
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В некоторых командах от вас требуется  ввести  список  байт.
Это команды локального меню области Data (Данные) окна CPU (Цент-
ральный процессор) Search (Поиск) и Change (Изменение)  или такие
же команды локального меню окна File (Файл), в котором файл выво-
дится в шестнадцатиричном виде.

     Список байт может представлять собой произвольную смесь ска-
лярных (без плавающей точки) чисел и строк, в которых использует-
ся  синтаксис  текущего  языка   (его   можно   задать   командой
OptionsіLanguage (ОпцииіЯзык)). И в строках, и в скалярных значе-
ниях используется тот же синтаксис, что и в выражениях. Скалярные
значения преобразуются в соответствующую последовательность байт.
Например,  длинное целое (longint) значение Паскаля 123456 преоб-
разуется в 4-байтовый шестнадцатиричный эквивалент 56 34 12 00.

         ЪДДДДДДДДДДДВДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДї
         і Язык      і Список байт   іШестнадцатиричные данные і
         ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДґ
         і Си        і "ab"0x04"c"   і            61 62 04 63  і
         і Паскаль   і 'ab'#4'c'     і            61 62 04 63  і
         і Ассемблер і 1234"AB"      і            34 12 41 42  і
         АДДДДДДДДДДДБДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДЩ

                     Выражения языка Си
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                   Идентификаторы языка Си
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Идентификатор языка  Си представляет собой имя элемента дан-
ных или подпрограммы в программе. Имя идентификатора должно начи-
наться с буквы (a-z или A-Z) или символа подчеркивания (_).  Пос-
ледующие символы в идентификаторе могут содержать цифры от 0 до 9
или любые из указанных символов.  В именах идентификаторов первый
символ подчеркивания можно опускать.  Если вы вводите имя иденти-
фикатора без символа подчеркивания, и этот идентификатор найти не
удается,  то выполняется его повторный поиск с символом подчерки-
вания.  Так как обычно компилятор помещает перед именем идентифи-
катора символ подчеркивания, вы можете его не добавлять.

            Регистровые псевдопеременные языка Си
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

   ЪДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
   і Псевдопеременная  і       Тип            і    Регистр    і
   ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДґ
   і     _AX           і  unsigned int        і          AX   і
   і     _AL           і  unsigned char       і          AL   і
   і     _AH           і  unsigned char       і          AH   і
   і                   і                      і               і
   і     _BX           і  unsigned int        і          BX   і
   і     _BL           і  unsigned char       і          BL   і
   і     _BH           і  unsigned char       і          BH   і
   і                   і                      і               і
   і     _CX           і  unsigned int        і          CX   і
   і     _CL           і  unsigned char       і          CL   і
   і     _CH           і  unsigned char       і          CH   і
   і                   і                      і               і
   і     _DX           і  unsigned int        і          DX   і
   і     _DL           і  unsigned char       і          DL   і
   і     _DH           і  unsigned char       і          DH   і
   і                   і                      і               і
   і     _CS           і  unsigned int        і          CS   і
   і     _DS           і  unsigned char       і          DS   і
   і     _SS           і  unsigned char       і          SS   і
   і     _ES           і  unsigned char       і          ES   і
   і                   і                      і               і
   і     _SP           і  unsigned int        і          SP   і
   і     _BP           і  unsigned char       і          BP   і
   і     _DI           і  unsigned char       і          DI   і
   і     _SI           і  unsigned char       і          SI   і
   і                   і                      і     указатель і
   і     _IP           і  unsigned int        і     инструкцийі
   АДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ

     Получить доступ  к регистрам процессора 80386 позволяют сле-
дующие псевдопеременные:

    ЪДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
    і Псевдопеременная і      Тип              і       Регистр і
    ГДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДґ
    і    _EAX          і  unsigned long        і         EAX   і
    і    _EBX          і  unsigned long        і         EBX   і
    і    _ECX          і  unsigned long        і         ECX   і
    і    _EDX          і  unsigned long        і         EDX   і
    і                  і                       і               і
    і    _ESP          і  unsigned long        і         ESP   і
    і    _EBP          і  unsigned long        і         EBP   і
    і    _EDI          і  unsigned long        і         EDI   і
    і    _ESI          і  unsigned long        і         ESI   і
    і                  і                       і               і
    і    _FS           і  unsigned int         і         FS    і
    і    _GS           і  unsigned int         і         GS    і
    АДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ

              Форматы констант и чисел языка Си
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

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

              ЪДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДї
              і   Формат      і   Основание           і
              ГДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ
              і   цифры       і   Десятичное          і
              і   Oцифры      і   Восьмеричное        і
              і   OXцифры     і   Шестнадцатиричное   і
              і   Oхцифры     і   Шестнадцатиричное   і
              АДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДЩ

     Константы имеют обычно тип int (16 бит).  Если вы хотите оп-
ределить длинную константу (32 бита),  то конце числа нужно доба-
вить l или L. Например, 123456L.

     Константа с плавающей точкой содержит десятичную точку и мо-
жет использоваться для научного представления, например:

        1.234  4.5e+11

     Символьные строки и ESC-последовательности языка Си
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Строки представляют собой последовательность символов,  зак-
люченную  в  кавычки ("").  В качестве управляющего символа можно
также в соответствии  со стандартными соглашениями языка  Си  ис-
пользовать также обратную косую черту (\).

 ЪДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДї
 і Последовательность і Значение     і           Символ         і
 ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДґ
 і \\                 і              і Обратная косая черта     і
 і \a                 і OX07         і "Звонок"                 і
 і \b                 і OX08         і Обратный пробел          і
 і \f                 і OX0C         і Перевод формата          і
 і \n                 і OX0A         і Новая строка             і
 і \r                 і OX0D         і Возврат каретки          і
 і \t                 і OX09         і Горизонтальная табуляция і
 і \v                 і OX0B         і Вертикальная табуляция   і
 і \xnn               і nn           і Шестнадцатиричное        і
 і                    і              і значение байта           і
 і \nnn               і nnn          і Восьмеричное значение    і
 і                    і              і байта                    і
 АДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

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

          Операции языка Си и старшинство операций
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

     Основные операции выражений:

        () [] . -> sizeof

имеют наивысший приоритет (слева-направо). Унарные операции:

        * & - ! ~ ++ --

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

      высший  * / %
              + -
              >> <<
              < > <= >=
              == !=
              &
              ^
              і
              &&
      низший  іі

     Единственная тернарная операция ? имеет более низкий приори-
тет, чем любая из двоичных операций.

     Операторы присваивания имеют  более  низкий,  чем  тернарная
операция и одинаковый приоритет и группируются справа-налево:

        =   +=   -=   /=   %=   >>=   <<=   &=   ^=   і=

            Выполнение в программе функций на Си
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Функции в выражениях Си можно вызывать точно также,  как это
делается  в  исходном  коде.  Турбо  отладчик выполняет код вашей
программы с теми аргументами функции, которые вы задаете. Это мо-
жет оказаться очень полезным для быстрой проверки поведения напи-
санной функции.  Ее можно повторно вызывать с различными аргумен-
тами и проверять, возвращает ли она корректное значение.

     Если ваша программа содержит следующую функцию, которая воз-
водит число в степень (x в степени y):

        long power(int x, int y) {
                long temp = 1;
                while (y--)
                    temp *= x;
                return(temp);
        }

то в  следующей таблице показаны результаты вызова данной функции
с различными аргументами:

        ЪДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДї
        і  Выражение Си           і           Результат       і
        ГДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
        і  power(3,2)*2           і           18              і
        і  25 + power(5,8)        і           390650          і
        і  power(2)               і           Ошибка (пропу-  і
        і                         і           щен аргумент)   і
        АДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

          Выражения языка Си с побочными эффектами
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

     Операция присваивания (=,  += и т.д.) изменяет значение эле-
мента данных, расположенного слева от операции. Операции увеличе-
ния и уменьшения (++ и --) изменяют  значения  элементов  данных,
которые им предшествуют или следуют за ними, в зависимости от то-
го,  используются они как префиксные,  или как постфиксные опера-
ции.

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

        myfunc(1, 2, 3) + 7

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

       Ключевые слова языка Си и преобразование типов
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

     Преобразование типа полезно  использовать,  если  вы  хотите
проверить содержимое ячейки памяти,  на которую ссылается дальний
адрес, сгенерированный с использованием операции ::. Например:
        (long far *)Ox3456::0
        (char far *)_ES::_BX

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

     Например, если  ваша переменная iptr представляет собой ука-
затель на целое,  вы можете проверить целое значение,  на которое
она указывает, вычислив выражение Си:

        *(int *)iptr

     При формировании преобразования типов в Турбо отладчике мож-
но использовать следующие ключевые слова:
        char            float              far
        int             double             huge
        short           unsigned           struct
        long            near               union
                                           enum

                   Выражения языка Паскаль
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                   Идентификаторы Паскаля
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Идентификаторы в  Паскале  представляют  собой  определенные
пользователем  имена элементов данных или подпрограмм вашей прог-
раммы.  Имя идентификатора Паскаля может начинаться с буквы (a  -
z,  A - Z) или символа подчеркивания. Последующие символы в имени
могут содержать цифры (от 0 до 9) и подчеркивания, а также буквы.

     Обычно идентификаторы подчиняются правилам  области действия
Паскаля,  при этом "вложенные" локальные идентификаторы переопре-
деляют другие идентификаторы в том же имени.  Вы можете переопре-
делить данную область действия,  если хотите  получить  доступ  к
идентификаторам в других областях. Более подробно это описывается
в разделе "Доступ к идентификаторам  вне  текущей  области  дейс-
твия".

              Константы Паскаля и формат чисел
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Константы могут быть либо вещественными  (с  плавающей  точ-
кой),  либо  целыми.  Отрицательные константы начинаются со знака
минуса (-).  Если число содержит десятичную точку или  символ  e,
что обозначает экспоненту, то это вещественное число. Например:

        123.4   456e34  123.45e-5

     Константы целого типа являются десятичными,  если они не на-
чинаются со знака доллара  ($),  что  означает  шестнадцатиричную
константу.  Десятичные целые константы могут принимать значения в
диапазоне от 2137483648 и 2147483647. Шестнадцатиричные константы
должны лежать в диапазоне от $00000000 до $FFFFFFFF.

                       Строки Паскаля
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Строка представляет собой просто группу символов,  заключен-
ных в одиночные кавычки, например:

        'abc'

     Указав перед десятичным управляющим символом символ #, можно
включить в строку управляющие символы, например:

        'def'#7'xyz'

                      Операции Паскаля
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Турбо отладчик  поддерживает все операции,  использующиеся в
выражениях Паскаля.

     Унарные операции имеют старший и одинаковый приоритет.

        @       Получает адрес идентификатора.
        ^       Содержимое указателя.
        not     Поразрядное дополнение.
        typeid  Приведение типа.
        +       Унарный плюс (положительное значение).
        -       Унарный минут (отрицательное значение).

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

        *       \       div     mod     and     shl     shr
        in      +       -       or      xor
        <       <=      >       >=      =       <>

     Операция присваивания := имеет низший приоритет.  Для вашего
удобства она возвращает значение (как в языке Си).

      Соглашения Паскаля по вызовам процедур и функций
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В выражениях Турбо Паскаля можно ссылаться  на  процедуры  и
функции.  Например,  предположим, что вы описали функцию с именем
HalfFunc, которая делит целое значение на 2:

        function HalfFunc(i: integer) real);

     Затем вы можете выбрать команду DataіEvaluate/Modify (Данные
іВычисление/Модификация) и вызвать функцию HalfFunc следующим об-
разом:

        HalfFunc(3)
        HalfFunc(10) = HalfFunc(10 div 3)

     Можно также вызывать процедуры (но,  конечно, не в выражени-
ях). Когда вы вводите просто имя процедуры или функции, Турбо от-
ладчик выводит ее адрес и описание.  Чтобы вызвать процедуру  или
функцию, которая не имеет параметров, укажите после имени функции
скобки, например:

        MyProc()        Вызывает MyProc.
        MyProc          Сообщает адрес MyProc и т.д.
        MyFunc=5        Сравнивает адрес MuFunc c 5.
        MyFunc()=5      Вызывает MyFunc и сравнивает возвращаемое
                        значение с 5.

                    Выражения Ассемблера
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Турбо отладчик  поддерживает  полный синтаксис выражений Ас-
семблера.  Выражение состоит из смеси операций, строк, переменных
и  констант.  Каждый  из этих компонентов описывается в следующем
разделе.

                  Идентификаторы Ассемблера
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Идентификаторы представляют собой определенные пользователем
имена элементов данных и подпрограмм в вашей программе. Имя иден-
тификатора Ассемблера начинается с буквы (a - z, A - Z) или одно-
го из следующий символов: @, ?, _, $. Последующие символы в иден-
тификаторе  могут  содержать цифры (0 - 9) или любой из указанных
символов.  В качестве первого символа имени идентификатора (но не
внутри имени) можно также использовать точку.

     Специальный идентификатор $ ссылается на текущий адрес прог-
раммы, определяемый парой регистров CS:IP.

                    Константы Ассемблера
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Турбо отладчик обеспечивает работу с константами всех типов,
которые используются в Ассемблере (byte,  word,  длинные, состав-
ные,  с плавающей точкой,  вещественные,  с двойной и расширенной
точностью). Константа  с  плавающей  точкой  содержит  десятичную
точку и может использовать научное десятичное представление.

               1.234        4.5e+11

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

     ЪДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
     і  Формат                і                 Основание       і
     ГДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
     і  цифрыH                і              Шестнадцатиричное  і
     і  цифрыO                і              Восьмеричное       і
     і  цифрыQ                і              Восьмеричное       і
     і  цифрыD                і              Десятичное         і
     і  цифрыB                і              Двоичное           і
     АДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     Шестнадцатиричное число  всегда должно начинаться с цифры (0
- 9). Если вы ходите начать число с одной из букв (A - F), то пе-
ред ним должен следовать 0.

          Примечание: Если вы хотите  закончить шестнадцатиричное
     число символом D или B,  то, чтобы избежать неоднозначности,
     нужно добавить H.

                     Операции Ассемблера
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Турбо отладчик поддерживает большинство операций, использую-
щиеся в Ассемблере. Старшинство этих операций соответствует стар-
шинству операций, принятому в Ассемблере:

     xxx PTR (BYTE PTR...)
     .(селектор элемента структуры)
     :(переопределение сегмента)
     OR XOR
     AND
     NOT
     EQ NE LT LE GT GE
     + -
     * / MOD SHR SHL
     Унарный -, Унарный +
     OFFSET SEG
     () []

     Переменные можно изменять с помощью операции присваивания =.
Например:

        a = [BYTE PTR DS:4]

                     Управление форматом
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

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

     Символы, управляющие форматом вывода Ассемблера, описываются
с следующей таблице:

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Идентификатор           Формат
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 c              Символ или строка выводятся на экран в виде необ-
                работанных символов. Обычно непечатаемые  символы
                выводятся в виде управляющих символов или в  чис-
                ловом формате. Этот параметр приводит к тому, что
                при выводе символов будет  использоваться  полный
                набор символов дисплея IBM.

 d              Целое число выводится в виде  десятичного  значе-
                ния.

 f[#]           Формат с плавающей точкой с заданным числом цифр.
                Если вы  не  задаете число цифр,  то используется
                столько цифр, сколько необходимо.

 m              Выражение со ссылкой на память выводится  в  виде
                шестнадцатиричных байт.

 md             Выражение со ссылкой на память выводится  в  виде
                десятичных байт.

 P              Выводится необработанное значение указателя,  по-
                казывающее сегмент, как имя  регистра  (если  это
                возможно). Показывается также объект, на  который
                указатель ссылается. Если управление форматом  не
                задано, то это используется по умолчанию.

 s              Выводится массив или указатель на массив символов
                (строка, заключенная в кавычки).  Строка заверша-
                ется нулевым символом.

 x или h        Целое выводится в виде шестнадцатиричного  значе-
                ния.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

лава 10. Объектно-ориентированная отладка для Паскаля и C++
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Чтобы удовлетворить  потребности  развития  методов  объект-
но-ориентированного программирования,  принципы которого реализо-
ваны в последних версиях таких языков высокого уровня,  как Турбо
C++ и  Турбо Паскаль,  Турбо отладчик был также модифицирован для
поддержки объектно-ориентированного программирования.  Кроме  тех
расширений,  которые  позволяют вам выполнять трассировку методов
объектов или функций-элементов классов в диалоговом окне Evaluate
/Modify  (Вычисление/Модификация) и окне Watch (Просмотр),  Турбо
отладчик версии 3.0 оснащен специальным набором окон  и локальных
меню, созданных специально для работы с объектными типами и клас-
сами.

   Отладка объектно-ориентированных программ Турбо Паскаля
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

       Пошаговое выполнение и трассировка вызовов методов
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Во время  трассировки  (клавиша  F7) и пошагового выполнения
(клавиша F8) Турбо отладчик рассматривает методы в  точности так,
как  если бы они были процедурами или функциями.  Клавиша F7 осу-
ществляет трассировку исходного кода метода (если этот код досту-
пен),  тогда как F8 рассматривает вызов метода,  словно это  один
оператор, и "перешагивает" через него.

     Турбо отладчик  правильно управляет поздним связыванием вир-
туальных методов: он всегда выполняет и выводит на экран коррект-
ный  код.  В окне стека Турбо отладчика (окно Stack) выводятся на
экран имена методов,  перед которыми указывается тип объекта, оп-
ределяющего метод.

                       Окно Hierarchy
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В Турбо отладчике предусмотрено специальное  окно  Hierarchy
(Иерархия) для  проверки  иерархии объектов или классов.  Вывести
это окно можно по команде меню ViewіHierarchy (ОбзоріИерархия).

       Й[*]ННННClass HierarchyНННННННННННННННННННН3ННННН[ ][ ]»
       єDevice      і АДДДДДДДДPoint                          є
       єGlowGauge   і           АДДДДДДДДДДRectangle          є
       єHorzArrow   і                       ГДДДДДДДDevice    є
       єHorzBar     і                       АДДДДДДДTextWindowє
       єLinearGauge іRange                                    є
       єPoint       і АДДДДДДDevice                           є
       єRange       і          ГДДДДДДGlowGauge               є
       єRectangle   ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДє
       єScreen      іParents of Device                        є
       єTextWindow  і іДДДДДДДДДДRange                        є
       єVertArrow   і АДДДДДДДДДДRectangle                    є
       єVertBar     і            АДДДДДДДДДДPoint             є
       є            і                       АДДДДДДДScreen    є
       ИННННННННННННН<І±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±>Ѕ

     Рис. 10.1 Окно Hierarchy

     В окне Hierarchy (Иерархия) выводится информация об  объект-
ных  типах или классах,  а не об их экземплярах.  В левой области
выводится список в алфавитном порядке всех типов,  используемых в
отлаживаемом модуле. В правой области (двух областях, если вы от-
лаживаете программу на C++ с множественным наследованием) показа-
на  иерархия всех объектов или классов (с помощью линейной графи-
ки).  При этом по левой границе области выводится базовый  тип  и
показываются порожденные им типы ("потомки"). Кроме того показаны
все "предки" классов с множественным наследованием.  При этом ли-
нии показывают отношения между "предками" и "потомками".

          Примечание: Для  перемещения  между двумя областями ис-
     пользуйте клавишу Tab.

           Области списка типов объектов и классов
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В левой области окна иерархии объектов/классов  выводится (в
алфавитном порядке)  список всех типов классов или объектов в те-
кущем модуле.  Она поддерживает средство инкрементального поиска,
что исключает необходимость перемещать курсор по  большим спискам
типов.  Когда  полоса подсветки находится в левой области,  можно
просто начать набирать новое имя искомого типа объекта или  клас-
са. При каждом нажатии клавиши Турбо отладчик подсвечивает первый
тип, соответствующий всем нажатым к этому моменту клавишам.

     Для того,  чтобы открыть окно Inspector (Проверка) для подс-
веченного типа  объекта или класса,  нажмите клавишу Enter.  Окна
проверки описаны далее.

окальное меню области области списка типов объектов и классов
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Для вывода  локального  меню  данной области нажмите клавиши
Alt-F10. Вы можете  также  использовать  сокращения  (оперативные
клавиши), если это разрешено с помощью утилиты TDINST. Данное ло-
кальное меню содержит два элемента: Inspect и Tree.

                     ЪДДДДДДДДДДДДДДДДДї
     Проверка        і Inspect         і
     Дерево          і Tree            і
                     АДДДДДДДДДДДДДДДДДЩ

                       Команда Inspect
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данная команда выводит для подсвеченного типа объекта/класса
окно Inspector (Проверка).

                        Команда Tree
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данная команда перемещает вас в правую область окна, в кото-
рой выведено дерево иерархии объектов, и помещает полосу подсвет-
ки на тип, который подсвечен в левой области.

                   Область дерева иерархии
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В правой области окна Hierarchy  выводится  дерево  иерархии
для всех  объектов или классов,  использующихся в текущем модуле.
Отношения "предков" и "потомков" показаны линиями, при этом  "по-
томки" расположены слева и ниже своих "предков".

     Чтобы найти  объект или класс конкретного типа в сложном де-
реве иерархии,  перейдите обратно в левую область  и  используйте
средство инкрементального поиска (или поиска по возрастанию). За-
тем выберите в локальном меню элемент Tree (Дерево), чтобы перей-
ти обратно к дереву иерархии. Соответствующий тип выводится в по-
лосе подсветки.

     При нажатии  клавиши  Enter  для  подсвеченного  типа объек-
та/класса выводится окно Inspector (Проверка).

     Если вы загрузили программу на языке C++,  в которой исполь-
зуются классы с множественным наследованием,  то выводится третья
область - дерево порождающих классов,  которая расположена в окне
Hierarchy (Иерархия) ниже дерева иерархии.  Если исследуемый вами
класс имеет нескольких "предков",  то,  если в локальном меню об-
ласти дерева иерархии выбрана команда Parent (Порождающий класс),
и для нее установлено значение Yes (Да), то области дерева порож-
дающих  классов  выводится обратное дерево (с сообщением "Parents
of Class" - "Порождающие классы для данного класса" в левой  гра-
нице  области).  Ниже  и правее левой границы выводятся "предки".
При этом линиями показаны отношения "предков" и "потомков".

     Также, как и в области дерева иерархии,  для любого  класса,
выводимого  в  области дерева порождающих классов,  можно открыть
окно Inspector (Проверка).

           Локальные меню области дерева иерархии
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Локальное меню  области дерева иерархии содержит только один
элемент - Inspect (Проверка). Когда вы его выбираете, для подсве-
ченного типа выводится окно проверки типа класса/объекта. Однако,
если вы хотите проверить подсвеченный тип,  быстрее и проще будет
просто нажать клавишу Enter.
                     ЪДДДДДДДДДДДї
          Проверка   і Inspect   і
                     АДДДДДДДДДДДЩ

     Если вы загрузили программу на языке C++,  в которой исполь-
зуются классы с множественным наследованием,  то  локальное  меню
области дерева иерархии содержит два элемента: Inspect и Parents.
                      ЪДДДДДДДДДДДДДДДДДДДДї
          Проверка    і Inspect            і
          Предки      і Parents        Yes і
                      АДДДДДДДДДДДДДДДДДДДДЩ

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

      Локальное меню области дерева порождающих классов
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Область дерева порождающих (родительских) классов,  если она
присутствует,  содержит локальное меню  с  единственной  командой
Inspect (Проверка).

                     ЪДДДДДДДДДДДДї
          Проверка   і Inspect    і
                     АДДДДДДДДДДДДЩ

     Работает данная  команда аналогично команде Inspect (Провер-
ка) локального меню области дерева иерархии,  то  есть  открывает
окно Inspector для подсвеченного типа объекта или класса.

              Окно Object Type/Class Inspector
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Турбо отладчик предоставляет новый тип окна Inspector  (Про-
верка) с  целью  позволить  вам проверять детали объектного типа.
Это  окно  проверки  типов  объектов/классов  (Object  Type/Class
Inspector).  В данном окне сведена информация о типе объекта,  но
оно не относится к какому-либо отдельному экземпляру этого типа.

             ЙНН[*]ННClass LinearGaugeНН4ННН[ ][ ]»
             єint±Range::Low±±±±±±±±±±±±±±±±±±±±±±^
             єint Range::High                     °
             єint Screen::MaxX                    v
             є<І°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°>є
             єclass Range *Range::ctr()           є
             єint Range::GetValue()               є
             єint Range::GetLow()                 є
             єint Range::GetHigh()                є
             ИННННННННННННННННННННННННННННННННННННЅ

     Рис. 10.2 Окно Object Type/Class Inspector

     Окно делится по горизонтали на две области, в верхней из ко-
торых  выводится  список полей данных типа объекта,  а в нижней -
список имен методов и (если выбранный  метод  является  функцией)
возвращаемый функцией тип. Используйте клавишу горизонтальной та-
буляции для   переключения  между  двумя  областями  окна  Object
Type/Class Inspector (Проверка типов объектов/классов).

     Если подсвеченное поле данных является объектным  типом  или
указателем  на объектный тип,  то нажатие клавиши Enter открывает
другое окно проверки типов  объектов/классов  (Object  Type/Class
Inspector) для подсвеченного типа. (Это действие идентично выбору
элемента Inspect в локальном меню  этого  окна.)  Таким  образом,
сложная вложенная структура объектов может быстро просматриваться
при минимальном количестве нажатий клавиш.

     Для краткости  параметры  методов  не  показываются  в  окне
проверки типов объектов.  Для проверки параметров метода перемес-
тите подсветку на метод и нажмите клавишу  Enter.  Появится  окно
проверки метода/функции (Inspector). Верхняя область окна выводит
на экран адрес кода экземпляра типа объекта/класса для выбранного
метода и имена и типы всех параметров метода.  Если ваша исходная
программа написана на объектно-ориентированном Паскале, то нижняя
область окна показывает, является ли метод процедурой или функци-
ей.

     Нажатие клавиши Enter в любом месте окна проверки метода или
функций-элементов классов (Inspector) выводит  на  передний  план
окно Module (Модуль) и помещает курсор на код,  который реализует
проверяемый метод.

     Как и в стандартном окне проверки,  нажатие клавиши Esc зак-
рывает текущее окно Inspector (Проверка), а нажатие клавиш Alt-F3
закрывает их все.

       Локальное меню окна Object Type/Class Inspector
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Нажатие клавиш Alt-F10 выводит локальное меню любой области.
Если  разрешено  использование  сокращений с клавишей Ctrl (с по-
мощью утилиты TDINST),  то вы можете получить элемент  локального
меню  путем нажатия клавиши Ctrl и первой буквы элемента. Верхняя
область (область полей данных объектов) содержит  следующие  эле-
менты меню:

                                ЪДДДДДДДДДДДДДДДДДДДДДДї
     Проверка                   і Inspect              і
     Иерархия                   і Hierarchy            і
     Вывод наследования         і Show inherited   Yes і
                                АДДДДДДДДДДДДДДДДДДДДДДЩ

           Область полей данных объекта (верхняя)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Локальное меню области полей данных объекта содержит следую-
щите элементы:

                   Команда Inspect (Проверка)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Если подсвеченное поле является объектным типом или указате-
лем на него,  то для подсвеченного поля  открывается  новое  окно
проверки типов объектов/классов (Object Type/Class Inspector).

                  Команда Hierarchy (Иерархия)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Открывает окно иерархии объектов (Hierarchy) для проверяемо-
го объектного типа или класса. Это окно описано выше.

               Show Inherited (Вывод наследования)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Yes (Да) является значением по умолчанию этого  переключате-
ля.  Когда  он  установлен в значение Yes,  показываются все поля
данных и методы (функции),  независимо от того, определены ли они
внутри данного (проверяемого)  типа  объекта  (класса),  или  они
унаследованы от родительского (порождающего) типа. Когда переклю-
чатель установлен в значение No (Нет),  на экран выводятся только
определенные внутри проверяемого типа поля и методы (функции-эле-
менты).

              Область методов объекта (нижняя)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Перечислим элементы  локального меню нижней области (области
методов объектов):

                                ЪДДДДДДДДДДДДДДДДДДДДДДї
     Проверка                   і Inspect              і
     Иерархия                   і Hierarchy            і
     Вывод наследования         і Show inherited   Yes і
                                АДДДДДДДДДДДДДДДДДДДДДДЩ

                   Команда Inspect (Проверка)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Для подсвеченного метода  открывается  окно  проверки  функ-
ции/метода (Inspector).  Если вы нажмете клавиши Ctrl-I, а курсор
будет при этом находиться выше адреса, показанного в окне провер-
ки метода/функции, то на переднем плане появится окно Module (Мо-
дуль), а курсор будет находиться на коде, реализующем проверяемый
метод (функцию).

                  Команда Hierarchy (Иерархия)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Открывает окно иерархии объектов (Hierarchy) для проверяемо-
го объекта или класса. Это окно описано выше.

               Show  Inherit  (Вывод наследования)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Yes (Да) является состоянием по умолчанию для этого переклю-
чателя.  Когда он установлен в значение Yes,  то показываются все
методы или функции-элементы,  независимо от того,  определены  ли
они в проверяемом объекте (классе), или они унаследованы от роди-
тельского типа объекта (класса). Если этот переключатель установ-
лен в значение No (Нет),  то показываются только методы,  опреде-
ленные в проверяемом типе объекта (класса).

            Окно Object/Class Instance Inspector
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Окна Object/Class Instance  Inspector  (Проверка  экземпляра
объектов/классов)  обеспечивают  информацию о типах объектов,  но
ничего не говорит о данных,  содержащихся в отдельном  экземпляре
объекта  или  класса в данный момент выполнения программы.  Турбо
отладчик предоставляет расширенную форму знакомых уже  окон  про-
верки  записей  специально  для проверки экземпляров объектов или
классов.

     Откройте это  окно путем установки курсора на экземпляр объ-
екта в окне Module (Модуль), затем нажмите клавиши Ctrl-I.

           ЙН[*]ННInspecting twННННННННННННН3НН[ ][ ]»
           є@75C6:01E8                               ^
           єScreen::MaxX              500    (Ox1F4) °
           єScreen::MaxY              512    (Ox200) v
           є<І°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°>є
           єScreen::Convert       @0000:0000         є
           єScreen::VertVtoA      @0000:0000         є
           єScreen::VertAtoV      @0000:0000         є
           єДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДє
           єclass TextWindow                         є
           ИНННННННННННННННННННННННННННННННННННННННННЅ

     Рис. 10.3 Окно Object/Class Instance Inspector

     Большинство окон Турбо отладчика,  предназначенных для  про-
верки данных записи, имеют две части (области). В верхней области
выводятся имена полей записи и их текущие значения,  а в нижней -
тип поля,  подсвеченного в верхней области. Окно проверки экземп-
ляра объекта/класса  (Object/Class Instance Inspector) предостав-
ляет обе эти области,  а также третью область между ними. Эта но-
вая область  содержит  методы экземпляра объекта или функции-эле-
менты с адресами кода для каждого метода (функции).  (Адрес  кода
учитывается полиморфическими объектами и  в  таблице  виртуальных
методов.)

          Примечание: Полное описание таблицы виртуальных методов
     можно найти в руководствах по Турбо Паскалю.

     Локальное меню окна Object/Class Instance Inspector
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Каждая из двух верхних областей  окна  проверки  экземпляром
объектов/классов  (Object/Class  Instance  Inspector)  имеет свое
собственное локальное меню,  которое выводится на экран путем на-
жатия клавиш Alt-F10. Здесь вы также можете использовать сокраще-
ния с клавишей Ctrl для получения отдельных элементов  меню, если
их использование разрешено с помощью утилиты TDINST.

                                     ЪДДДДДДДДДДДДДДДДДДДДДї
            Диапазон                 і Range...            і
            Изменение                і Change...           і
            Методы                   і Methods         Yes і
            Вывод наследования       і Show inherited  Yes і
                                     ГДДДДДДДДДДДДДДДДДДДДДґ
            Проверка                 і Inspect             і
            Спуск                    і Descend             і
            Новое выражение          і New expression...   і
            Приведение типа          і Type cast           і
            Иерархия                 і Hierarchy           і
                                     АДДДДДДДДДДДДДДДДДДДДДЩ

     Как и в окне проверки  записи  (Inspector),  нижняя  область
служит  только  для вывода типа подсвеченного поля и не имеет ло-
кального меню.

     Верхняя область, которая содержит поля данных объекта, имеет
следующие локальные команды:

                   Команда Range... (Диапазон)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                 Команда Change...  (Изменение)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                    Команда Methods (Методы)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Эта команда является переключателем между состояниями Yes/No
(Да/Нет) и с состоянием Yes (Да) по умолчанию. Если переключатель
установлен в значение Yes, то методы выводятся в средней области.
В состоянии No (Нет) средняя область отсутствует. Этот переключа-
тель запоминается следующим окном Inspector  (Проверка),  которое
будет открыто.

           Команда Show Inherited (Вывод наследования)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Это элемент,  который также переключается между  состояниями
Yes и No.  В состоянии Yes (Да) выводятся все поля данных и мето-
ды,  независимо от того, определены ли они в проверяемом объекте,
или они унаследованы от родительского типа.  В состоянии No (Нет)
выводятся только те поля и методы, которые определены в проверяе-
мом объектном типе.

                   Команда Inspect (Проверка)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Как и в предыдущих версиях Турбо отладчика,  выбор этой  ко-
манды открывает окно проверки данных (Inspector) для подсвеченно-
го поля. Нажатие клавиши Enter над подсвеченным полем ведет к то-
му же результату.

                     Команда Descend (Спуск)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Эта команда не изменилась по отношению к более ранним верси-
ям Турбо отладчика.  Подсвеченный элемент занимает место элемента
в текущем окне  Inspector.  Не  открывается  никаких  новых  окон
Inspector. Однако, вы не можете вернуться к предыдущему проверяе-
мому полю,  как  могли бы сделать это, если бы использовали пара-
метры Inspect.

          Примечание: Используйте команду Descend (Спуск) при вы-
     полнении трассировки сложных структур данных и когда  вы  не
     собираетесь  открывать  отдельное  окно проверки (Inspector)
     для каждого проверяемого элемента.

           Команда New Expression... (Новое выражение)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

    Данная команда не изменена по сравнению с предыдущими версия-
ми Турбо отладчика.  Эта команда подсказывает вам о необходимости
ввести  новый  элемент  данных или выражение для проверки.  Новый
элемент замещает текущий в окне, а новое окно не открывается.

             Команда Type Cast... (Приведение типа)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Type Cast (Приведение типа) позволяет вам задать для
проверяемого элемента другой тип данных. Ее полезно использовать,
если окно Inspector содержит идентификатор,  для которого нет ин-
формации о типе, а также для явного задания типа указателей.

                  Команда Hierarchy (Иерархия)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     При выборе  данной команды открывается окно иерархии объекта
(Hierarchy). Полное описание этого окна приведено выше.

                  Средняя и нижняя область
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В среднем окне выводятся методы объекта.  Единственным отли-
чием между локальным меню области методов и локальным меню облас-
ти полей данных (верхняя  область)  является  отсутствие  команды
Change (Изменение).  В отличие от полей данных,  методы  и  функ-
ции-элементы нельзя  изменять в процессе выполнения,  поэтому нет
нужды в такой команде.

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

           Глава 11. Отладка на уровне Ассемблера
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данная глава предназначена для программистов, которые знако-
мы с программированием на Ассемблере для процессоров серии 80х86.

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

     Мы поясним,  в каких случаях желательно использовать отладку
на уровне Ассемблера. Затем мы опишем окно центрального процессо-
ра (CPU) со встроенным дисассемблером и Ассемблером.  Вы узнаете,
как можно с помощью данного окна проверять и модифицировать байты
данных непосредственно в шестнадцатиричном виде,  как  анализиро-
вать стек вызова функций, как проверять и модифицировать регистры
центрального процессора (ЦП) и его флаги.

     Когда недостаточно отладки на уровне исходного кода
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В большинстве случаев при отладке программы вы ссылаетесь на
код и данные программы на уровне исходного кода, обращаясь к име-
нам идентификаторов точно так, как они набраны в исходном коде, и
"проходите" программу, выполняя участки исходного кода.

     Однако иногда лучше рассмотреть проблему "изнутри", анализи-
руя те инструкции.  которые генерирует компилятор, содержимое ре-
гистров ЦП и его стека. Чтобы сделать это, вы должны быть знакомы
как  с  процессором  серии 80х86,  так и с компилятором,  который
превращает ваш код в машинные инструкции.  Поскольку функциониро-
ванию  ЦП  посвящено  много  превосходных книг,  мы не собираемся
рассказывать здесь об этом подробно. Мы только кратко расскажем о
том,  как  компилятор превращает исходный код в машинные инструк-
ции, рассмотрев инструкции, генерируемые каждой строкой исходного
кода.

     Язык Си,  или  Паскаль,  например,  позволяет вам записывать
строки исходного кода,  которые выполняют несколько действий сра-
зу.  Поскольку  отладчик  позволяет  выполнять программу по одной
строке исходного кода,  а не по одному выражению языка Си (Паска-
ля), вам иногда будет желательно знать результат выполнения части
строки исходного кода.  Выполняя всю программу по одной  машинной
инструкции,  вы  сможете проверить промужеточные результаты (хотя
потребуются некоторые усилия, чтобы понять, как компилятор транс-
лирует исходные операторы в машинный код).

                          Окно CPU
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В окне CPU (ЦП) показано все состояние центрального  процес-
сора.  С его помощью вы можете проверять и изменять биты и байты,
составляющие код и данные программы.  В окне Code (Код) для  вре-
менной  коррекции своей программы вы можете использовать встроен-
ный Ассемблер.  При этом инструкции вводятся точно также, как при
наборе исходных операторов Ассемблера.  Можно также получить дос-
туп к соответствующим данным любой структуры данных, выводя и из-
меняя их в различных форматах.

      Й[*]НCPU 80286НННННННННННННННННННННННННННННННН3ННН[ ][ ]»
      єTPDEMO.120: Inc(NumLines);               ^ ax 0004 іc=0є
      є  cs:04C4:4F36063000 inc word ptr [TPDEMOІ bx 3EEE іz=0є
      єTPDEMO.121  i := 1;                      ± cx 0000 іs=0є
      є cs:04C8 C:43FE0100  word ptr [bp+02].000± dx 5920 іo=0є
      єTPDEMO.122: while i <= Length(S) do      ± si 3CEC іp=0є
      є cs:04C0 C47ED4    les  di,[bp+04]       ± bp 3EF4 іa=0є
      є cs:0400 288A05    mov  al,es:[di]       ± sp 3EF4 іi=1є
      є cs:0403 3D84      xor  ah,ah            ± ds 5920 іd=0є
      є cs:0405 3B48FE    cmp ax,[bp+02]        ± es 5920 і   є
      є cs:0408 7D03      jnl TPDEMO.125 (04DD) ± ss 595A і   є
      є cs:040A 898A00    jmp TPDEMO.148        ± cs 548A і   є
      єTPDEMO.125 while (i <= Length(S)) and notv ip 04C8 і   є
      є<І±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±>іДДДДДДДДДДДДДє
      є ds:0000 00 00 00 00 00 00 00 00 ********і             є
      є ds:0008 5A 5D 5A 5D 5A 5D 00 00 ********і ss:3EF2 548Aє
      є ds:0010 00 00 00 00 00 00 5A 5D ********і ss:3EF0>04C1є
      є ds:0018 00 00 5A 5D 00 00 00 90 ********і ss:3EEE 0246є
      ИНННННННННННННННННННННННННННННННННННННННННННННННННННННННЅ

     Рис. 11.1 Окно CPU

     Окно CPU (ЦП) можно создать,  выбрав команду основного  меню
ViewіCPU  (ОбзоріЦентральный  процессор).  В зависимости от того,
что вы просматриваете в текущем окне, окно CPU будет позициониро-
вано на соответствующие код,  данные или стек.  Это предоставляет
удобный способ просматривать код,  данные или стек (соответствую-
щие  текущему положению курсора) "на нижнем уровне".  В следующей
таблице показано,  где будет позиционирован курсор при выборе ко-
манды CPU:

 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Текущее окно         Область окна CPU      Позиционируется на...
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Окно Stack (Стек)           Stack (Стек)          Текущие SS:SP
 Окно Module (Модуль)        Code (Код)            Текущие SS:SP
 Окно Variable (Переменная)  Данные/Код            Адрес элемента
 Окно Watches (Просмотр)     Данные/Код            Адрес элемента
 Окно Inspector (Проверка)   Данные/кодж           Адрес элемента
 Точка останова (не          Код                   Адроес точки
 глобальная)                                       останова
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Если TDW вновь получает управление от вашей прикладной прог-
раммы, а текущим выполняемым кодом является код Windows  или DLL,
то TDW автомачески переводит вас в окно CPU.

     Строка в  верхней части окна CPU (ЦП) показывает тип процес-
сора (8086,  80186,  80286 или 80386). Окно CPU имеет пять облас-
тей (или  6  в TDW).  Чтобы переходить из одной области в другую,
можно использовать клавиши Tab или Shift-Tab. В верхней левой об-
ласти (области кода) выводится дисассемблированный код программы,
чередующийся со строками исходного текста. Во второй области (об-
ласти регистров) показано содержимое регистров ЦП. Правая область
представляет собой область флагов, где выводится состояние восьми
флагов  ЦП.  В нижней левой области (области данных) в непосредс-
твенном шестнадцатиричном виде выводится любая выбранная вами об-
ласть  памяти.  В  нижней правой области (области стека) показано
содержимое стека.

     Если вы работаете с TDW,  то в окне CPU имеется дополнитель-
ная область - область селекторов. Эта область, которая расположе-
на слева от области кода и области данных,  показывает все селек-
торы Windows и показывает содержимое каждого из них.

     Как и во всех других окнах,  нажатие клавиш Alt-F10 приводит
к выводу локального меню области кода. Если разрешено использова-
ние сокращений с клавишей Ctrl,  то нажатие клавиши Ctrl с первой
буквой  нужной команды может использоваться для непосредственного
доступа к команде.

     В области кода, данных и стека для смещения начального адре-
са вывода  на  1  байт  вверх или вниз можно использовать клавишу
Ctrl со стрелками.  Если вы хотите просто слегка сместить изобра-
жение, это легче, чем использовать команду Goto (Переход).

                        Область кода
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В этой области по выбранному вами  адресу  выводятся  дисас-
семблированные инструкции.

          Примечание: Стрелка (>) в области кода показывает теку-
     щий адрес программы (CS:IP). В области стека стрелка показы-
     вает текущий указатель стека (SS:SP).

     В левой  части  каждой  дисассемблированной строки выводится
адрес инструкции.  Адрес выводится либо в виде шестнадцатиричного
значения сегмента и смещения,  либо со значением сегмента,  заме-
ненным именем регистра CS (если значение сегмента совпадает с те-
кущим  значение  регистра CS).  Эта область имеет ширину (которая
может переключаться или настраиваться),  достаточную  для  вывода
всех образующих  инструкцию байт.  Дисассемблированная инструкция
выводится справа.

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

                        Дисассемблер
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В области  кода  автоматически дисассемблируются и выводятся
на экран инструкции вашей  программы.  Если  адрес  соответствует
глобальному,  статическому  идентификатору или номеру строки,  то
(если режим вывода Mixed установлен в значение Yes) перед  дисас-
семблированной  инструкцией  выводится строка.  Кроме того,  если
имеется строка исходного кода, соответствующая адресу идентифика-
тора, то она выводится после идентификатора.

     Глобальные идентификаторы  выводятся  просто  в  виде  имени
идентификатора. Статические идентификаторы выводятся в виде имени
модуля, за которым следует символ # или точка (.) и имя статичес-
кого идентификатора.  Номера строк выводятся в виде имени модуля,
за которым  следует разделяющий символ # или точка (.) и десятич-
ный номер строки.

     При выводе непосредственного операнда вы  можете  определить
его размер по числу цифр. Непосредственное байтовое значение сос-
тоит из 2 цифр, а непосредственное значение размером в слово - из
4 цифр.

     Турбо отладчик  может  распознавать наличие числового сопро-
цессора 8087/80287/80387 и дисассемблировать соответствующие инс-
трукции с плавающей точкой.

     Мнемоника инструкции  RETF  показывает,  что  это инструкция
возврата дальнего типа.  Обычная мнемоника RET свидетельствует  о
ближнем возврате.

     Там, где  это  возможно,  инструкции  JMP и CALL выводятся в
символическом виде.  Если CS:IP указывают на инструкцию  JMP  или
инструкцию  условного  перехода,  то  стрелка  (стрелка вверх или
вниз), показывающая направление перехода, будет выводиться только
в  том  случае,  если  выполнение инструкции приведет к переходу.
Кроме того,  адреса памяти, использующиеся в инструкциях MOV, ADD
и др., выводятся в виде символических адресов.

                 Локальное меню области кода
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Если вы не перешли в область  кода,  используйте  для  этого
клавиши Tab или Shift-Tab.  Затем для вывода локального меню наж-
мите клавиши Alt-F10.

                ЪДДДДДДДДДДДДДДї
                і Goto...      і     Переход
                і Origin       і     Начало
                і Follow       і     Следующая
                і Caller       і     Вызывающая
                і Previous     і     Предыдущая
                і Search...    і     Поиск
                і View source  і     Просмотр исходного кода
                і Mixed    Yes і     Смешанный
                ГДДДДДДДДДДДДДДґ
                і New cs:ip    і     Новый CS:IP
                і Assemble...  і     Ассемблер
                і IіO        > і     Ввод-вывод
                АДДДДДДДДДДДДДДЩ

                       Команда Goto...
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     После выбора  команды Goto (Переход) вам выводится подсказка
для ввода нового адреса,  на который вы хотите перейти. Вы можете
ввести адрес,  выходящий за пределы программы, что позволяет про-
верить базовую  систему  ввода-вывода (BIOS),  внутренние области
DOS и резидентные утилиты.  Полное описание ввода адресов  содер-
жится в Главе 9.

     Команда Previous (Предыдущий) восстанавливает область кода в
то  состояние (позицию),  которое она имела до выполнения команды
Goto.

                       Команда Origin
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Origin  (Начало)  позиционирует вас на текущий адрес
программы в соответствии со значениями регистров CS:IP.

     Команда Previous (Предыдущий) восстанавливает область кода в
то  состояние (позицию),  которое она имела до выполнения команды
Origin.

                       Команда Follow
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

     Эту команду можно использовать с инструкциями CALL, JMP, ин-
струкциями условных переходов (JZ, JNE, LOOP, JCXZ и т.д.) и инс-
трукциями INT.

     Команда Previous (Предыдущий) восстанавливает область кода в
то  состояние (позицию),  которое она имела до выполнения команды
Follow.

                       Команда Caller
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Caller  (Вызывающая  программа) позиционирует вас на
инструкцию, по которой была вызвана текущая подпрограмма или пре-
рывание.

     Данная команда будет работать не всегда.  Если процедура об-
работки прерывания или подпрограмма занесла в стек элементы  дан-
ных, иногда Турбо отладчик не может определить, откуда был выпол-
нен вызов.

     Команда Previous (Предыдущий) восстанавливает область кода в
то состояние (позицию),  которое она имела до выполнения  команды
Caller.

                      Команда Previous
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Previous (Предыдущий) восстанавливает позицию облас-
ти кода в соответствии с адресом,  который был текущим перед пос-
ледней командой, явно изменившей его значение. Использование кла-
виш   перемещения  (стрелок)  или  PgUp  и  PgDn  не  приводит  к
запоминанию позиции.

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

                     Команда Search...
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Search  (Поиск) позволяет вам вводить инструкцию или
список байт,  которые  вы хотите найти.  Вводите инструкцию точно
также, как это делается в команде Assemble (Ассемблирование).

     Будьте внимательны при поиске инструкций.  Следует выполнять
поиск только тех инструкций,  которые не изменяют байт, в которые
они ассемблируются,  в зависимости от того,  где в памяти они ас-
семблируются.  Например,  поиск  следующих инструкций проблемы не
представляет:

        PUSH    DX
        POP     [DI+4]
        ADD     AX,100

а попытка поиска следующих инструкций может привести к непредска-
зуемым результатам:

        JE      123
        CALL    MYFUNC
        LOOP    $-10

     Вместо инструкции  можно  вводить  также список байт.  Более
подробно об этом рассказывается в Главе 9.

                     Команда View Source
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда View Source (Просмотр исходного кода) для вывода ис-
ходного  кода,  соответствующего текущей дисассемблированной инс-
трукции открывает окно Module (Модуль). Если соответствующего ис-
ходного кода нет (например, вы находитесь в коде Windows, или от-
сутствует  отладочная информация),  вы просто остаетесь в области
кода.

                        Команда Mixed
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Локальная команда Mixed (Смешанный) позволяет  выбрать  один
из трех способов вывода на экран дисассемблированных инструкций и
исходного кода:

No (Нет)        Исходный код не выводится,  выводятся только  ди-
                сассемблированные инструкции.

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

Both (Оба)      Для тех  строк,  которым  соответствует  исходный
                код,  дисассемблированные строки заменяются стро-
                ками  исходного текста.  В противном случае выво-
                дятся дисассемблированные инструкции. Используйте
                этот  режим,  когда  вы отлаживаете модуль на Ас-
                семблере и хотите видеть строку исходного текста,
                а не соответствующую дисассемблированную инструк-
                цию. Область устанавливается в данный режим выво-
                да, если текущим модулем является исходный модуль
                Ассемблера.

                      Команда New CS:IP
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда New CS:IP (Новое значение регистров CS:IP)  устанав-
ливает значение счетчика адреса программы (значение регистров CS:
IP) в соответствии с текущим (подсвеченным) адресом.  При повтор-
ном  запуске  вашей программы выполнение начнется с этого адреса.
Это полезно использовать,  когда вы хотите пропустить  какие-либо
участки кода, не выполняя их.

     Пользоваться данной командой нужно очень аккуратно.  Если вы
изменяете  значение регистров CS:IP в соответствии с адресом, где
стек имеет состояние, отличное от текущего значения CS:IP, то это
почти  наверняка  приведет к аварийному завершению программы.  Не
пользуйтесь этой командой, чтобы установить регистры CS:IP в зна-
чение адреса, лежащего за пределами программы.

                     Команда Assemble...
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Assemble  (Ассемблирование) ассемблирует инструкцию,
заменяя текущую (подсвеченную)  инструкцию.  Инструкция,  которую
требуется  ассемблировать,  вводится в ответ на подсказку.  Более
детально это описывается далее в данной главе в разделе  "Ассемб-
лер".

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

                         Команда I/O
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда I/O (Ввод-вывод) считывает или  записывает  значение
в пространство адресов ввода-вывода ЦП и позволяет  вам проверить
содержимое  регистров ввода-вывода и записать в них значения. При
этом выводится меню, показанное ниже:

                 ЪДДДДДДДДДДДДї
                 і In byte    і    Ввести байт
                 і Out byte   і    Вывести байт
                 і Read byte  і    Прочитать байт
                 і Write byte і    Записать байт
                 АДДДДДДДДДДДДЩ

                       Команда In Byte
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда In Byte (Ввести байт) считывает байт из адреса ввода
-вывода.  Вам будет выведена подсказка для ввода адреса ввода-вы-
вода,  значение которого вы хотите проверить.  Для считывания  из
адреса ввода-вывода значения размером в слово используйте команду
Read word (Считать слово).

                      Команда Out Byte
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Out Byte (Вывести байт) записывает байт по заданному
адресу ввода-вывода. Вам будет выведена подсказка для ввода адре-
са ввода-вывода и значение, которое вы хотите записать. Для запи-
си по адресу ввода-вывода значения размером в  слово  используйте
команду Read word (Считать слово).

                      Команда Read Word
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Read Word (Считать слово) считывает слово  из адреса
ввода-вывода. Вам будет выведена подсказка для ввода адреса ввода
-вывода, значение которого вы хотите проверить. Для считывания из
адреса  ввода-вывода значения размером в байт используйте команду
Read byte (Считать байт).

                     Команда Write Word
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Write  Word (Записать слово) записывает слово по ад-
ресу ввода-вывода.  Вам будет выведена подсказка для ввода адреса
ввода-вывода и значения, которое вы хотите записать. Для считыва-
ния из адреса ввода-вывода значения размером в  байт  используйте
команду Write byte (Считать байт).

     Обращаться к пространству адресов ввода-вывода, где находят-
ся такие контроллеры периферийных устройств,  как контроллер дис-
ка,  платы  последовательных портов и видеоадаптеры,  можно с по-
мощью инструкций Ассемблера IN и OUT.

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

                 Область регистров и флагов
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В области регистров (верхняя область справа от области кода)
выводится содержимое регистров центрального процессора.

     Верхней правой областью является область флагов, где показа-
но содержимое  восьми  флагов центрального процессора.  В области
флагов показано значение каждого флага ЦП.  Список различных фла-
гов и то, как они выводятся в области флагов, показан в следующей
таблице:
          ЪДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДї
          і   Буква в области   і     Название флага    і
          ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ
          і         c           і     Флаг переноса     і
          і         z           і     Флаг нуля         і
          і         s           і     Флаг знака        і
          і         o           і     Флаг переполнения і
          і         p           і     Флаг четности     і
          і         a           і     Флаг дополнитель- і
          і                     і      ного переноса    і
          і         i           і     Флаг разрешения   і
          і                     і      прерывания       і
          і         d           і     флаг направления  і
          АДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДЩ

              Локальное меню области регистров
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Для вывода локального меню области регистров нажмите клавиши
Alt-F10. Если разрешено использование сокращений с клавишей Ctrl,
то  нажатие клавиши Ctrl с первой буквой нужной команды может ис-
пользоваться для непосредственного доступа к команде.

                                   ЪДДДДДДДДДДДДДДДДДДДї
            Увеличение             і Increment         і
            Уменьшение             і Decrement         і
            Обнуление              і Zero              і
            Изменение              і Change...         і
            32-разрядные регистры  і Register 32-bit Noі
                                   АДДДДДДДДДДДДДДДДДДДЩ

                        Команда Increment
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Increment  (Увеличение)  добавляет  одно  значение к
подсвеченному в данный момент регистру.  Это позволяет легко исп-
равить небольшие ошибки в значении регистра.

                        Команда Decrement
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Decrement (Уменьшение) вычитает 1 из значения  подс-
веченного в данный момент регистра.

                          Команда Zero
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Zero (Ноль) обнуляет содержимое текущего (подсвечен-
ного) регистра.

                        Команда Change...
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Change   (Изменение)  изменяет  содержимое  текущего
(подсвеченного) регистра. Для ввода нового значения вам выводится
подсказка.  При вводе нового значения можно использовать средство
вычисления выражений.

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

                    Команда Registers 32-bit
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Registers 32-bit (32-разрядные регистры) позволяет с
вывода регистров ЦП,  как 16-разрядных значений, на 32-разрядные.
При работе на процессора 80386 вы обычно видите 32-разрядные  ре-
гистры (если только не использована данная команда для переключе-
ния на 16-разрядные регистры).  32-разрядные регистры  необходимы
только в том случае, если вы отлаживаете программу, в которой ис-
пользуются возможности 32-разрядной адресации процессора 386. Ес-
ли  вы  отлаживаете  обычную  программу,  в  которой используется
16-разрядная адресация,  можно выбрать вывод 16-разрядных регист-
ров.

                  Локальное меню области флагов
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Для вывода  локального  меню  области флагов нажмите клавиши
Alt-F10. Если разрешено использование сокращений с клавишей Ctrl,
то  нажатие клавиши Ctrl с первой буквой нужной команды может ис-
пользоваться для непосредственного доступа к команде.

                                   ЪДДДДДДДДї
              Переключение         і Toggle і
                                   АДДДДДДДДЩ

                         Команда Toggle
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Toggle (Переключение) устанавливает значение флага в
0,  если он был равен 1,  и в 1,  если он был равен 0. Значение 0
означает,  что флаг сброшен, а 1 - что он установлен. Для измене-
ния (инвертирования) значения текущего (подсвеченного) флага мож-
но также нажать клавишу Enter.

                      Область селектора
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

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

     Для допустимого селектора в области выводится следующее:

     - являются ли содержимым данные или код;

     - загружена ли область памяти, на которую ссылается селектор
       (присутствует в памяти) или разгружена (выведена на диск);

     - длина  сегмента  памяти,  на которую ссылается селектор (в
       байтах).

     Если селектор ссылается на сегмент данных, то имеется допол-
нительная информация по полномочиям доступа (Read/Write - Чтение/
Запись или Read only - только чтение)  и  направление  расширения
сегмента в памяти (Up - вверх или Down - вниз).

                Локальное меню области селектора
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Для вывода локального меню в области селектора нажмите  кла-
виши Alt-F10, или, если разрешено использование сокращений с кла-
вишей Ctrl, для доступа к нужной команды используйте клавишу Ctrl
с подсвеченной буквой команды.

                                   ЪДДДДДДДДДДДДї
              Селектор             і Selector   і
              Проверка             і Examine... і
                                   АДДДДДДДДДДДДЩ

     Локальное меню области селектора вы можете  использовать для
перехода к  новому селектору (команда Selector) или просмотра со-
держимого селектора,  который подсвечен в данный момент в области
селектора (команда Examine).  Содержимое выводится в области кода
или в области данных, в зависимости от его характера.

                        Команда Selector
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данная команда  выводит  вам  подсказку для ввода селектора,
который нужно вывести в области.  Для ввода селектора  вы  можете
использовать полный синтаксис выражений. Если вы вводите числовое
значение, то TDW подразумевает,  что оно десятичное (если  вы  не
используете синтаксис текущего языка для указания того,  что зна-
чение является шестнадцатиричным).

     Например, если текущим языком является язык  Си,  вы  можете
ввести шестнадцатиричное  значение  селектора  7F  как Ox7F.  Для
Паскаля вы могли бы ввести его как 7F.  Чтобы перейти к селектору
7F, можно было бы также ввести десятичное значение 127.

     Другим методом  ввода значения селектора является вывод окна
CPU и проверка содержимого сегментных регистров. Если регистр со-
держит интересующий вас селектор, то вы можете ввести имя регист-
ра с предшествующим символом подчеркивания (_).  Например, вы мо-
жете задать имя сегментного регистра данных, как _DS.

                         Команда Examine
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Examine (Проверка) выводит содержимое области  памя-
ти,  на которую ссылается текущий селектор, и переключается в об-
ласть,  где выводится содержимое. Если селектор указывает на сег-
мент   кода,   то  содержимое  выводится  в  области  кода.  Если
содержимое представляет собой данные,  то оно выводится в области
данных.

                       Область данных
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

     Далее в области выводится непосредственное содержимое одного
или более элементов данных. Формат этой области зависит от режима
вывода,  выбранного  с помощью команды локального меню Display As
(Вывести как...).  Если вы выбираете один из  форматов  вывода  с
плавающей точкой (Copm,  Float,  Double,  Extended), то на каждой
строке выводится одно число с плавающей точкой. При байтовом фор-
мате на одной строке выводится 8 байт, в формате размером в слово
(Word) - 4 слова на строку,  а в длинном  формате  (Long)  -  два
длинных слова на строку.

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

     Число байт,  выводимых  на  каждой строке бывает различным и
зависит от формата, заданного к команде Display As.

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

                Локальное меню области данных
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Для вывода  локального  меню  области данных нажмите клавиши
Alt-F10. Если разрешено использование сокращений с клавишей Ctrl,
то  нажатие клавиши Ctrl с первой буквой нужной команды может ис-
пользоваться для непосредственного доступа к команде.

               ЪДДДДДДДДДДДДДДДДї
               і Goto           і  Переход
               і Search         і  Поиск
               і Next           і  Следующая
               і Change         і  Изменение
               і Follow        >і  Следовать
               і Previous       і  Предыдущий
               ГДДДДДДДДДДДДДДДДґ
               і Display as    >і  Вывести как...
               і Block         >і  Блок
               АДДДДДДДДДДДДДДДДЩ

                          Команда Goto
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Goto (Переход) позиционирует вас на адрес  в данных.
Введите  новый  адрес,  на  который вы хотите перейти.  Вы можете
ввести внутренний адрес DOS,  адрес,  расположенный в резидентных
утилитах  или  вне  вашей программы,  что позволяет вам проверить
данные в базовой системе ввода-вывода.  Полное описание ввода ад-
ресов содержится в Главе 9.

                         Команда Search
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Search (Поиск) выполняет поиск строки символов,  на-
чиная с текущего адреса памяти, указанного позицией курсора. Вве-
дите список байт для поиска.  При достижении конца сегмента поиск
не будет автоматически возобновляться с его начала.

     Подробнее о списках байт рассказывается в Главе 9.

                          Команда Next
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Next  (Следующий) выполняет поиск следующего вхожде-
ния списка  байт,  который  вы задали ранее в команде Search (По-
иск).

                        Команда Change...
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Change (Изменение) позволяет изменять байты по теку-
щему месту расположения курсора. Если содержимое выводится в коде
ASCII  или  в байтовом формате,  то выводится подсказка для ввода
списка байт.  В противном случае запрашивается элемент, соответс-
твующий текущему формату вывода.  Полное описание списка байт со-
держится в Главе 9.

     Эту команду можно вызвать также, если просто начать набирать
новое значение или значения. Когда вы делаете это, выводится окно
подсказки (как при использовании команды Change).

                         Команда Follow
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     По данной команде выводится следующее локальное меню:

                          ЪДДДДДДДДДДДДДДДДДДДДДДДДДї
        Ближний код       і Near code               і
        Дальний код       і Far code                і
                          ГДДДДДДДДДДДДДДДДДДДДДДДДДґ
        Смещение данных   і Offset to data          і
        Сегмент:смещение  і Cegment:offset to data  і
        Базовый сегмент   і Base segment:0 to data  і
                          АДДДДДДДДДДДДДДДДДДДДДДДДДЩ

                        Команда Near Code
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                        Команда Far Code
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данная команда интерпретирует двойное слово под  курсором  в
области данных, как адрес дальнего типа (сегмент и смещение). Об-
ласть кода становится текущей и позиционируется на данный адрес.

                    Команда Offset to Data
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                 Команда Segment:Offset to Data
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                 Команда Base Segment:0 to Data
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

         Команда Previous локального меню области данных
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Previous (Предыдущий) восстанавливает  адрес области
данных в адрес, который был до последней команды, явно изменившей
значение текущего адреса.  Использование клавиш стрелок и  клавиш
PgUp и PgDn не приводит к запоминанию позиции.

     Турбо отладчик  поддерживает стек из пяти последних адресов,
поэтому вы можете вернуться назад после многократного (<  5)  ис-
пользования команд локального меню Follow, или команды Goto.

                       Команда Display As
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Display  As (Режим вывода) позволяет выбирать формат
вывода в области данных. Вы можете выбирать один из форматов дан-
ных,  использующихся в языке Си, Паскале или Ассемблере. Эти фор-
маты можно выбрать из меню:

                               ЪДДДДДДДДДДї
       Байт                    і Byte     і
       Слово                   і Word     і
       Длинный тип             і Long     і
       Сложный тип             і Comp     і
       С плавающей точкой      і Float    і
       Вещественный            і Real     і
       С удвоенной точностью   і Double   і
       С расширенной точностью і Extended і
                               АДДДДДДДДДДЩ

                          Команда Byte
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Byte (Байт) устанавливает область данных в режим вы-
вода шестнадцатиричных  байтовых  данных.  Это соответствует типу
данных char в языке Си и типу byte в Паскале.

                          Команда Word
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Word  (Слово)  устанавливает  область данных в режим
вывода шестнадцатиричных слов.  Это соответствует типу данных int
в языке Си и типу word в Паскале.
                          Команда Long
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Long (Длинный) устанавливает область данных  в режим
вывода длинных  шестнадцатиричных целых чисел.  Это соответствует
типу данных long в языке Си и типу longint в Паскале.

                          Команда Comp
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Comp  (Cложный) устанавливает область данных в режим
вывода 8-байтовых целых чисел. Выводится десятичное значение чис-
ла. Это соответствует типу данных comp в Паскале (формат IEEE).

                          Команда Float
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Float (C  плавающей  точкой)  устанавливает  область
данных в режим вывода 6-байтовых чисел с плавающей точкой.  Выво-
дится значение числа с плавающей точкой в  научном представлении.
Это соответствует вещественному типу данных (real) в Паскале.

                         Команда Double
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Double (C двойной точностью)  устанавливает  область
данных в режим вывода 8-байтовых чисел с плавающей точкой.  Выво-
дится значение числа с плавающей точкой в  научном представлении.
Это соответствует типу данных с двойной точностью (double) в язы-
ке Си.
                        Команда Extended
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Extended (C расширенной точностью) устанавливает об-
ласть данных в режим вывода 10-байтовых чисел с плавающей точкой.
Выводится значение числа с плавающей точкой в научном представле-
нии. Это внутренний формат, используемый в сопроцессоре 80х87. Он
соответствует также типу длинных данных с двойной точностью (long
double) в языке Си и типу с расширенной  точностью  (extended)  в
Паскале.

                          Команда Block
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Block  (Блок) позволяет вам работать с блоками памя-
ти.  Вы можете перемещать,  очищать,  присваивать значения блокам
памяти,  а также записывать и считывать блоки памяти из файлов на
диске. По данной команде на экран выводится всплывающее меню, по-
казанное ниже:

                 ЪДДДДДДДДДДДї
                 і Clear...  і   Очистка
                 і Move...   і   Перемещение
                 і Set...    і   Установка
                 і Read...   і   Чтение
                 і Write...  і   Запись
                 АДДДДДДДДДДДЩ

                          Команда Clear
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Clear (Очистка) устанавливает непрерывный блок в па-
мяти в  значение 0.  Адрес блока и число байт,  которые требуется
очистить, запрашиваются в выводимой подсказке.

                          Команда Move
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Move  (Перемещение)  копирует  блок памяти из одного
адреса в другой. Адреса исходного и целевого блока, а также число
копируемых байт, будут запрашиваться в выводимой подсказке.

                           Команда Set
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Set  (Присваивание) присваивает непрерывному блоку в
памяти конкретное байтовое значение. Адрес блока, число байт, ко-
торым требуется присвоить значение,  а также само значение запра-
шиваются в выводимой подсказке.

                          Команда Read
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
     Команда Read (Cчитывание) считывает все содержимое или часть
файла  в  блок  памяти.  Вам сначала будет выведена подсказка для
ввода имени считываемого файла, затем адреса, куда требуется счи-
тать информацию, и числа считываемых байт.

                          Команда Write
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
     Команда Write (Запись) записывает блок памяти  в  файл.  Вам
сначала будет выведена подсказка для ввода имени файла, куда тре-
буется записать данные,  затем блока памяти,  который нужно запи-
сать, и числа считываемых байт.

                        Область стека
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В области стека (в нижнем правом углу окна CPU) показано со-
держимое стека.

                          Область стека
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В области стека для вывода локального меню  нажмите  клавиши
Alt-F10. Если разрешено использование сокращений с клавишей Ctrl,
то нажатие клавиши Ctrl с первой буквой нужной команды может  ис-
пользоваться  для непосредственного доступа к команде данного ло-
кального меню.

                                     ЪДДДДДДДДДї
             Переход                 іGoto...  і
             Начало                  іOrigin   і
             Следующий               іFollow   і
             Предыдущий              іPrevious і
             Изменение               іChange...і
                                     АДДДДДДДДДЩ

                         Команда Goto...
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Goto  (Переход)  позиционирует вас на адрес в стеке.
Введите новый адрес стека.  При желании вы можете  ввести  адрес,
выходящий  за  пределы  стека программы,  хотя для проверки любых
данных вне программы используется обычно область  данных.  Полное
описание ввода адресов содержится в Главе 9.

     Команда Previous  (Предыдущий) восстанавливает область стека
в то состояние (позицию), которое она имела до выполнения команды
Goto.

                         Команда Origin
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Origin (Начало) позиционирует вас на слово  в стеке,
указанное текущим (подсвеченным) словом. Это полезно использовать
для обратного отслеживания изменения границ стека при  возврате в
вызывающую функцию.

     Команда Previous  (Предыдущий) восстанавливает область стека
в то состояние (позицию), которое она имела до выполнения команды
Origin.

                         Команда Follow
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

     Команда Previous  (Предыдущий) восстанавливает область стека
в то состояние (позицию), которое она имела до выполнения команды
Follow.

                        Команда Previous
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Previous (Предыдущий) восстанавливает позицию облас-
ти стека в соответствии с адресом перед последней командой, кото-
рая явно изменила выводимый адрес. Использование клавиш перемеще-
ния  (стрелок) или PgUp и PgDn не приводит к запоминанию позиции.

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

                        Команда Change...
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Change (Изменение) позволяет вам ввести новое значе-
ние для текущего (подсвеченного) слова в  стеке.  Данную  команду
можно  вызвать  также,  если просто начать вводить новое значение
для подсвеченной записи в стеке.  Когда вы это делаете, выводится
окно подсказки (как и при использовании команды Change).

                          Ассемблер
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Турбо отладчик  позволяет вам ассемблировать инструкции про-
цессоров 8086,  80186 и 80286, а также арифметических сопроцессо-
ров 8087, 80287 и 80387.

     Когда для   модификации  программы  используется  встроенный
(внутренний) ассемблер Турбо отладчика, внесенные в нее изменения
не  являются постоянными.  Если вы перезагрузите свою программу с
помощью команд RunіProgram Reset (ВыполнениеіСброс программы) или
загрузите другую программу с помощью команды FileіOpen (ФайліОтк-
рыть), то все сделанные вами изменения будут потеряны.

     Обычно Ассемблер  используется  для  проверки   правильности
предположений  о коррекции программы.  После того,  как вы убеди-
тесь,  что при изменениях программа работает правильно, нужно из-
менить  исходный  код и перекомпилировать и перекомпоновать прог-
рамму.

     В следующих разделах описываются различия  между  встроенным
Ассемблером и синтаксисом, воспринимаемым Турбо Ассемблером.

           Переопределения размера адреса операнда
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Для вызовов (CALL) инструкции перехода  (JMP)  и  инструкций
условного перехода (JNE,  JL, и т.д.) Ассемблер автоматически ге-
нерирует наименьшую инструкцию,  с помощью которой можно  достичь
целевого адреса. Перед целевым адресом, чтобы ассемблировать инс-
трукцию с заданным размером,  можно использовать  переопределения
NEAR (ближний) и FAR (дальний). Например:

        CALL    FAR XYZ
        JMP     NEAR    A1

             Память и непосредственные операнды
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Когда вы  используете  в своей программе идентификатор в ка-
честве операнда инструкции, нужно указать встроенному Ассемблеру,
имеете ли вы в виду содержимое идентификатора или его адрес. Если
вы используете просто имя идентификатора,  то Ассемблер интерпре-
тирует его,  как адрес (как если бы перед ним использовалась опе-
рация Ассемблера OFFSET).  Если идентификатор заключается в квад-
ратные  скобки,  то  он  будет означать ссылку на память.  Если в
вашей программе содержится определение данных:

        A       DW      4

вы можете ссылаться на содержимое идентификатора  A, ассемблируя:
с помощью [A].

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

        mov     dx,A
        mov     ax,[a]

     Для ссылки на адрес переменных можно  использовать  операцию
OFFSET:

     mov ax,offset a

         Переопределение размера данных в операндах
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

        BYTE PTR
        WORD PTR

     Приведем примеры  инструкций,  в  которых используются такие
переопределения:

        add     BYTE PTR[si],10
        mov     WORD PTR[bp+10],99

     Кроме этих  переопределений  при  ассемблировании инструкций
арифметических сопроцессором 8087і80287  вы  можете  использовать
следующие переопределения:

        DWORD PTR
        QWORD PTR
        TBYTE PTR

     Вот примеры таких переопределений:

        fild QWORD PTR[bx]
        stp  TBYTE PTR[bp+4]

                    Строковые инструкции
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     При ассемблировании  строковой  инструкции в самой мнемонике
инструкции нужно указать размер (байт  или  слово),  в  противном
случае  Ассемблер не воспримет такую мнемонику.  Например,  нужно
использовать мнемонику STOSW, а не STOS WORD PTR[DI].

                          Окно Dump
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В окне  Dupm  (Дамп)  выводится в непосредственном виде дамп
любой области памяти. Оно работает так же, как область данных ок-
на CPU (ЦП).

          ЙН[*]ННDumpНННННННННННННННННННН3ННННН[ ][ ]»
          є ds:0000 CD 20 00 A0 00 9A F0 FE = & U**  ^
          є ds:0008 1B 02 B2 01 22 31 7C 01 <.^%і.`  І
          є ds:0010 22 31 88 02 52 2B E2 1D vX4-#  ±
          є ds:0018 01 01 01 00 03 FF FF FF         v
          И<І±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±>Ѕ

     Рис. 11.2 Окно Dump

     Описание содержимого  и локального меню для данного окна со-
держится ранее в разделе "Локальное меню области данных".

     Обычно это окно приходится использовать при отладке програм-
мы на Ассемблере на уровне исходного кода,  когда вы хотите прос-
мотреть (на нижнем уровне),  как выглядят некоторые области  дан-
ных. Для  создания  окна  Dump  (Дамп) можно использовать команду
ViewіDump (ОбзоріДамп).

     Вы можете также использовать данное окно,  находясь  в  окне
Inspector (Проверка), когда нужно в непосредственном виде увидеть
байты проверяемого объекта. Для получения окна Dump, позициониро-
ванного   на   данные   в  окне  Inspector,  используйте  команду
ViewіDump (ОбзоріДамп).

                       Окно Registers
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В окне Registers (Регистры) выводится содержимое регистров и
флагов центрального процессора.  оно работает,  как сочетание об-
ластей регистров и флагов в окне CPU (ЦП).

                     ЙН[*]ННRegsННН3Н[ ][ ]»
                     є ax 0000       і c=0 є
                     є bx 0000       і z=0 є
                     є cx 0000       і s=0 є
                     є dx 0000       і o=0 є
                     є si 0000       і p=0 є
                     є di 0000       і a=0 є
                     є bp 0000       і i=1 є
                     є sp 2FFF       і d=0 є
                     є ds 61AF       і     є
                     є es 61AF       і     є
                     є ss 668F       і     є
                     є cs 618F       і     є
                     є ip 084E       і     є
                     ИНННННННННННННННННННННЅ

     Рис. 11.3 Окно Registers

     Описание содержимого  и  локальных меню для этого окна можно
найти в разделе "Локальное меню области регистров".

     Используйте данное окно,  когда при отладке на уровне исход-
ного  кода программы на Ассемблере вы хотите просмотреть содержи-
мое регистров.  Вы можете сократить размер окна Module (Модуль) и
поместить рядом с ним окно Registers.

          Примечание: Вы  можете  уменьшить  размер окна Module и
     вывести наряду с ним окно Registers (Регистры).

           Глава 12. Сопроцессор 80х87 и эмулятор
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Если в вашей программе используются числа с  плавающей  точ-
кой,  Турбо отладчик позволяет вам проверять и изменять состояние
арифметического сопроцессора или программного  эмулятора.  Данная
глава предназначена для программистов,  которые знакомы с работой
арифметического сопроцессора 80х87. Для отладки программ, которые
работают с числами с плавающей точкой, вам не обязательно исполь-
зовать возможности,  описанные в данной главе,  однако  некоторые
трудноуловимые ошибки найти будет легче.

     В данной главе мы обсудим различия между платой сопроцессора
80х87  и  программным  эмулятором.  Мы  также опишем окно Numeric
Processor (Арифметический сопроцессор) и покажем вам,  как  можно
проверять  и модифицировать содержимое регистров с плавающей точ-
кой, биты состояния и управления.

          Примечание: Данная  глава предназначена для программис-
     тов, которые знакомы с операциями сопроцессоров серии 80х87.

               Сопроцессор 80х87 или эмулятор?
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

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

                   Окно Numeric Processor
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Окно Numeric Processor  (Арифметический  сопроцессор)  можно
создать  с  помощью команды основного меню ViewіNumeric Processor
(ОбзоріАрифметический сопроцессор). В строке в верхней части окна
выводятся  текущий  указатель инструкций,  указатель данных и код
операции для инструкции.  Указатель данных и указатель инструкций
выводятся в виде 20-разрядных физических адресов. Эти адреса мож-
но преобразовать в форму  "сегмент:смещение",  если  использовать
первые 4 цифры,  как значение сегмента,  а последние 4 цифры, как
значение смещения.

     Например, если в верхней части  окна  выводится  IPTR=5A669,
это можно рассматривать,  как адрес 5a66:9 (если вы хотите прове-
рить текущие данные и инструкцию в окне CPU (ЦП)).  Это окно  со-
держит три области: в левой области (области регистров) выводится

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

         Й[*]НEmulator IPTR=000000 OPCODE=000 OPTR=00003Н[ ][ ]»
         єEmpty ST(0)                            і im=0 і ie=0 є
         єEmpty ST(1)                            і dm=0 і de=0 є
         єEmpty ST(2)                            і zm=0 і ze=0 є
         єEmpty ST(3)                            і om=0 і oe=0 є
         єEmpty ST(4)                            і um=1 і ue=0 є
         єEmpty ST(5)                            і pm=1 і pe=0 є
         єEmpty ST(6)                            іiem=0 і ir=0 є
         єEmpty ST(7)                            і pc=3 і cc=9 є
         є                                       і rc=0 і st=2 є
         є                                       і ic=1 і      є
         И<І±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±>ЩНННННННННННННЅ

     Рис. 12.1 Окно Numeric Processor

     В верхней  части окна (первая строка) выводится информация о
последней выполненной операции с плавающей точкой:

     - Emulator показывает, что арифметический сопроцессор эмули-
       руется.   При наличии арифметического  сопроцессора вместо
       этого индикатора  появляется  индикатор  8087,  80287  или
       80387.

     - IPTR показывает 20-разрядный физический адрес, из которого
       была извлечена последняя инструкция с плавающей точкой.

     - OPCODE показывает тип извлеченной инструкции. OPTR показы-
       вает  20-разрядный  адрес в памяти,  на который инструкция
       ссылается (если он имеется).

                      Область регистров
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

            80-разрядные регистры с плавающей точкой
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В области регистров показан каждый (от ST(0)  до  ST(7))  из
регистров с плавающей точкой и его состояние (valid/zero/special/
empty - допустимое/нулевое/специальное/пустое). Содержимо  выво-
дится в виде 80-разрядных чисел с плавающей точкой.

     Если вы  переключили  окно  Numeric Processor (нажав клавишу
F5) или расширили его с  помощью  команды  WindowіSize/Move  (Ок-
ноіРазмер/Перемещение),  вы также увидите непосредственное содер-
жимое регистров с плавающей точкой,  выведенное в виде шестнадца-
тиричных байтовых значений.

              Локальное меню области регистров
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Чтобы вывести локальное меню области регистров, нажмите кла-
виши Alt-F10,  или для непосредственного доступа к  команде  меню
используйте клавишу Ctrl вместе с первой буквой имени команды.

                 ЪДДДДДДДДДДДДї
                 і Zero       і   Обнуление
                 і Empty      і   Пусто
                 і Change...  і   Изменение
                 АДДДДДДДДДДДДЩ

                          Команда Zero
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Zero  (Обнуление)  устанавливает текущий (подсвечен-
ный) регистр в значение 0.

                          Команда Empty
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                         Команда Change
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Change (Изменение) загружает в  текущий  (подсвечен-
ный)  регистр новое значение.  Допускается вводить целое значение
или значение с плавающей точкой.  Введенное вами  значение  будет
преобразовано  во  временный 80-битовый вещественный формат,  ис-
пользуемый арифметическим сопроцессором.

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

                     Область управления
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                         Биты управления
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

ЪДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Название в области     і                     Описание флага  і
ГДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і         im             і Маска недопустимой операции         і
і         dm             і Маска ненормализованной операции    і
і         zm             і Маска деления на нуль               і
і         om             і Маска переполнения                  і
і         um             і Маска потери значимости             і
і         pm             і Маска точности                      і
і         iem            і Маска разрешения прерывания (только і
і                        і для сопроцессора 8087)              і
і         pc             і Управление точностью                і
і         rc             і Управление округлением              і
і         ic             і Контроль бесконечности              і
АДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

              Локальное меню области управления
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Для перемещения в область управления  нажмите  клавишу  Tab,
затем  для получения локального меню нажмите клавиши Alt-F10. (Вы
можете также использовать клавишу Ctrl вместе с первой буквой ко-
манды, что позволяет получить непосредственный доступ к команде.)

                                        ЪДДДДДДДДї
                    Переключение        і Toggle і
                                        АДДДДДДДДЩ

                         Команда Toggle
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Toggle  (Переключение) позволяет циклически переклю-
чать значение текущего (подсвеченного) управляющего флага. Значе-
ния большинства флагов могут быть только установлены или сброшены
(принимать значения 1 или 0), поэтому данная команда будет перек-
лючать флаг в другое значение.  Однако некоторые другие флаги мо-
гут принимать больше значений.  Для таких флагов  данная  команда
будет  увеличивать значение флага,  пока не будет получено макси-
мальное значение, затем снова установит флаг в значение 0.

     Состояние управляющих флагов можно также переключать,  нажи-
мая клавишу Enter.

                      Область состояния
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                         Биты состояния
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

      ЪДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
      і  Название в области   і         Описание флага       і
      ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
      і        ie             і   Недопустимая операция      і
      і        de             і   Ненормализованный операнд  і
      і        ze             і   Деление на нуль            і
      і        oe             і   Переполнение               і
      і        ue             і   Потеря значимости          і
      і        pe             і   Точность                   і
      і        ir             і   Запрос прерывания          і
      і        cc             і   Код состояния              і
      і        st             і   Указатель вершины стека    і
      АДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

              Локальное меню области состояния
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Для перемещения в область состояния нажмите клавишу Tab, за-
тем для вывода локального меню нажмите клавиши Alt-F10. (Вы може-
те  также использовать клавишу Ctrl вместе с первой буквой коман-
ды,  что позволяет  получить  непосредственный  доступ  к  нужной
команде.)

                                               ЪДДДДДДДДї
                             Переключение      і Toggle і
                                               АДДДДДДДДЩ

                         Команда Toggle
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Команда Toggle (Переключение) позволяет циклически  переклю-
чать  значение текущего (подсвеченного) флага состояния. Значения
большинства флагов могут быть  только  установлены  или  сброшены
(принимать значения 1 или 0), поэтому данная команда будет перек-
лючать флаг в другое значение.  Однако некоторые другие флаги мо-
гут  принимать  больше значений.  Для таких флагов данная команда
будет увеличивать значение флага,  пока не будет получено  макси-
мальное значение, затем снова установит флаг в значение 0.

     Состояние флагов  можно  также переключать,  нажимая клавишу
Enter.

              Глава 13. Команды Турбо отладчика
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

     - все  команды,  выполняющиеся  при  нажатии одной из клавиш
       (функциональной или другой клавиши);

     - все команды основного меню и команды  локальных  меню  для
       каждого типа окна;

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

     - клавиши перемещения и изменения размера окон.

                     Оперативные клавиши
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Оперативная клавиша - это клавиша, которая выполняет опреде-
ленное действие вне зависимости от вашего положения в среде Турбо
отладчика TDW.  Список всех оперативных клавиш приведен в Таблице
13.1.

   Функциональная клавиша и соответствующая команда  Таблица 13.1
ЪДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
іКлавиша  іКоманда меню          іФункция                       і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
іF1       і                      іВыводит на  экран  контекстно-і
і         і                      ізависимую справочную  информа-і
і         і                      іцию.                          і
і         і                      і                              і
іF2       іBreakpointsіToggle    іУстанавливает в позиции курсо-і
і         і(Точки остановаіПе-   іра точку останова.            і
і         іреключение)           і                              і
і         і                      і                              і
іF3       іViewіModule (Обзорі   іВыводит список для выбора  мо-і
і         іМодуль)               ідуля.                         і
і         і                      і                              і
іF4       іRunіGo to Cursor      іВыполняет программу до позицииі
і         і(ВыполнениеіПереход   ікурсора.                      і
і         ік курсору)            і                              і
і         і                      і                              і
іF5       іWindowіZoom (Окноі    іПереключает текущее окно.     і
і         іПереключение)         і                              і
і         і                      і                              і
іF6       іWindowіNext Window    іВыполняет переход к следующемуі
і         і(ОкноіСледующее окно) іокну.                         і
і         і                      і                              і
іF7       іRunіTrace Into        іВыполняет одну исходную строкуі
і         і(ВыполнениеіТрасси-   іили инструкцию.               і
і         іровка вглубь)         і                              і
і         і                      і                              і
іF8       іRunіStep Over (Вы-    іВыполняет одну исходную строкуі
і         і(полнениеіШаг)        іили инструкцию, пропуская  вы-і
і         і                      ізовы.                         і
і         і                      і                              і
іF9       іRunіRun (Выполне-     іВыполняет программу.          і
і         іниеіВыполнение)       і                              і
і         і                      і                              і
іF10      і                      іВызывает основное меню и пере-і
і         і                      іводит вас в него.             і
і         і                      і                              і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і         і                      і                              і
іAlt-F1   іHelpіPrevious Topic   іВыводит   последний  экран  соі
і         і(CправкаіПредыдущая   ісправочной информацией.       і
і         ітема)                 і                              і
і         і                      і                              і
іAlt-F2   іBreakpointsіAt        іУстанавливает  точку  остановаі
і         і(Точка остановаіНа...)іпо заданному адресу.          і
і         і                      і                              і
іAlt-F3   іWindowіClose (Окноі   іЗакрывает текущее окно.       і
і         іЗакрытие)             і                              і
і         і                      і                              і
іAlt-F4   іRunіBack Trace (Вы-   іВыполняет программу "в  обрат-і
і         інениеіОбратная трас-  іном направлении".             і
і         ісировка)              і                              і
і         і                      і                              і
іAlt-F5   іWindowіUser Screen    іПоказывает экран вывода  прог-і
і         і(ОбзоріЭкран поль-    іраммы.                        і
і         ізователя)             і                              і
і         і                      і                              і
іAlt-F6   іWindowіUndo Close     іВновь открывает последнее зак-і
і         і(ОкноіОтменить за-    ірытое окно.                   і
і         ікрытие)               і                              і
і         і                      і                              і
іAlt-F7   іRunіInstruction trace іВыполняет одну инструкцию.    і
і         і(ВыполнениеіТрасси-   і                              і
і         іровка инструкции)     і                              і
і         і                      і                              і
іAlt-F8   іRunіUntil Return (Вы- іВыполняет программу до возвра-і
і         іполнениеіДо возврата) іта управления из функции.     і
і         і                      і                              і
іAlt-F9   іRunіExecute To (Выпол-іВыполняет программу до  задан-і
і         інениеіВыполнение      іного адреса.                  і
і         ідо...)                і                              і
і         і                      і                              і
іAlt-F10  і                      іВызывает локальное меню окна. і
і         і                      і                              і
іAlt-1-9  і                      іПереводит вас в окно с  задан-і
і         і                      іным номером (1 - 9).          і
і         і                      і                              і
іAlt-     і                      іПереводит вас в системное  ме-і
і пробел  і                      іню.                           і
і         і                      і                              і
іAlt-B    і                      іПереводит  в  меню Breakpointsі
і         і                      і(Точки останова).             і
і         і                      і                              і
іAlt-D    і                      іПереводит   вас  в  меню  Dataі
і         і                      і(Данные).                     і
і         і                      і                              і
іAlt-F    і                      іПереводит  вас  в  меню   Fileі
і         і                      і(Файл).                       і
і         і                      і                              і
іAlt-H    і                      іПереводит   вас  в  меню  Helpі
і         і                      і(Cправка).                    і
і         і                      і                              і
іAlt-O    і                      іПереводит вас в  меню  Optionsі
і         і                      і(Параметры).                  і
і         і                      і                              і
іAlt-R    і                      іПереводит вас в меню  Run (Вы-і
і         і                      іполнение).                    і
і         і                      і                              і
іAlt-V    і                      іПереводит   вас  в  меню  Viewі
і         і                      і(Обзор).                      і
і         і                      і                              і
іAlt-W    і                      іПереводит  вас  в  меню Windowі
і         і                      і(Окно).                       і
і         і                      і                              і
іAlt-X    і                      іВыполняет выход из  Турбо  от-і
і         і                      іладчика  и  возвращает  вас  ві
і         і                      іDOS.                          і
і         і                      і                              і
іAlt-=    іOptionsіMacrosіCreate іОпределяет клавиатурную макро-і
і         і(ПараметрыіМакроко-   ікоманду.                      і
і         імандыіСоздание)       і                              і
і         і                      і                              і
іAlt-минусіOptionsіMacrosіStop   іЗаканчивает запись макрокоман-і
і         іRecording (Параметрыі іды.                           і
і         іМакрокомандыіОстано-  і                              і
і         івить запись)          і                              і
і         і                      і                              і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
іCtrl-F2  іRunіProgram Reset     іОстанавливает сеанс  отладки иі
і         і(ВыполнениеіСброс     ісбрасывает состояние программыі
і         іпрограммы)            ідля повторного выполнения.    і
і         і                      і                              і
іCtrl-F4  іDataіEvaluate (Дан-   іВычисляет выражение.          і
і         іныеіВычисление)       і                              і
і         і                      і                              і
іCtrl-F5  іWindowіSize/Move      іИнициализирует перемещение илиі
і         і(ОкноіРазмен/Переме-  іизменение размера окна.       і
і         іщение)                і                              і
і         і                      і                              і
іCtrl-F7  іDataіAdd Watch (Дан-  іДобавляет  переменную  в  окноі
і         іныеіДобавить выражениеіпросмотра (Watch).            і
і         іпросмотра)            і                              і
і         і                      і                              і
іCtrl-F8  іBreakpointsіToggle    іПереключает   состояние  точкиі
і         і(Точка остановаіПере- ів месте расположения курсора. і
і         іключение)             і                              і
і         і                      і                              і
іCtrl-F9  іRunіRun (Выполнениеі  іЗапускает программу на  выпол-і
і         іВыполнение)           інение.                        і
і         і                      і                              і
іCtrl-F10 і                      іВызывает локальное меню окна. і
і         і                      і                              і
іCtrl-Д>  і                      іСдвигает начальный адрес в об-і
і         і                      іласти кода, данных  или  стекаі
і         і                      іокна CPU (ЦП) на 1 байт вверх.і
і         і                      і                              і
іCtrl-<-  і                      іСдвигает начальный адрес в об-і
і         і                      іласти кода, данных  или  стекаі
і         і                      іокна CPU (ЦП) на 1 байт вниз. і
і         і                      і                              і
іCtrl-A   і                      іПеремещение к предыдущему сло-і
і         і                      іву.                           і
і         і                      і                              і
іCtrl-C   і                      і"Прокручивает" вниз  один  эк-і
і         і                      іран.                          і
і         і                      і                              і
іCtrl-D   і                      іПеремещает вправо на одну  по-і
і         і                      ізицию.                        і
і         і                      і                              і
іCtrl-E   і                      іПеремещает вверх на одну стро-і
і         і                      іку.                           і
і         і                      і                              і
іCtrl-F   і                      іПеремещает к следующему слову.і
і         і                      і                              і
іCtrl-R   і                      і"Прокручивает" вверх  на  одині
і         і                      іэкран.                        і
і         і                      і                              і
іCtrl-S   і                      іПеремещает влево на одну пози-і
і         і                      іцию.                          і
і         і                      і                              і
іCtrl-X   і                      іПеремещает вниз на одну  стро-і
і         і                      іку.                           і
і         і                      і                              і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
іShift-F1 іHelpіIndex            іПереходит к оглавлению  опера-і
і         і                      ітивного справочника.          і
і         і                      і                              і
іShift-Tabі                      іПереводит курсор в  предыдущуюі
і         і                      іобласть окна или элемент.     і
і         і                      і                              і
іShift--> і                      іПеремещает курсор между облас-і
і         і                      ітями.                         і
і         і                      і                              і
іShift-<- і                      іПеремещает курсор между облас-і
і         і                      ітями в окне  в соответствии  сі
іShift-v  і                      інаправлениями стрелок (областьі
і         і                      ів направлении  стрелки  стано-і
іShift-^  і                      івится текущей областью).      і
і         і                      і                              і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
іEsc      і                      іЗакрывает окно проверки  (Ins-і
і         і                      іpector), выводит вас из меню. і
і         і                      і                              і
іIns      і                      іНачинает выборку блока  текстаі
і         і                      і(подсветку).  Используйте кла-і
і         і                      івиши   управления     курсоромі
і         і                      і(стрелки).                    і
і         і                      і                              і
іTab      іWindowіNext Pane      іПеремещает курсор к  следующейі
і         і(ОкноіСледующая       іобласти окна или к  следующемуі
і         іобласть)              іэлементу диалогового окна.    і
АДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

            Команды, доступные из основного меню
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Основное меню  (строку меню) можно вызвать с помощью клавиши
F10. После этого вы можете перейти на одно из меню:

     - переместив курсор на заголовок меню и нажав клавишу Enter;

     - нажав первую буквы подсвеченного элемента (пункта) меню.

     Кроме того, можно открыть меню непосредственно (не перемеща-
ясь сначала к заголовку меню),  нажав клавишу Alt в  сочетании  с
первой буквой имени нужного меню.

                   Меню Ё (системное меню)
ЪДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                       і                                       і
іRepaint Desktop        іПовторно выводит весь экран.           і
і(Изобразить экран)     і                                       і
і                       і                                       і
ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                       і                                       і
іRestore Standard       іВосстанавливает стандартную схему окон.і
і(Восстановить стандарт)і                                       і
і                       і                                       і
ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                       і                                       і
іAbout (О Турбо отлад-  іВыводит информацию о Турбо отладчике.  і
ічике)                  і                                       і
і                       і                                       і
АДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

                      Меню File (Файл)
ЪДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                     і                                         і
іOpen (Открытие)      і Открывает новую программу для отладки.  і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іChange Dir (Смена    і Выполняет переход на новый диск или в   і
ікаталога)            і новый каталог.                          і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іGet Info (Получение  і Выводит на экран информацию о программе.і
іинформации)          і                                         і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іResident (Резидент-  і Приводит к тому, что Турбо отладчик  за-і
іный)                 і вершит работу и останется резидентным  ві
і                     і памяти.                                 і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іSymbol Load (Загруз- і Загружает  таблицу  идентификаторов,    і
іка таблицы идентифи- і независимую от файла .EXE.              і
ікаторов)             і                                         і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іTable Relocate (Пе-  і Задает значение базового сегмента табли-і
іремещение таблицы)   і цы идентификаторов.                     і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іQuit (Выход)         і Возвращает вас в DOS.                   і
і                     і                                         і
АДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

                 Меню Edit (Редактирование)
ЪДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                       і                                       і
іCopy (Копирование)     іКопирует элемент в карман (Clipboard). і
і                       і                                       і
ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                       і                                       і
іPaste (Вставка)        іВставляет элемент из кармана в окно илиі
і                       ів диалоговую подсказку.                і
і                       і                                       і
ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                       і                                       і
іCopy to Log (Копирова- іКопирует подсвеченный элемент или эле- і
іние в окно Log)        імент в точке расположения курсора в    і
і                       іокно Log.                              і
і                       і                                       і
АДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

                      Меню View (Обзор)
ЪДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                    і                                          і
іBreakpoints (Точки  іПросмотр точек останова.                  і
іостанова)           і                                          і
і                    і                                          і
ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                    і                                          і
іStack (Стек)        іПросмотр стека вызовов функций.           і
і                    і                                          і
ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                    і                                          і
іLog (Регистрация)   іПросмотр журнала регистрации событий и    і
і                    іданных.                                   і
і                    і                                          і
ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                    і                                          і
іWatches (Выражения  іПросмотр наблюдаемых переменных.          і
іпросмотра)          і                                          і
і                    і                                          і
ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                    і                                          і
іVariables (Перемен- іПросмотр глобальных и локальных перемен-  і
іные)                іных.                                      і
і                    і                                          і
ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                    і                                          і
іModule (Модуль)     іПросмотр исходного модуля программы.      і
і                    і                                          і
ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                    і                                          і
іFile (Файл)         іПросмотр содержимого файла на диске в     і
і                    ікоде ASCII или в шестнадцатиричном виде.  і
і                    і                                          і
ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                    і                                          і
іCPU (ЦП)            іПросмотр инструкций, данных и стека       і
і                    іцентрального процессора.                  і
і                    і                                          і
ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                    і                                          і
іDump (Дамп)         іПросмотр дампа данных в непосредственном  і
і                    івиде.                                     і
і                    і                                          і
ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                    і                                          і
іRegisters (Регистры)іПросмотр регистров и флагов процессора.   і
і                    і                                          і
ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                    і                                          і
іNumeric Processor   іПросмотр сопроцессора или эмулятора.      і
і(Арифметический     і                                          і
ісопроцессор)        і                                          і
і                    і                                          і
ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                    і                                          і
іExecution History   іВыводит код Ассемблера, сохраненный для   і
і(Протокол выполне-  іобратной трассировки или повторного       і
іния)                івыполнения нажатий клавиш.                і
і                    і                                          і
ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                    і                                          і
іHierarchy (Иерархия)іВыводит список типов объектов или классов і
і                    іи дерево иерархии.                        і
і                    і                                          і
ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                    і                                          і
іWindows messages    іВыводит список сообщений Windows для      і
і(Cообщения Windows) іодного или более окон в вашей прикладной  і
і                    іпрограмме.                                і
і                    і                                          і
ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                    і                                          і
іClipboard (Карман)  іВыводит на экран окно Clipboard, в кото-  і
і                    іров вы можете видеть элементы, скопиро-   і
і                    іванные в буфер вырезанного изображения    і
і                    і(карман).                                 і
і                    і                                          і
ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                    і                                          і
іAnother (Другой...) і                                          і
і                    і                                          і
і        Module      іСоздает другое окно Module (Модуль).      і
і        Dump        іСоздает другое окно Dump (Дамп).          і
і        File        іСоздает другое окно File (Файл).          і
і                    і                                          і
АДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

                    Меню Run (Выполнение)
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                             і                                 і
іRun (Выполнение)             іЗапускает программу на выполнениеі
і                             і(без остановки).                 і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іGo To Cursor (Переход к      іВыполняет программу до текущего  і
ікурсору)                     іместа расположения курсора.      і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іTrace Into (Трассировка      іВыполняет одну строку исходного  і
івглубь)                      ікода или инструкцию.             і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іStep Over (Шаг с пропуском)  іВыполняет трассировку с пропускомі
і                             ітрассировки вызовов подпрограмм. і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іExecute To (Выполнение до...)іВыполняет программу до заданного і
і                             іадреса.                          і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іUntil Return (До возврата    іВыполняет программу до возврата  і
іуправления)                  іфункцией.                        і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іAnimate (Автоматизировать)   іНепрерывно выполняет программу поі
і                             ішагам.                           і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іBack Trace (Обратная трас-   іИзменяет порядок выполнения прог-і
ісировка)                     іраммы на обратный (по одной стро-і
і                             іке исходного  кода  или  инструк-і
і                             іции).                            і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іInstruction Trace (Трасси-   іВыполняет одну инструкцию.       і
іровка инструкций)            і                                 і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іArguments (Аргументы)        іВыполняет одну инструкцию.       і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іProgram Reset (Сброс програм-іВыполняет перезагрузку текущей   і
імы)                          іпрограммы.                       і
і                             і                                 і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

             Меню Breakpoints (Точки останова)
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                            і                                  і
іToggle (Переключение)       і Переключает состояние точки      і
і                            і останова в месте расположения    і
і                            і курсора.                         і
і                            і                                  і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                            і                                  і
іAt (На...)                  і Устанавливает по заданному адресуі
і                            і точку останова.                  і
і                            і                                  і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                            і                                  і
іChanged Memory Global       і Устанавливает глобальную точку   і
і(Изменение памяти (глоб.))  і для области памяти.              і
і                            і                                  і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                            і                                  і
іExpression True Global      і Устанавливает глобальную точку   і
і(Выражение истинно (глоб.)) і для выражения.                   і
і                            і                                  і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                            і                                  і
іDelete All (Удалить все)    і Удаляет все точки останова.      і
і                            і                                  і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

                     Меню Data (Данные)
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                             і                                 і
іInspect (Проверка)           і Проверяет объект данных.        і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іEvaluate/Modify (Вычисление/ і Вычисляет выражение.            і
іМодификация)                 і                                 і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іAdd Watch (Просмотр)         і Добавляет переменную в окно     і
і                             і просмотра.                      і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іFunction Return (Возврат     і Проверяет значение, возвращаемоеі
іфункции)                     і текущей функцией.               і
і                             і                                 і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

                  Меню Options (Параметры)
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                             і                                 і
іLanguage (Язык)              іЗадает использование выражений   і
і                             іязыка из исходного модуля.       і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іMacros (Maкрокоманды)        і                                 і
і        Create (Создание)    іОпределяет строковую             і
і                             імакрокоманду.                    і
і        Stop Recording       іЗавершает сеанс записи.          і
і        (Завершить запись)   і                                 і
і        Remove (Удалить)     іУдаляет строковую макрокоманду.  і
і        Delete All (Удалить  іУдаляет все строковые            і
і        все)                 імакрокоманды.                    і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іDisplay Options (Режим выводаіПозволяет вам задать параметры   і
іна экран)                    івывода (переключение экрана,     і
і                             іразмер, табуляция)               і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іPath for Source (Маршрут дос-іСписок каталогов исходных файлов.і
ітупа к исходным файлам)      і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іSave Options (Сохранение     іСохраняет параметры, макрокомандыі
іпараметров)                  іи окна на диске.                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іRestore Options (Восстанов-  іВосстанавливает параметры с      і
іление параметров)            ідиска.                           і
і                             і                                 і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

                    Меню Window (Окно)
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                             і                                 і
іZoom (Переключение размера)  іУвеличивает размер окна до       і
і                             іразмера всего экрана и обратно.  і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іNext (Следующее)             іОткрывает и активизирует на      і
і                             іэкране следующее последовательноеі
і                             іокно.                            і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іNext Pane (Следующая область)іВыполняет переход в следующую    і
і                             іобласть окна.                    і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іSize/Move (Перемещение/      іПеремещает текущее окно или      і
іИзменение размера)           іизменяет его размер.             і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іIconsize/Restore (Cжатие/    іСжимает окно до размера символа  і
івосстановление)              іили восстанавливает его.         і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іClose (Закрыть)              іСтирает текущее окно.            і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іUndo Close (Отмена закрытия) іОтменяет последнюю команду       і
і                             істирания.                        і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іDump Pane to Log (Вывод      іЗаписывает текущее окно в окно   і
іобласти в протокол регистра- ірегистрации (Log).               і
іции)                         і                                 і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іUser Screen (Экран пользова- іВыводит экран вывода вашей       і
ітеля)                        іпрограммы.                       і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іНумерованный список окон     іВыводится для активизации список і
і                             і9 открытых окон.                 і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іWindow Pick (Выбор окна)     іВыбирает окно из списка открытых і
і                             іокон.                            і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

                    Меню Help (Справка)
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                            і                                  і
іIndex (Оглавление)          іВыводит на экран оглавление       і
і                            іоперативного справочника.         і
і                            і                                  і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                            і                                  і
іPrevious Topic (Предыдущая  іВыводит последний справочный      і
ітема)                       іэкран.                            і
і                            і                                  і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                            і                                  і
іHelp on Help (Информация по іВыводит на экран информацию по    і
ісправочнику)                ісправочной системе.               і
і                            і                                  і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

                    Команды локальных меню
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Для текущего окна вызвать всплывающее или  "локальное"  меню
можно с помощью клавиш Alt-F10.  Если разрешено использовать сок-
ращения с клавишей Ctrl (разрешить это можно с  помощью программы
установки TDINST),  то к отдельным элементам этого меню можно об-
ратиться непосредственно с помощью клавиши Ctrl  и  первой  буквы
нужного элемента (команды) меню (нажав их одновременно).

          Примечание: Каждый  тип  окна и каждая область окна со-
     держат разные локальные меню.

     В следующих разделах описываются локальные меню  для каждого
окна и области.

         Примечание: Меню  в данном разделе для облегчения поиска
     упорядочены по алфавиту.

     Некоторые области в своих локальных меню могут содержать об-
щие  команды (их сокращения для оперативных клавиш).  В следующих
разделах эти специальные клавиши описываются перед командами меню
для той области, к которой они относятся. Во многих областях окон
клавиша Enter представляет собой сокращение для проверки или  из-
менения текущего (подсвеченного) элемента.  Клавиша Del часто вы-
зывает команду локального меню, которая удаляет подсвеченный эле-
мента.  Некоторые области позволяют вам начать ввод букв или цифр
без предварительного вызова команды локального меню.  В этом слу-
чае выводится рамка (окно) подсказки,  куда можно вводить данные.

      Локальное меню окна Breakpoints (Точки останова)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Окно Breakpoints содержит две области:  область списка (сле-
ва)  и область детализации (справа).  Локальное меню имеет только
область списка.

ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                             і                                 і
іSet Option (Задать параметры)іЗадает действие, по которому     і
і                             ісрабатывает точка                і
і                             іостанова, условия, счетчик       і
і                             іпроходов, разрешает или          і
і                             ізапрещает данную точку           і
і                             іостанова.                        і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іAdd (Добавить)               іДобавляет новую точку останова.  і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іRemove (Удаление)            іУдаляет текущую (подсвеченную)   і
і                             іточку останова.                  і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іDelete All (Удалить все)     іУдаляет все точки останова.      і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іInspect (Проверка)           іПросмотр кода, где находится     і
і                             іточка останова.                  і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іGroup (Группа)               іРабота с группами точек останова.і
і                             і                                 і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     В данном окне в качестве сокращения команды Remove ф (Удале-
ние) используется клавиша Del.

                     Меню окна CPU (ЦП)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Окно CPU  (Центральный  процессор) имеет пять (шесть для от-
ладчика TDW) областей (область кода, область данных, область сте-
ка,  область регистров и область флагов), и в каждой области име-
ется локальное меню (шестая область - область селектора).

                        Область кода
ЪДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                     і                                         і
іGoto (Переход)       іВыводит на экран исходный код по новому  і
і                     іадресу.                                  і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іOrigin (Начало)      іВыводит на экран код по адресу cs:ip.    і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іFollow (Следовать)   іВыводит на экран код по целевому адресу  і
і                     іJMP или CALL.                            і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іCaller (Вызывающая   іВыводит на экран код вызывающей функции. і
іфункция)             і                                         і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іPrevious (Предыдущий)іВыводит на экран код по последнему       і
і                     іадресу.                                  і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іSearch (Поиск)       іВыполняет поиск инструкций или байт.     і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іView Source (ПросмотріПереключается в окно Module (Модуль).    і
іисходного кода)      і                                         і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іMixed (Смешанный)    іNo/Yes/Both - Нет/Да/Оба: выводимый      і
і                     іисходный код чередуется с                і
і                     іинструкциями Ассемблера.                 і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іNew CS:IP (Новое     іУстанавливает CS:IP для выполнения новогоі
ізначение CS:IP)      іадреса.                                  і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іAssemble (Ассембли-  і                                         і
ірование)             і                                         і
і        In byte (ВводіСчитывает байт по адресу ввода-вывода.   і
і        байта)       і                                         і
і        Out Byte (Вы-іЗаписывает байт по адресу ввода-вывода.  і
і        вод байта)   і                                         і
і        Read Word    іСчитывает слово из адреса ввода-вывода.  і
і        (Считать     і                                         і
і        слово)       і                                         і
і        Write Word   іЗаписывает слово по адресу ввода-вывода. і
і        (Записать    і                                         і
і        слово)       і                                         і
і                     і                                         і
АДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

      Вместо команды локального меню  Assemble  (Ассемблирование)
можно использовать сокращенный вариант: набор любого символа.

                      Область селектора
ЪДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                     і                                         і
іSelector (Селектор)  іПозволяет вам ввести новый селектор и    і
і                     іперейти на него.                         і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іExamine (Проверка)   іВыводит содержимое области памяти, на    і
і                     ікоторую ссылается селектор, в области    і
і                     ікода или в области данных, в зависимости і
і                     іот типа содержимого.                     і
і                     і                                         і
АДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

                       Область данных
ЪДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                       і                                       і
і Goto (Переход)        іВыводит на экран данные по новому адре-і
і                       ісу.                                    і
ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                       і                                       і
і Search (Поиск)        іВыполняет поиск строки или байт.       і
і                       і                                       і
ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                       і                                       і
і Next (Следующий)      іВыполняет повторный поиск (следующего  і
і                       івхождения).                            і
і                       і                                       і
ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                       і                                       і
і Change (Изменение)    іИзменяет байты данных по адресу курсо- і
і                       іра.                                    і
і                       і                                       і
ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                       і                                       і
і Follow (Следовать)    іСледует по цепочке указателя (ближний  і
і                       ітип или дальний тип).                  і
і                       і                                       і
і      Near Code (Ближ- іСледует по цепочке указателя (ближний  і
і      ний код)         ітип). Устанавливает область кода под   і
і                       ікурсором в ближний адрес.              і
і                       і                                       і
і      Far Code (Даль-  іСледует по цепочке указателя (дальний  і
і      ний код)         ітип). Устанавливает область кода под   і
і                       ікурсором в дальний адрес.              і
і                       і                                       і
і      Offset to Data   іСмещение данных. Устанавливает область і
і      (Смещение данных)ікода в ближний адрес под курсором.     і
і                       і                                       і
і      Base Segment:0   іУстанавливает область данных в начало  і
і      to Data (Базовый ісегмента, который содержит адрес под   і
і      сегмент данных)  ікурсором.                              і
і                       і                                       і
ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                       і                                       і
і Previous (Предыдущий) іВыводит на экран данные по последнему  і
і                       іадресу.                                і
і                       і                                       і
ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                       і                                       і
і Display As (Режим     і                                       і
і вывода)               і                                       і
і         Byte (Байт)   іНа экран выводятся шестнадцатиричные   і
і                       і                                       і
і         Word (Слово)  іНа экран выводятся шестнадцатиричные   і
і                       іслова.                                 і
і                       і                                       і
і         Long (Длинный)іНа экран выводятся  шестнадцатиричные  і
і                       і32-битовые длинные слова.              і
і                       і                                       і
і         Comp (Cложный)іНа экран выводятся 8-байтовые целые    і
і                       іПаскаля (тип comp).                    і
і                       і                                       і
і         Float (С пла- іНа экран выводятся короткие (4 байта)  і
і         вающей точкой)ічисла с плавающей точкой (вещественный і
і                       ітип с одинарной точностью Паскаля, тип і
і                       іfvloat в Си).                          і
і                       і                                       і
і         Real (Вещест- іНа экран выводятся 6-байтовые числа с  і
і         венный)       іплавающей точкой (вещественный тип     і
і                       іПаскаля).                              і
і                       і                                       і
і         Double (С     іНа экран выводятся 8-байтовые числа с  і
і         двойной точ-  іплавающей точкой (двойная точность в Сиі
і         ностью)       іи Паскале).                            і
і                       і                                       і
і         Extended (С   іНа экран выводятся 10-байтовые числа с і
і         расширенной   іплавающей точкой (тип extended языка   і
і         точностью)    іПаскаль, long double языка Си).        і
і                       і                                       і
ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і Block (Блок)          і                                       і
і         Clear (Очист- іОчищает блок памяти.                   і
і         ка)           і                                       і
і                       і                                       і
і         Move (Переме- іПеремещает блок в памяти.              і
і         мещение)      і                                       і
і                       і                                       і
і         Set (Присваи- іПрисваивает блоку памяти значение      і
і         сваивание)    і(побайтно).                            і
і                       і                                       і
і         Read (Считы-  іВыполняет чтение из файла в память.    і
і         тывание)      і                                       і
і                       і                                       і
і         Write (Запись)іЗаписывает из памяти в файл.           і
АДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     Вместо команды  локального меню данной области Change (Изме-
нение) можно использовать сокращенный вариант:  набор любого сим-
вола.

                       Область флагов
ЪДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                     і                                         і
іToggle (Переключение)іУстанавливает или сбрасывает (очищает)   і
і                     ітекущий (подсвеченный) флаг.             і
і                     і                                         і
АДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     В качестве сокращений данной команды можно использовать кла-
виши Enter или "пробел".

                        Область регистров
ЪДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                      і                                        і
іIncrement (Увеличение)іДобавляет 1 к текущему (подсвеченному)  і
і                      ірегистру.                               і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
іDecrement (Уменьшение)іВычитает 1 из текущего (подсвеченного)  і
і                      ірегистра.                               і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
іZero (Очистка)        іОчищает содержимое текущего регистра.   і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
іChange (Изменение)    іПрисваивает текущему (подсвеченному)    і
і                      ірегистру новое значение.                і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
іRegister 32-bit (32-  іNo/Yes (Да/Нет): переключает экран в    і
іразрядный регистр)    ірежим вывода 32-разрядных регистров.    і
і                      і                                        і
АДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     Вместо команды локального меню данной области Change  (Изме-
нение) можно использовать сокращенный вариант:  набор любого сим-
вола.

                        Область стека
ЪДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                      і                                        і
і Goto (Переход)       іВыводит на экран содержимое стека по    і
і                      іновому адресу.                          і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
і Origin (Начало)      іВыводит на экран данные по адресу SS:SP.і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
і Follow (Следовать)   іВыводит код, на который указывает       і
і                      ітекущий элемент.                        і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
і Previous (Предыдущий)іВосстанавливает на экране вывод по      і
і                      іпоследнему адресу.                      і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
і Change (Изменение)   іПозволяет вам редактировать информацию. і
і                      і                                        і
АДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     Вместо команды локального меню данной области Change  (Изме-
нение) можно использовать сокращенный вариант:  набор любого сим-
вола.

                      Окно Dump (Дамп)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Окно Dump идентично области данных окна CPU (ЦП). Их локаль-
ные меню также эквивалентны.

                 Меню окна Execution History
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Окно Execution  History  (Протокол выполнения) имеет две об-
ласти,  каждая из которых  имеет  свое  локальное  меню:  область
Instructions  (область  инструкций) и область Keystroke Recording
(область регистрации нажатий клавиш).

                     Область инструкций
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Область инструкций показывает уже выполненные команды, кото-
рые вы можете изучать или для которых можно выполнить "откат".

ЪДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                      і                                        і
іInspect               іПереход к выделенной команде.           і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
іReverse Execute       іРеверсирует выполнение программы до     і
і                      ікоманды, выделенной в  области          і
і                      іинструкций.                             і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
іFull History          іРазрешает (On) или отменяет (Off)       і
і                      іреверсивное выполнение.                 і
і                      і                                        і
АДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

             Область регистрации нажатий клавиш
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Область Keystroke Recording  показывает  записанные  нажатия
клавиш. Вы можете использовать их для изучения исходного кода или
при перезапуске программы.

ЪДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                     і                                         і
іInspect              іПоказывает  строку исходного кода, в ко- і
і                     іторой была нажата клавиша.               і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іKeystroke Restore    іПерезагружает и выполняет вашу программу і
і                     ідо контекста, относящегося к выделенному і
і                     інажатию клавиши (это может оказаться по- і
і                     ілезным, если  средство  записи протокола і
і                     івыполнения (Execution History) было вык- і
і                     ілючено.                                  і
і                     і                                         і
АДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

                      Окно File (Файл)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В окне File (Файл) выводится в текстовом или шестнадцатирич-
ном виде содержимое файла на диске.

ЪДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                     і                                         і
іGoto (Переход)       іВыводится строка с указанным номером  илиі
і                     ішестнадцатиричным смещением.             і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іSearch (Поиск)       іВыполняет поиск строки или байт данных.  і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іNext (Следующий)     іВыполняет повторный поиск (следующего    і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іDisplay As (Режим    іAsciiіHex (В  коде  ASCII/               і
івывода)              ішестнадцатиричный): задает режим вывода  і
і                     іфайла.                                   і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іFile (Файл)          іПереключает на вывод нового файла.       і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іEdit (Редактирование)іРедактирует файл или изменяет данные в   і
і                     ітекущей позиции курсора.                 і
і                     і                                         і
АДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     Вместо команды локального меню Search (Поиск) можно  исполь-
зовать сокращенный вариант: набор любого символа.

            Локальное меню окна Log (Регистрация)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В окне Log (Регистрация) выводятся сообщения, переданные для
регистрации (протокол).

ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                             і                                 і
іOpen Log File (Открыть файл  іНачинает запись протокола в файл.і
ірегистрации)                 і                                 і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іClose Log File (Закрыть файл іПрекращает запись протокола в    і
ірегистрации)                 іфайл.                            і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іLogging (Регистрация)        іNoіYes (ДаіНет): включает или    і
і                             івыключает регистрацию.           і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іAdd Comment (Добавить ком-   іЗаписывает в протокол регистрацииі
іментарий)                    ікомментарий пользователя.        і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іErase Log (Стереть протокол) іСтирает все зарегистрированные   і
і                             ісообщения.                       і
і                             і                                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                             і                                 і
іDisplay Windows Info         іВыводит диалоговое окно Windows  і
і(Вывод информации Windows)   іInformation (Информация Windows),і
і                             іиз которого выбрать, что вы      і
і                             іхотите выводить на экран         і
і                             і(глобальную динамически          і
і                             іраспределяемую область памяти,   і
і                             ілокальную динамически            і
і                             іраспределяемую область памяти илиі
і                             імодуль).                         і
і                             і                                 і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     Вместо команды локального меню Add Comment (Добавить коммен-
тарий) можно использовать сокращенный вариант:  набор любого сим-
вола.

                    Окно Module (Модуль)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В окне  Module (Модуль) выводится содержимое исходного файла
программного модуля.

ЪДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                     і                                         і
іInspect (Проверка)   іВыводится  содержимое переменной под     і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іWatch (Просмотр)     іК списку выражений просмотра добавляется і
і                     іпеременная под курсором.                 і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іModule (Модуль)      іВыводит на экран другой модуль.          і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іFile (Файл)          іВыводит на экран другой файл.            і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іPrevious (Предыдущий)іВыводит на экран последний модуль и      і
і                     іпозицию.                                 і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іLine (Строка)        іВыводит строку в модуле с указанным      і
і                     іномером.                                 і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іSearch (Поиск)       іВыполняет поиск текстовой строки.        і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іNext (Следующий)     іВыполняет повторный поиск (ищет следующееі
і                     івхождение строки).                       і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іOrigin (Начало)      іВыводит на экран программу по текущему   і
і                     іадресу.                                  і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іGoto (Переход)       іВыводит на экран исходный код или        і
і                     іинструкции по указанному адресу.         і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іEdit (Редактирование)іЗапускает редактор для редактирования    і
і                     іисходного файла.                         і
і                     і                                         і
АДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     Вместо команды локального меню Goto (Переход) можно  исполь-
зовать сокращенный вариант: набор любого символа.

                    Окно Windows Messages
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Окно Windows Messages (Сообщения Windows) имеет три области:
область выбора окна (Window Selection),  область класса сообщения
(Message Class) и область сообщений (Messages).

                     Область выбора окна
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Эта область имеет следующие команды локального меню:

ЪДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                      і                                        і
іAdd (Добавление)      іДобавляет имя окна или логический номер.і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
іRemove (Удаление)     іУдаляет выбранное окно.                 і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
іDelete All (Удалить   іУдаляет все выбранные окна.             і
івсе)                  і                                        і
і                      і                                        і
АДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     Ввод любого  символа является сокращенной формой команды Add
(Добавление) локального меню данной области.

     Клавиша Del или комбинация Ctrl-Y - это сокращение  для  ко-
манды локального меню Remove.

                  Область класса сообщений
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Эта область имеет следующие команды локального меню:

ЪДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                       і                                       і
іAdd (Добавление)       іДобавляет класс сообщений или отдельноеі
і                       ісообщение.                             і
і                       і                                       і
ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                       і                                       і
іRemove                 іУдаляет выбранный класс сообщений или  і
і(Удаление)             іотдельное сообщение.                   і
і                       і                                       і
ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                       і                                       і
іDelete All             іУдаляет все выбранные классы или       і
і(Удалить все)          іотдельные сообщения.                   і
і                       і                                       і
АДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

      Ввод любого символа является сокращенной формой команды Add
локального меню данной области.

     Клавиша Del или комбинация Ctrl-Y - это сокращение  для  ко-
манды локального меню Remove.

                       Область сообщений
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Эта область имеет следующие команды локального меню:

ЪДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                      і                                        і
іSend to log window    іПосылает все принятые сообщения в окно  і
і(Пересылка в окно     ірегистрации, чтобы сохранить их в       і
ірегистрации)          іпротоколе  регистрации.                 і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
іErase log (Стирание)  іУдаляет все сообщения в области.        і
і                      і                                        і
АДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

                       Окно Clipboard
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В окне Clipboard выводятся все элементы, которые вы скопиро-
вали в карман.  Оно имеет единственную область со следующими  ко-
мандами локального меню:

ЪДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                      і                                        і
іInspect (Проверка)    іПереводит вас в то окно, из которого былі
і                      іскопирован элемент, благодаря чему вы   і
і                      іможете его проверить.                   і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
іRemove (Удаление)     іУдаляет подсвеченный элемент.           і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
іDelete All (Удалить   іУдаляет все элементы окна Clipboard.    і
івсе)                  і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
іFreeze ("Заморозить") іПриостанавливает изменение значение     і
і                      і(сохраняется текущее значение элемента).і
і                      і                                        і
АДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

            Окно Numeric Proseccor (Сопроцессор)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Окно Numeric Processor (Арифметический сопроцессор) содержит
три области:  область регистров,  область состояния и область уп-
равления.

                      Область регистров
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В качестве сокращенных вариантов команд локального меню дан-
ной области можно использовать следующие клавиши:

ЪДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і              і                                                і
іZero (Ноль)   іОчищает подсвеченный регистр.                   і
ГДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і              і                                                і
іEmpty (Пусто) іУстанавливает подсвеченный регистр в пустое     і
і              ізначение.                                       і
ГДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і              і                                                і
іChange        іУстанавливает подсвеченный регистр в заданное   і
і(Изменение)   ізначение.                                       і
АДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     Вместо команды  локального меню данной области Change (Изме-
нение) можно использовать сокращенный вариант:  набор любого сим-
вола.

                      Область состояния
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

ЪДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                       і                                      і
і Toggle (Переключение) і Циклически изменяет значение флага.  і
АДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     В качестве сокращенного варианта данной  команды  локального
меню  можно использовать просто нажатие клавиши Enter или пробел.

                     Область управления
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

ЪДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                       і                                      і
і Toggle (Переключение) і Циклически изменяет значение флага.  і
і                       і                                      і
АДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     В качестве сокращенного варианта данной  команды  локального
меню  можно использовать просто нажатие клавиши Enter или пробел.

                  Окно Hierarchy (Иерархия)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Окно Hierarchy  (Иерархия)  содержит  две  области:  область
списка типов объектов и область дерева иерархии.

            Область списка типов объектов/классов
ЪДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                    і                                         і
іInspect (Проверка)  іВыводит содержимое подсвеченного типа    і
і                    іобъекта/класса                           і
і                    і                                         і
ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                    і                                         і
іTree (Дерево)       іПереводит вас в область дерева иерархии. і
і                    і                                         і
АДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

                   Область дерева иерархии
ЪДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                     і                                        і
іInspect (Проверка)   іВыводит содержимое подсвеченного типа   і
і                     іобъекта/класса.                         і
і                     і                                        і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                        і
іParents (Порождающие іЕсли вы выполняете программу с          і
іобъекты/классы)      імножественным наследованием, выполняет  і
і                     іпереключение области дерева порождающих і
і                     іобъектов/классов.                       і
і                     і                                        і
АДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

         Область дерева порождающих объектов/классов
ЪДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                      і                                        і
іInspect (Проверка)    іВыводит содержимое подсвеченного типа   і
і                      іобъекта.                                і
і                      і                                        і
АДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

            Меню окна Registers (Регистры)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Окно Registers (Регистры)  идентично  областям  регистров  и
флагов окна CPU (ЦП). Его локальные меню идентичны локальным меню
области регистров и области флагов.

                      Окно Stack (Стек)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В области стека выводятся активные в данный момент  процеду-
ры.

ЪДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                      і                                        і
іInspect (Проверка)    іВыводит исходный код текущей            і
і                      іподсвеченной) процедуры.                і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
іLocals (Локальные)    іВыводит локальные переменные процедуры. і
і                      і                                        і
АДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     В качестве сокращенного  варианта  команды  локального  меню
Inspect можно использовать просто нажатие клавиши Enter.

                 Окно Variables (Переменные)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

               Область глобальных идентификаторов
ЪДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                       і                                       і
іInspect                іОтображает значение выделенной         і
і                       іпеременной.                            і
і                       і                                       і
ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                       і                                       і
іChange                 іЗаменяет значение выделенной           і
і                       іпеременной.                            і
і                       і                                       і
ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                       і                                       і
іWatches                іДобавляет выделенный идентификатор в   і
і                       іокно Watches.                          і
і                       і                                       і
АДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     Нажатие клавиши Enter является  сокращенной  формой  команды
Inspect локального меню данной области.

           Область локальных идентификаторов
ЪДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                      і                                        і
іInspect               іОтображает значение выделенной          і
і                      іпеременной.                             і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
іChange                іЗаменяет значение выделенной            і
і                      іпеременной.                             і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
іWatches               іДобавляет выделенный идентификатор в    і
і                      іокно Watches.                           і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
іShow                  іИзменяет модули, или показывает         і
і   Static             ітолько статические переменные,          і
і   Auto               ітолько динамические переменные,         і
і   Both               іили и то, и другое.                     і
і   Module             іИзменяет текущий модуль.                і
і                      і                                        і
АДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     В качестве  сокращенного  варианта  команды  локального меню
Inspect можно использовать просто нажатие клавиши Enter.

                   Окно Watches (Просмотр)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Окно Watches (Просмотр) содержит единственную область, в ко-
торой выводятся имена и значения просматриваемых переменных.

ЪДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                     і                                         і
іWatch (Просмотр)     іДобавляет переменную в область просмотра.і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іEdit (Редактирование)іПозволяет редактировать переменную.      і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іRemove (Удаление)    іУдаляет подсвеченную переменную.         і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іDelete All (Удалить  іУдаляет все переменные просмотра.        і
івсе)                 і                                         і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іInspect (Проверка)   іВыводит содержимое подсвеченной          і
і                     іпеременной.                              і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іChange (Изменение)   іИзменяет содержимое подсвеченной         і
і                     іпеременной.                              і
і                     і                                         і
АДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     В качестве  сокращений  команд данного локального меню можно
использовать следующие клавиши:

                  ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
                  Клавиша                 Функция
                  ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
                  Любой символ           Просмотр
                  Enter                  Редактирование
                  Del                    Удаление
                  ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                  Окно Inspector (Проверка)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В окне  Inspector  (Проверка)  выводится содержимое элемента
данных.

ЪДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                     і                                         і
іRange (Диапазон)     іПозволяет выбрать для проверки элементы  і
і                     імассива.                                 і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іChange (Изменение)   іИзменяет значение подсвеченного элемента.і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іInspect (Проверка)   іОткрывает для подсвеченного элемента     і
і                     іновое окно Inspector.                    і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іDescend (Нисходящий) іРасширяет подсвеченный элемент в данное  і
і                     іокно проверки.                           і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іNew Expression (НовоеіПроверяет в данном окне Inspector новое  і
івыражение)           івыражение.                               і
і                     і                                         і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іType Cast (ПриведениеіПриводит тип подсвеченного элемента в    і
ітипа)                ісоответствие с новым элементом.          і
і                     і                                         і
АДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

              Окно проверки типа объекта/класса
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

      Окно проверки  типа   объекта/класса   (Object   Type/class
Inspector) имеет две области, в которых выводится содержимое (по-
ля данных или элементы класса либо методы  или функции-элементы).
Локальные меню обеих областей совпадают,  но сильно отличаются от
локальных меню обычных окно проверки (Inspector).

ЪДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                      і                                        і
іInspect (Проверка)    іВыводит содержимое подсвеченного типа   і
і                      іобъекта/класса.                         і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
іHierarchy (Иерархия)  іВозвращает вас в окно иерархии.         і
і                      і                                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                      і                                        і
іShow Inherited (Вывод іПереключает между выводом содержимого   і
інаследования)         івсех объектов или классов и содержимым, і
і                      іописанным в текущем объекте.            і
і                      і                                        і
АДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

              Окно проверки экземпляра объекта
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Окно проверки   экземпляра   объекта/класса    (Object/Class
Instance Inspector) содержит три области,  из которых только пер-
вая область имеет локальное меню  (в  третьей  области  выводится
только  тип  объекта или класса,  к которому относится данный эк-
земпляр).  Локальные меню первых двух областей совпадают и содер-
жат следующие команды:

          Клавиатурные команды области текста        Таблица 13.2
ЪДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                     і                                         і
іRange (Диапазон)     іВыбирает элементы массива для проверки.  і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іChange (Изменение)   іИзменяет значение подсвеченного элемента.і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іMethods (Методы)     іРазрешает или запрещает вывод всех       і
і                     іметодов в средней области.               і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іShow Inherited       іРазрешает или запрещает вывод вывод      і
і(Вывод наследования) ісодержимого всех объектов и содержимого, і
і                     іописанного в текущем объекте/классе      і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іInspect (Проверка)   іОткрывает новое окно Inspector для       і
і                     іподсвеченного элемента.                  і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іDescend (Спуск)      іРасширяет подсвеченный элемент в данное  і
і                     іокно Inspector.                          і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іType Cast (ПриведениеіПриводит тип подсвеченного элемента к    і
ітипа)                іновому типу.                             і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                     і                                         і
іHierarchy (Иерархия) іВозвращает вас в окно иерархии объектов. і
АДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

                       Области текста
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

          Клавиатурные команды области списка        Таблица 13.3
ЪДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Клавиша      і                 Функция                        і
ГДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і Ins          і Отмечает блок текста                           і
і Стрелка вверхі Перемещает вверх на одну строку                і
і Стрелка вниз і Перемещает на одну строку вниз                 і
і Ctrl-Д>      і Перемещает на следующее слово                  і
і Ctrl-<-      і Перемещает на предыдущее слово                 і
і Home         і Перемещает к началу строки                     і
і End          і Перемещает к последнему символу строки         і
і PgUp         і "Прокручивает" изображение на один экран вверх і
і PgDn         і "Прокручивает" изображение на один экран вниз  і
і Сtrl-Home    і Переводит на верхнюю строку области            і
і Сtrl-End     і Переводит на нижнюю строку области             і
і Сtrl-PgUp    і Переводит первую строку файла                  і
і Сtrl-PgDn    і Переводит на последнюю строку файла            і
АДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

      Если вы не используете сокращения с клавишей Ctrl, то можно
также для перемещения в области текста  использовать  управляющие
клавиши, аналогичные редактору WordStar.

                       Области списков
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Области списков - это общее название области, где перечисля-
ется информация, которую вы можете "пролистывать". На текущую по-
зицию в списке указывает подсветка.  Приведем список всех доступ-
ных вам команд:

ЪДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Клавиша             і Функция                                 і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і Стрелка вверх       і Перемещение вверх на один элемент       і
і Стрелка вниз        і Перемещение вниз на один элемент        і
і Home                і Переход к началу строки                 і
і PgUp                і "Прокрутка" вверх на один экран         і
і PgDn                і "Прокрутка" вниз на один экран          і
і Ctrl-Home           і Переход к верхней строке области списка і
і Ctrl-End            і Переход к нижней строке области списка  і
і Ctrl-PgUp           і Переход к первому элементу списка       і
і Ctrl-PgDn           і Переход к последнему элементу списка    і
і Backspace           і Возврат  назад на один символ при       і
і                     і сравнении                               і
і Буква               і Поиск с увеличением (выбор при наборе)  і
АДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     Можно также для перемещения в  области  текста  использовать
управляющие клавиши, аналогичные редактору WordStar.

                  Команды в окнах подсказки
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В следующей таблице перечислены все команды,  которые  можно
использовать внутри окна подсказки, в окне ввода или в окне спис-
ка:

        Клавиатурные команды диалогового окна      Таблица 13.4
ЪДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
іКлавиша               і         Функция                        і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
іСтрелка вверх         і Перемещение вверх на одну запись       і
іСтрелка вниз          і Перемещение вниз на одну запись        і
іСтрелка вправо        і Перемещение вправо на один символ      і
іСтрелка влево         і Перемещение влево на один символ       і
іCtrl-Д>               і Перемещение к следующему слову         і
іCtrl-<-               і Перемещение к предыдущему слову        і
іHome                  і Переход к началу строки                і
іEnd                   і Переход к концу строки                 і
іPgUp                  і "Прокрутка" вверх на один экран        і
іPgDn                  і "Прокрутка" вниз на один экран         і
іCtrl-Home             і Переход к верхней строке области спискаі
іCtrl-End              і Переход к нижней строке области списка і
іCtrl-PgUp             і Переход к первому элементу списка      і
іCtrl-PgDn             і Переход к последнему элементу списка   і
іBackspace             і Удаление символа перед курсором        і
іEnter                 і Воспринимается и обрабатывается то,    і
і                      і что вы ввели                           і
іDel                   і Удаление одного символа после курсора  і
іEsc                   і Отмена подсказки и возврат в меню      і
АДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

                  Команды перемещения окна
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

           Клавиатурные команды перемещения окна      Таблица 13.5
ЪДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Клавиша              і Функция                                 і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і Ctrl-F5              і Переключение режима позиционирования    і
і                      і окна                                    і
і Cтрелка вверх        і Перемещение окна вверх на одну строку   і
і Стрелка вниз         і Перемещение окна вниз на одну строку    і
і Стрелка влево        і Перемещение окна влево на одну позицию  і
і Стрелка вправо       і Перемещение окна вправо на одну позицию і
і Shift-Стрелка вверх  і Перемещение окна вверх на несколько     і
і                      і строк                                   і
і Shift-Стрелка вниз   і Перемещение окна вниз на несколько строкі
і Shift-Д>             і Перемещение окна вправо на несколько    і
і                      і cтрок                                   і
і Shift-<-             і Перемещение окна влево на несколько     і
і                      і строк                                   і
і Home                 і Перемещение в левую часть экрана        і
і End                  і Перемещение в правую часть экрана       і
і PgUp                 і Перемещение в верхнюю строку экрана     і
і PgDn                 і Перемещение к нижней строке экрана      і
і Enter                і Фиксируется текущая позиция             і
і Esc                  і Отмена команды позиционирования окна    і
АДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

        Трафаретные символы, используемые при поиске
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Трафаретные символы  при  поиске  можно  использовать в двух
случаях:

        - при вводе имени файла, который нужно загрузить и прове-
          рить;

        - при  вводе  текстового выражения,  поиск которого нужно
          выполнить в области текста.

     Знак вопроса (?) в выражении поиска совпадает с  любым  оди-
ночным  символом.  Звездочка (*) в выражении поиска совпадает с 0
или более символов.



Яндекс цитирования