1. Использование Turbo Debugger для отладки программ на ассемблере


Скачать 0.55 Mb.
Название 1. Использование Turbo Debugger для отладки программ на ассемблере
страница 1/7
Тип Документы
rykovodstvo.ru > Руководство эксплуатация > Документы
  1   2   3   4   5   6   7
1. Использование Turbo Debugger для отладки программ на ассемблере.

Запуск отлаживаемого приложения. Выполняется по клавише F9 или по команде RUN из меню RUN. Программа выполняется в полном объеме, если только не указана точка останова (breakpoint) на строку в окне с текстом программы или окне CPU. Точка останова устанавливается при помощи клавиши F2.

Выполнить программу до строки, где находится курсор. Команда выполняется при помощи клавиши F4 или посредством меню.

Выполнить единичную команду. Команда выполняется по нажатию клавиши F7. Если мы находимся в окне с текстом программы, то выполняется оператор соответствующего языка. Если мы находимся в окне CPU, то выполняется инструкция микропроцессора.

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

Выполнить процедуру. Если курсор находится на команде вызова процедуры, то можно выполнить лишь одну эту процедуру командой Alt+F8.

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

Окно стека. Показывает текущее состояние стека.

Окно точек останова. Здесь содержится информация обо всех установленных в программе точках останова. Здесь же можно добавить или установить точки останова.

Окно регистрации (Log). В нем хранится информация о происходящих в отладчике событиях.

Окно переменных. Отображает все переменные, доступные в данном месте.

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

Окно отображения памяти. Дает возможность построчного просмотра памяти.

Окно сопроцессора. Данное окно отображает текущее состояние сопроцессора.

Окно истории выполнения (Execution History). Окно содержит историю выполнения программы.

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

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

Если отладочную информацию в исполняемом модуле Turbo Debugger не распознает, Вам при отладке придется использовать окно CPU. Окно разделено на пять частей (против часовой стрелки)

1. Инструкции микропроцессора.

2. Сегмент данных.

3. Сегмент стека.

4. Состояние регистров.

5. Основные флаги.
2. Программная модель процессора: адресация памяти.

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

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

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

непосредственный доступ она имеет только к трем основным сегментам (кода, дан-

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

Под физическим адресом понимается адрес памяти, выдаваемый на шину адреса процессора. Другое название этого адреса — линейный адрес.

Формирование физического адреса в реальном режиме.

Характеристики механизма адресации физической памяти в реальном режиме.

* Диапазон изменения физического адреса — от 0 до 1 Мбайт. Эта величина опре-

деляется тем, что шина адреса i8086 имела 20 линий.

* Максимальный размер сегмента— 64 Кбайт. Это объясняется 16-разрядной

архитектурой 18086.

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

ходимо определить адрес начала сегмента (сегментную составляющую) и сме-

щение внутри сегмента.

Исходя из разрядности сегментных регистров, можно утверждать, что сегментная составляющая адреса (или база сегмента) представляет собой всего лишь 16-разрядное значение, помещенное в один из сегментных регистров. Максимальное значение, которое при этом получается, соответствует 216 - 1. В сегментном регистре содержатся только старшие 16 битов физического адреса начала сегмента. Недостающие младшие четыре бита 20-разрядного адреса получаются сдвигом значения в сегментном регистре влево на 4 разряда. Эта операция сдвига выполняется аппаратно и для программного обеспечения абсолютно прозрачна. Получившееся 20-разрядное значение и является настоящим физическим адресом, соответствующим началу сегмента. Что касается второго компонента (смещения), то он представляет собой 16-разрядное значение.

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

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

мого одного базового и/или одного индексного регистра.

3. Программная модель процессора: регистры процессора.

Микропроцессор имеет 14 16-разрядных программно-доступных регистров.

Восемь регистров считаются регистрами общего назначения, поскольку во время выполнения программы в них могут храниться адреса и данные. Однако эти регистры имеют и закрепленные функции, что делает их неодинаковыми с точки зрения использования. Четыре регистра общего назначения AX, BX, CX, DX являются регистрами данных, т.к. их основное назначение – хранение операндов и результатов операций. Система команд допускает использование этих регистров целиком и в виде старшей и младшей половин.

При выполнении команд за этими регистрами по умолчанию закреплены различные функции.

Регистр

Назначение

Закрепленные функции

AX

Аккумулятор

Ввод-вывод, умножение и деление слова

AL

Аккумулятор (мл. байт)

Ввод-вывод, умножение и деление байтов, десятичная арифметика, преобразование кодов

AH

Аккумулятор (ст. байт)

Умножение и деление байтов

BX

Базовый регистр

Базовый регистр, преобразование адресов

CX

Счетчик

Обработка строк. Подсчет циклов

CL

Счетчик

(мл. байт)

Динамические и циклические сдвиги

DX

Регистр данных и адреса ввода-вывода

Умножение и деление слов;

Косвенная адресация регистров

Ввода-вывода

Следующие четыре общих регистра SP, BP, SI, DI применяются в основном для хранения 16-разрядных адресов, поэтому их можно отнести к адресным регистрам. И операнды, и адреса, хранимые в этих регистрах, могут быть только 16-разрядными.

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

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

Регистры SI и DI являются индексными регистрами, используются при формировании адресов операндов и выполнении строковых операций.

Регистр IP – указатель команд, фактически является регистром адреса команд или программным счетчиком. В этом регистре формируется адрес команды внутри сегмента памяти.

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

Окончательный адрес или физический адрес памяти определяется содержимым соответствующего сегментного регистра – CS, DS, SS, ES.

CS – сегментный регистр команд, используется при чтении команд.

SS – сегментный регистр стека, используется при работе со стеком.

DS – сегментный регистр данных, используется при обращении к операндами.

ES – дополнительный сегментный регистр, используется при работе с операндами.

Регистр состояния процессора имеет название регистра флагов и считается 16-разрядным, хотя используется в этом регистре всего 9 разрядов.

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

Флаги состояния:

SF – знак результата, установлен, если результат <0.

ZF – нуль результата, устаговлен, если результат =0.

FF – паритет, установлен если младший байт результата содержит четное число единиц.

CF – перенос, устанавливается если результат выходит за разрядную сетку.

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

OF – переполнение, устанавливается при переполнении числовых разрядов разрядной сетки
Флаги управления:

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

IF – разрешение прерываний. Если флажок сброшен, то прерывания запрешены, установлен- разрешены.

TF – трассировка. Если этот разряд установлен, то после выполнения каждой команды генерируется внутреннее прерывание.
4. Программная модель процессора: методы адресации.

Прямая адресация — это простейший вид адресации операнда в памяти, так как

эффективный адрес содержится в самой команде.

Относительная прямая адресация используется в командах условных перехо-

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

ся 8-, 16- или 32-разрядное значение, которое в результате работы команды бу-

дет складываться с содержимым регистра указателя команд IP/EIP. В результа-

те такого сложения получается адрес, по которому и осуществляется переход.

Абсолютная прямая адресация — в этом случае эффективный адрес является

частью машинной команды, но формируется этот адрес только из значения поля

смещения в команде. Для формирования физического адреса операнда в памя-

ти процессор складывает это поле со сдвинутым на четыре бита значением сег-

ментного регистра. В команде ассемблера можно использовать несколько форм

такой адресации. К примеру,

mov ax,word ptr [0000] ;записать слово по адресу ds:0000 в регистр ах

Однако такая адресация применяется редко — обычно ячейкам в программе

присваиваются символические имена.

При косвенной базовой (регистровой) адресации эффективный адрес операнда

может находиться в любом из регистров общего назначения, кроме SP/ESP и ВР/ЕВР

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

Синтаксически в команде этот режим адресации выражается заключением име-

ни регистра в квадратные скобки. К примеру, команда mov ax,[ecx] помещает в ре-

гистр АХ содержимое слова по адресу сегмента данных со смещением, хранящимся

в регистре ЕСХ.

Косвенная базовая (регистровая) адресация со смещением предназначена для доступа к данным с известным смещением относительно некоторого базового адреса. К примеру, команда mov ax,[edx+3h] пересылает в регистр АХ слово из области

памяти по адресу, определяемому содержимым EDX + 3h. Команда mov ax,mas[dx]

пересылает в регистр АХ слово по адресу, определяемому содержимым DX плюс

значение идентификатора mas.

Косвенная индексная адресация со смещением. Возможностью масштабирования содержимого индексного регистра. В команде mov ax,mas[esi*2] значение эффек-

тивного адреса второго операнда определяется выражением mas+(esi)*2.

При косвенной базовой индексной адресации эффективный адрес формируется

как сумма содержимого двух регистров общего назначения: базового и индексно-

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

ния, при этом часто содержимое индексного регистра масштабируется. Например:

mov е а х , [ e s i ] [ e d x ]

В данном примере эффективный адрес второго операнда формируется из двух

компонентов, (ESI) + (EDX)

Косвенная базовая индексная адресация со смещением аналогично.

5. Структура и форматы команд процессора.

Основные команды могут иметь длину от 1 до 6 байт. Код операции всегда содержится в первом байте команды, а последующие байты, если они имеются, содержат адресную информацию. Команды МП оперируют с операндами, хранящимися в памяти ЭВМ. Способы определения операнда называются режимом или способом адресации. В некоторых командах способ адресации операнда задается в первом байте команды, в других – информация о способе адресации содержится во втором байте команды, называемом постбайтом.

Постбайт может определять один или два операнда. Структура постбайта имеет вид:





7

6

5

4

3

2

1

0




























КОП OP1, OP2

MOD

REG / OP

R / M





























Поля MOD и R/M определяют первый операнд, поле REG/OP – второй. Обычно OP1 является приемником, а OP2 источником. В некоторых командах допускается изменение направления передачи данных. В таких командах в первом байте вводится поле d, определяющее направление передачи данных, если d=1 то в регистр, если d=0 то из регистра.

Второй операнд, если он имеется, всегда находится в регистре, задаваемым полем REG/OP. В командах с одним операндом поле REG/OP используется для расширения кода операции, записанного в первом байте команды.

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

Если команда оперирует с сегментными регистрами, то содержимое поля REG расценивается как номер сегментного регистра, иначе как номер регистра общего назначения. При этом, если команда может оперировать и байтом и словом, то в коде операции есть бит W, который определяет длину операнда ( W=0 - байт, W=1 - слово). Операнд, указываемый полями MOD и R/M, определяется в соответствии с имеющим место режимом адресации. Все способы адресации операндов в памяти обеспечивают формирование 16-разрядного адреса внутри сегмента или эффективного адреса, который обозначают буквами ЕА.

При MOD=16 операнд находится в регистре, номер которого указан в поле R/M.

По умолчанию в режимах адресации с привлечением регистра BP при получении физического адреса используется сегментный регистр SS, в остальных режимах адресации используется сегментный регистр DS. Чтобы изменить используемый сегментный регистр предусмотрена специальная однобайтовая команда – префикс замены сегмента.

Он имеет следующий формат:

7

6

5

4

3

2

1

0

























0

0

1

R E G

1

1

0


























где REG – короткий адрес сегментного регистра.

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

Нельзя изменить сегментный регистр при:

  • чтении следующей команды (всегда CS);

  • обращение к стеку с участием SP (всегда SS);

  • цепочечных командах (сегментный регистр операнда-получателя всегда ЕS).

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

  • ни одного дополнительного байта;

  • двухбайтовый эффективный адрес (ЕА);

  • одно или двухбайтное смещение;

  • одно или двухбайтный непосредственный операнд;

  • одно или двухбайтное смещение и одно или двухбайтный непосредственный операнд;

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

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

6. Система команд: команды пересылки данных, команды передачи управления.

Команды пересылки данных



  1. IN Ввод байта или слова

Команда: IN accumulator, port.

Логика: accumulator = (port).

IN передает байт или слово из заданного порта port в AL или AX. Адрес порта может определяться как непосредственным байтовым значением (в диапазоне 0-255), так и с использованием косвенной адресации по регистру DX.

  1. LAHF Загрузка AH из регистра флагов

Логика: биты регистра AH: 7 6 4 2 0

биты регистра признаков FLAGS: S Z A P C.

Команда LAHF копирует пять признаков процессора 8080/8086 (признаки знака, нулевого результата, вспомогательного переноса, четности и переноса) в биты регистра AH с номерами 7, 6, 4, 2, 0 соответственно. Сами признаки при выполнении этой команды не меняются.

  1. LDS Загрузка указателя с использованием DS

Команда: LDS destination, source.

Логика: DS = (source)

destination = (source + 2).

Команда LDS загружает в два регистра 32-битный указатель, расположенный в памяти по адресу source. При этом старшее слово заносится в сегментный регистр DS, а младшее слово - в базовый регистр destination. В качестве операнда destination может выступать любой 16-битный регистр, кроме сегментных.

Операнды Пример

регистр16,память32 LDS DI,32_POINTER

  1. LEA Загрузка исполнительного адреса

Команда: LEA destination, source.

Логика: destination = Addr(source).

Команда LEA присваивает значение смещения (offset) операнда source (а не его значение !) операнду destination. Операнд source должен быть ссылкой на память, а в качестве операнда destination может выступать любой 16-битный регистр, кроме сегментных.

Операнды Пример

регистр16,память32 LEA BX,MEM_ADDR

Эта команда имеет то преимущество по сравнению с использованием оператора OFFSET в команде MOV, что операнду source можно иметь индексы.

LES Загрузка указателя с использованием ES

Команда: LES destination, source.

Логика: ES = (source)

destination = (source + 2).

Команда LDS, загрузка указателя с использованием DS, выполняет те же действия, что и LES, но использует при этом вместо регистра ES регистр DS.

  1. MOV Пересылка (байта или слова)

Команда: MOV destination, source.

Логика: destination = source.

MOV пересылает по адресу destination байт или слово, находящееся по адресу source.

Операнды Пример

регистр, регистр MOV BX,SI

регистр, непоср.операнд MOV CX,128

аккумулятор, память MOV AL,MEM_SOURCE

регистр, память MOV DI,[DX]

память, регистр MOV BETA,DI

память, непоср.операнд MOV GAMMA,16h

память, аккумулятор MOV MEM_DEST,AX

сегм.регистр, регистр16 MOV DS,BX

сегм.регистр, память16 MOV DS,SEGMENT_VAL

регистр16, сегм.регистр MOV BP,SS

память, сегм.регистр MOV SEGMENT_VAL,DS


  1. OUT загрузка в порт

Команда: OUT port, accumulator.

Логика: (port) = accumulator.

OUT передает байт или слово из AL или AX в заданный порт. Адрес порта может определяться как непосредственным байтовым значением (в диапазоне 0-255), так и с использованием косвенной адресации по регистру DX.

  1. POP выборка слова из стека

Команда: POP destination.

Логика: destination = (SP)

SP = SP + 2 .

Команда POP пересылает слово из верхушки стека по адресу destination, затем увеличивает указатель стека SP на 2, чтобы он указывал на новую верхушку стека.

  1. POPF пересылка слова из стека в регистр FLAGS

Признаки: O D I T S Z A P C

Команда: POPF .

Логика: flag-register = (SP)

SP = SP + 2 .

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

  1. PUSH загрузка слова в стек

Команда: PUSH source.

Логика: SP = SP - 2

(SP) = source .

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

  1. PUSHF загрузка содержимого регистра FLAGS в стек

Команда PUSHF уменьшает значение указателя стека SP на 2, затем пересылает слово из регистра FLAGS в верхушку стека.

  1. SAHF загрузка регистра AH в регистр флагов

Логика: биты регистра признаков FLAGS: S Z A P C

биты регистра AH: 7 6 4 2 0 .

  1. XCHG обмен значениями

Команда: XCHG destination, source.

Логика: destination <--> source.

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

  1. XLAT кодирование AL по таблице

Команда: XLAT translate-table.

Логика: AL = (BX + AL).

Команда XLAT переводит байт, согласно таблице преобразований. Указатель 256-байтовой таблицы преобразований находится в BX. Байт, который нужно перевести, расположен в AL. После выполнения команды XLAT байт в AL заменяется на байт, смещенный на AL байтов от начала таблицы преобразований.

Следующий пример иллюстрирует перевод десятичного числа (от 0 до 15) в соответствующую "цифру" шестнадцатеричной системы счисления:

LEA BX,HEX_TABLE ;указатель таблицы засылаем в BX,

MOV AL,DECIMAL_DIGIT ;а переводимую цифру - в AL

XLAT HEX_TABLE ;переводим

;теперь в AL находится ASCII-код;соответствующей цифры

;шестнадцатеричной системы

HEX_TABLE DB '0123456789ABCDEF'
  1   2   3   4   5   6   7

Похожие:

1. Использование Turbo Debugger для отладки программ на ассемблере icon Визуальные средства создания, отладки и анализа программ для параллельных вычислений

1. Использование Turbo Debugger для отладки программ на ассемблере icon Руководство пользователя «dymo label Software»
Модели: «LabelWriter» 300, 310, 320, 330, 330 Turbo, 400, 400 Turbo, Twin Turbo, Duo
1. Использование Turbo Debugger для отладки программ на ассемблере icon Техническое задание на проведение открытого запроса предложений по...
Общество с ограниченной ответственностью «Судостроительный комплекс «Звезда» (ооо «сск «Звезда») (далее – Лицензиат), проводит закупку...
1. Использование Turbo Debugger для отладки программ на ассемблере icon 1 цель работы
Целью работы является освоение инструментальных средств создания и отладки программ на языке ассемблера
1. Использование Turbo Debugger для отладки программ на ассемблере icon Инструкция по применению автомобильного трансивера Си-Би диапазона...
Кнопка c быстрый переход в 9-й канал. В многосеточном режиме служит для переключения сеток
1. Использование Turbo Debugger для отладки программ на ассемблере icon Использование общеразвивающих компьютерных игр и программ в работе с детьми с овз
Особое место среди компьютерных программ занимают специализированные программы для детей с различными нарушениями развития
1. Использование Turbo Debugger для отладки программ на ассемблере icon Дипломная работа тема: использование flash технологий при разработке сайта
В последние годы мультимедиа стало образом жизни для многих пользователей компьютеров, сделав программы и игры более интересными...
1. Использование Turbo Debugger для отладки программ на ассемблере icon Техническое задание На предоставление права на использование по редактирования...
На предоставление права на использование по редактирования и визуализации управляющих программ для станков с чпу на условиях простой...
1. Использование Turbo Debugger для отладки программ на ассемблере icon Руководство пользователя «Интернет-Банк»
Объем памяти и свободного дискового пространства, отсутствие установленных на пэвм клиента средств разработки и отладки и др программ...
1. Использование Turbo Debugger для отладки программ на ассемблере icon Это один из самых простых языков, но далеко не один из самых слабых....
Программы на Turbo Pascal пишутся только для платформы ms-dos, но никак не зависят от конфигурации компьютера. Главным требованием...
1. Использование Turbo Debugger для отладки программ на ассемблере icon Инструкция по участию в открытом Запросе предложений 11 Общий порядок...
Лот №1: Передача неисключительных прав на использование программ для ЭВМ и поставка Товара
1. Использование Turbo Debugger для отладки программ на ассемблере icon Котировочная заявка
О. (для физического лица); место нахождения (для юридического лица), место жительства (для физического лица); банковские реквизиты),...
1. Использование Turbo Debugger для отладки программ на ассемблере icon Инструкция по применению автомобильного трансивера Си-Би диапазона...
Регулятор vr. Предназначен для включения/выключения радиостанции и регулировки громкости
1. Использование Turbo Debugger для отладки программ на ассемблере icon Практическая работа 8
Целью работы является закрепление теоретических знаний по разделу «архитектура набора команд» компьютера и получение практических...
1. Использование Turbo Debugger для отладки программ на ассемблере icon Сборник тестов «Структуры данных в языке Turbo Pascal» по дисциплине «Основы программирования»

1. Использование Turbo Debugger для отладки программ на ассемблере icon Доклад о ходе реализации и оценке эффективности муниципальных Программ...
Программ, представленных администраторами Программ в соответствии с Порядком разработки, реализации и оценки эффективности муниципальных...

Руководство, инструкция по применению




При копировании материала укажите ссылку © 2024
контакты
rykovodstvo.ru
Поиск