Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №1 / Лаб_работа №1

.doc
Скачиваний:
14
Добавлен:
02.05.2014
Размер:
41.47 Кб
Скачать

Лабораторная работа №1

Тема: Отладчик TIC

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

Пояснение к работе:

В данной лабораторной работе используется полноэкранный отладчик ТIС.

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

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

После запуска TIC курсор устанавливается в поле командной строки, помеченной знаком '-->'. (Курсор - это полностью заполненное мерцающее знакоместо, если редактирование экрана TIC выполняется в режиме за­мены, а не в режиме вставки). Все команды вводятся в этом. В дальнейшем мы будем ссылаться на эту часть экрана как на командную строку.

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

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

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

Показанные флаги процессора имеют два представления. Первое - в виде 16-разрядного слова и второе, когда каждый из восьми флаговых разрядов (OF, DF, IF, SF, ZF, AF, PF и CF) представлен двоичным значением. Все неиспользуемые разряды слова флагов установлены в ноль для облегчения интерпретации 16-разрядного слова флагов. Флаг трассировки используется FSD и поэтому он недоступен пользователю. Флаги NT и IOPL в случае микропроцессора типа I80286 не имеют значения при работе с реальными адресами, используемыми операционной системой DOS. Поэтому их содержимое не показано отдельными значениями, а может быть проконтролировано только при интерпретации флагового регистра, представленного в виде 16-разрядного слова. Область ниже командной строки содержит текст отлаживаемой программы в дизассемблированном виде, начиная с ячейки CS:IP. Самое левое поле в каждой строке содержит смещение адреса, следующие шестнадцатеричные значения представляют объектный код каждой инструкции. Дисассемблированный текст выглядит аналогично ассемблерному листингу, за исключением того, что не используются символические имена. Вторая строка дизассемблированной области показана на экране в обратном фоне. Инструкция в этой строке называется текущей инструкцией, которая выполняется следующей по команде 'G' или 'Шаг' (функциональная клавиша F1). При выполнении команды 'Шаг' выполненная инструкция сдвигается на одну строку вверх. Строка над строкой в обратном фоне называется строкой предыдущей команды. Эта верхняя строка дизассемблированной области (строка предыдущей команды) перекрывается выводимыми сообщениями о состоянии системы и сообщениями об ошибках, когда они появляются. Поэтому на эту строку в зависимости от информации, которая в ней представлена, ссылаются так же, как на строку состояния.

Работа TIC завершается по команде 'QUIT'.

1. Отображаемая информация.

Во время работы программы на экране отображается содержимое всех доступных в реальном режиме регистров процессора, 4 верхние ячейки стека, до 9 команд текущей программы, а также двух областей памяти в виде двух независимых окон по 80 байт каждое. Содержимое памяти отображается в памяти в окнах в 16-ричном коде, а окно 2 - в символах кода ASCII (правый нижний угол экрана). Содержимое регистра флажков отображается как в двоичном, так и в 16-ричом коде (неиспользуемые разряды приняты равными нулю).

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

После запуска ТIС курсор устанавливается в поле командной строки. Область ниже этой строки содержит текст программы в дисассемблированной форме, начиная с ячейки СS:IР. Левое поле в каждой строке - эффективный адрес (смещение) команды в сегменте кода. Если в текущей команде используется какая-либо ячейка памяти, ее содержимое отображается на светлом фоне в конце командной строки.

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

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

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

Работа TIC завершается по команде 'QUIT'.

2. Некоторые команды отладчика ТIС.

В отладчике используются 28 команд. Команды указываются в командной строке.

2.1. Заполнение памяти константой (F).

Команда позволяет заполнить константой заданную область памяти.

Общий вид : F - код команды,

100 - эффективный адрес сегмента DS (по умолчанию),

20 - количество байт,

В0 - константа.

При выполнении этой команды 32 ячейки памяти, начиная с адреса DS*16+100 заполняются константой В0.

Пример: F СS:0,С,90

По этой команде 12 ячеек в начале сегмента данных заполняются командами NОР (код операции -90).

Пример: F 0,%20,2С

Здесь 20 ячеек в начале сегмента данных заполняются константой 2С.

ПРИМЕЧАНИЕ: в отладчике ТIС (в отличии от ассемблера!) все числа воспринимаются по умолчанию 16-ричными. Перед вводом десятичного числа необходимо указать знак % Ввод двоичных и 8-ричных чисел отладчиком не поддерживается.

2.2 Корректировка содержимого памяти (Р).

Общий вид: Р, адрес, строка

Строка - байт, слово или строка символов, заключенных в кавычки

Пример: Р 500,1F

Здесь 500 - эффективный адрес сегмента СS (по умолчанию),

1F - команда РОР DS (код операции 1F).

Пример: Р DS:00, 5А4С

В этой команде две ячейки в начале сегмента данных заполняются константой 5А4С (слово).

Пример: Р DS:0А, 'ТЕХТ'

В этой команде в четыре ячейки с адреса данных записывается слово ТЕХТ в коде А5СП.

2.3 Ассемблирование (А).

Общий вид: А [адрес]

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

Пример: А FF

Ассемблирование начинается с адреса FF текущего кодового сегмента.

2.4 Установка регистров.

Примеры: AХ =04FЗ

ВL = %50

СF=1

ЕS =ВХ+SI

DХ =SР-IР+DS

СОДЕРЖАНИЕ ОТЧЕТА

  1. Тема, цель

  2. Окно отладчика TIC

  3. Описание каждой области окна отладчика TIC

  4. Контрольные вопросы:

    1. Назначение программы TIC.

    2. Как перейти в режим ассемблирования?

    3. Как перейти в любую из областей отладчика TIC?

    4. Что такое регистры флагов?

    5. Что такое регистры общего назначения, описать их.

    6. Что означает знак % при вводе числа?

    7. Поддерживает ли TIC ввод двоичных и 8-ричных чисел?

    8. Какой командой производится выход из TIC?

Соседние файлы в папке Лабораторная работа №1