Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Архитектура и система команд микропроцессора x86

Поиск

Архитектура и система команд микропроцессора x86

Лабораторная работа 9

Знакомство с программой-отладчиком Turbo Debugger. Выполнение простейших команд микропроцессора в среде Turbo Debugger.

Понятие отладки. Назначение программ-отладчиков

Отладка (debugging) — один из важнейших этапов разработки программного обеспечения (английский термин bug означает"ошибка в программе"). В процессе отладки путем детального анализа в компьютерных программах выявляются и устраняются возможные логические ошибки, которые не обнаруживаются на стадии компиляции.

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

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

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

Отладчик, интегрированный в среду разработки программ пакета Borland C++, относится к первому типу. Turbo Debugger — это отладчик второго типа.

Запуск программы

Запуск программы осуществляется файлом td.exe, расположенный в директории BIN каталога BP или BC.

Структура экрана программы Turbo Debugger

При запуске Turbo Debugger на экране появляется его основное меню и рабочее окно рис.1.

Рабочее окно состоит из следующих четырёх окон:

1. окно команд – CPU;

2. окно регистров и флагов – Registers;

3. окно данных - Dump;

4. окно стека.

 
 
 
 

Рисунок 1

В свою очередь окно Registers поделено на две части. В левой его части указано содержимое всех регистров микропроцессора (ax,bx,cx,dx…), а в правой части показаны биты состояния (флаги-c,z,s,o….).

Последовательное переключение между окнами можно выполнять с помощью клавиши Tab (или Shift+Tab в обратном порядке).

Каждое из окон может быть вызвано самостоятельно на экран, используя пункт меню View и команду соответствующую названию окна (CPU, Registers, Dump).

Задание. Выполнить переключение между окнами, используя разные приемы.

Регистры микропроцессора

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

Каждый регистр может иметь специальное назначение, например, хранить операнды команд микропроцессора, хранить адрес очередной команды программы и т.п. В микропроцессорах Intel для регистров в целом и отдельных групп байт из них принята специальная система обозначений. Например, имеется группа двухбайтовых регистров общего назначения, обозначаемых AX, BX, CX и DX. Например, регистры AX и BX используются микропроцессором для извлечения значений операндов операций сложения и вычитания, а также размещения результатов выполнения соответствующих инструкций.

Как было описано выше, окно Registers поделено на две части. В левой части показано содержимое регистров. Обратим внимание на первые четыре регистра AX, BX, CX, DX, они все равны 0000, четырехзначное число, показанное вслед за именем регистра, является шестнадцатеричным.

Операции с байтами

В микропроцессорах Intel используются двухбайтовые машинные слова. Каждый регистр общего назначения (AX, BX, CX и DX) может хранить одно машинное слово. Однако имеется возможность оперировать с отдельными байтами этих регистров. В этом случае каждый регистр рассматривается состоящим из старшего (High) и младшего (Low) байтов. Обозначения отдельных байтов из регистров состоят из двух букв. Первая задает имя регистра (A, B, C или D), а вторая указывает, какой это байт регистра. Для обозначения старшего байта используется буква H, а младшего — L. Таким образом, регистр AX можно рассматривать, состоящим из двух однобайтовых регистров AH и AL.

Микропроцессор может выполнять арифметические операции над отдельными байтами.

Задание.

Введите в регистр AX число 0102h (два байта) и выполните инструкцию

ADD AH, AL

Каков результат выполнения операции, который будет помещен в регистр AH?

Деление беззнаковых величин

Команды микропроцессора предназначены для выполнения целочисленных операций. Так как деление целых чисел нацело происходит далеко не всегда, то результат деления формируется из двух целых чисел — частного и остатка от деления.

Делимое всегда помещается в пару регистров AX, DX, поэтому в инструкции деления DIV (divide — делить) необходимо указать только регистр с делителем. После выполнения деления регистр AX будет содержать частное, а регистр DX — остаток.

Задание.

Выполните деление числа 7C4B12h (DX=007Ch, AX=4B12h) на 0100h (BX).

Каков результат выполнения операции и почему?

Понятие переполнения

Как и в случае умножения, при выполнении сложения результат может выходить за 16-разрядную сетку (четыре шестнадцатеричных числа). Например, результатом сложения четырехзначных чисел FFFFh и 1h будет пятизначное число 10000h, для записи которого слова (двух байт) недостаточно.

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

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

Задание.

Выполните сложение чисел FFFFh (AX) и 1h (BX). Каков результат операции?

Регистр флагов.

Флаг - это бит, принимающий значение 1 ("флаг установлен"), если выполнено некоторое условие, и значение 0 ("флаг сброшен") в противном случае. В ПК используется 9 флагов, причем конструктивно они собраны в один 16-разрядный регистр, называемый регистром флагов и обозначаемый как Flags. Эти биты обозначаются буквами C, P, A, Z, S, T, I, D, O. Например, в текстовый редактор загружен текст. Как только вы внесли в текст первое изменение, можно установить в 1 флаг изменений. После сохранения текста значение флага сбрасывается (0). Тогда при выходе из редактора легко проверить, сохранены ли изменения.

Флаг переноса

Если при сложении беззнаковых чисел происходит переполнение (возникает единица переноса за пределы разрядной сетки регистра), то единичка переноса записывается в Carry Flag. В правой половине окна регистров и флагов (Registers) данный флаг обозначается буквой С. Флаг переноса переустанавливается в каждой операции сложения.

Задание.

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

1. FFFF + 1

2. FF00 + 1

Флаг нуля.

Занесите в регистры BX и AX два равных числа, теперь инструкцией SUB произведите вычитание одного числа из другого, в результате чего должен быть установлен флаг нуля Z=1 (Zero Flag).

Флаг знака.

Данный флаг позволяет узнать знак числа. Если вычесть из нуля единицу, то результат будет FFFFh, при этом устанавливается флаг знака S=1 (Sign Flag).

Флаг переполнения.

Флаг переполнения устанавливается в той ситуации, когда этого не должно было произойти. Занесите в регистр AX число 7000h, а в BX 6000h и выполните инструкцию сложения, в результате AX будет содержать число D000h или-12288. Это ошибка, так как результат переполняет слово и является отрицательным, поэтому микропроцессор устанавливает флаг переполнения О=1(Overflow Flag)

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

1. Каковы задача и содержание этапа отладки программ?

2. Типы программ-отладчиков и особенности их работы.

3. Понятие регистра микропроцессора и машинного слова.

4. Какая инструкция позволяет выполнять сложение целых чисел? Где размещаются операнды и результат?

5. Какова последовательность выполнения инструкции сложения чисел в среде программы Turbo Debugger?

6. Какая инструкция позволяет выполнять вычитание целых чисел? Где размещаются операнды и результат?

7. В каком виде микропроцессор представляет отрицательные числа? Как будет представлен результат выполнения операции 5h – 8h?

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

9. Какими особенностями обладает инструкция умножения целых чисел? Где размещаются операнды и результат?

10. Какими особенностями обладает инструкция деления целых чисел? Где размещаются операнды и результат?

11. Поясните, что означает термин "переполнение". Как выяснить, что при выполнении операции произошло переполнение?

12. Что такое флаг, и для чего он нужен?

13. С помощью какой инструкции, и каким образом происходит сложение с учетом флага переноса?

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

15. Объясните назначение флагов переноса и нуля?

Объясните назначение флагов переполнения и знака?

Архитектура и система команд микропроцессора x86

Лабораторная работа 9



Поделиться:


Последнее изменение этой страницы: 2016-12-30; просмотров: 693; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.139.86.58 (0.008 с.)