Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TD.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
186.88 Кб
Скачать

8 Составление выражений

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

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

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

[ # module [ # file ]] # line [ # name ]

[ # module [ # file ] ] [ # procedure } # name

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

# 44 # Count

может быть именем переменной Count, доступной из 44-й строки текущего модуля, а

# Routine # Local

  • именем переменной Local, доступной из процедуры Routine.

Турбо Си

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

Приоритет Операторы

0 : :

1 ( ) [ ] . -> sizeof (одноаргументный)

2 * & - + ! ~ ++ --

3 * / %

4 + -

5 << >>

6 < <= > >=

7 == ! =

8 &

9 ^

10 |

11 &&

12 | |

13 ? :

14 = += -= /= %= <<= >>= & = ^= |=

Внимание: Дополнительный оператор : : (двойное двоеточие) может использоваться для создания далекого указания (например 2: :3 является указанием номера сегмента 2 и смещения 3).

Пример. Выражения в Турбо Си/

В области действия описания

Int Fixed = 13;

выражение *&Fixed имеет значение 13.

Турбо Паскаль

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

Приоритет Операторы

1 @ ^ not type( ) + - (одноаргументный)

2 * / div mod and sh1 shr

3 in + - or xor

4 <<->>-<>

5 :-

Результатом операции :“ (присваивание) является присваивание значения переменной.

Пример. Выражения в Турбо Паскале

В области действия описания

conat Fixed : Integer - 13 выражение

(BFIxed)" имеет значение 13.

Турбо Ассемблер

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

Приоритет Операторы

1 ххх PTR (например, BYTE PTR) .

2

3 :

4 OR XOR

5 AND

6 NOT

7 EQ NE LT LE GT GE

8 + -

9 * / MOD SHR SHL

10 + - (одноаргументное)

11 OFFSET SEG

12 < ) [ ]

Внимание: Присваивание значений переменным может происходить с помощью оператора " (присваивание), например

Count - [BYTE PTR OS : 20]

Пример. Выражения в Турбо Ассемблере

В области действия описания

Fixed DW 13 выражение

[WORD PTR DS: (OFFSET Fixed)] имеет значение 13.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]