Краткие теоретические сведения icon

Краткие теоретические сведения




Скачати 91.91 Kb.
НазваКраткие теоретические сведения
Дата03.08.2012
Розмір91.91 Kb.
ТипЛабораторная работа

ЛАБОРАТОРНАЯ РАБОТА N 2


Создание и отладка ассемблерных программ. Разработка .EXE-файла. Получение навыков отладки в среде Turbo Debugger.


Краткие теоретические сведения



Технология получения исполняемого файла.


Исходный текст




Редактирование текста



Любой


редактор

текста
















Листинг

Трансляции

.LST




Ассемблирование




Ассемблер

MASM

Или TASM
















Листинг

Перекрестных

ссылок CRF




Объектный

Модуль

.OBJ




























Компоновка




Линкер

Link

TLink






















Загрузочный модуль

.EXE или .COM






















Debug

TD




Отладка




Выполнение



Все шаги, представленные в схеме, могут выполняться порознь поочередно, в частности, с помощью программ TASM.EXE (транслятор), TLINK.EXE (компоновщик), TD.EXE (отладчик).

^

Разработка .EXE-файла



Программа на языке ассемблера представляет собой последовательность операторов (строк). На диске - это файл с расширением .ASM, после трансляции - .OBJ, после редактирования - .EXE или .COM. Оператором может быть команда или директива. Команда представляет собой мнемоническое отображение машинной команды микропроцессора (МП), т.е. управляет работой МП. В объектном файле после трансляции каждая команда преобразуется в соответствующую ей машинную команду. Директивы управляют работой ассемблера. Поэтому, чаще всего, соответствующего кода в объектном файле не имеют.

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


а) SEGMENT

Формат:

имя SEGMENT [атрибуты] ; открывает сегмент

......

имя ENDS ; закрывает сегмент


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

1. Сегмент кода. Он содержит операторы программы. Обычно первая исполняемая команда находится в начале этого сегмента, и DOS передает управление по адресу этого сегмента. Адресуется регистром CS.

2. Сегмент данных содержит данные, необходимые программе. Этот сегмент адресуется регистром сегмента данных DS.

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

4.Дополнительные сегменты используются в некоторых специальных случаях. Адресуются регистрами ES, FS или GS.


б) ASSUME.

Формат:

ASSUME регистр_сегмента: имя сегмента [,...]

или ASSUME регистр_сегмента: NOTHING [,...]


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


ASSUME NOTHING отменяет действие предыдущих операторов для данного регистра.

в) Директивы определения данных (Dn)

^ DB - определение 1 байта;

DW - определение слова (2б);

DD - определение двойного слова (4б);

DQ - определение 64х-разрядного числа (8б);

DT - определение двоично-десятичного 10-байтового числа. Определяют переменную или присваивает ячейке памяти начальное значение, резервирует одно или несколько мест в памяти.

Например:

B1 DB 255 ; резервирует байт в памяти, присваивает ему имя B1 и инициализирует ; ; максимальное значение байта без знака;

AA DW ? ; резервирует слово в памяти с именем AA.


д) END - определяет конец программного модуля.

Формат:

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


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


имя_сегмента_стека SEGMENT stack 'stack' ; стек

; резервирование памяти

имя_сегмента_стека ENDS

имя_сегмента_данных SEGMENT ; данные

..................

имя_сегмента_данных ENDS


имя_сегмента_кода SEGMENT ; исполнимые операторы

ASSUME..... ;

метка_1:

MOV AX, имя_сегмента_данных

MOV DS,AX ;

......................

mov ah,4ch ; выход

mov al,0

int 21h ; в DOS

имя_сегмента_кода ENDS

END метка_1


Команда MOV - пересылка данных.


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

Необходимо помнить:


  • размер данных источника и приемника должен быть одинаковый;

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

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


Пример


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


stack1 segment stack 'stack' ; сегмент стека

db 10 dup ('stack ') ; резервирование места в памяти

stack1 ends


dseg segment ; сегмент данных

source db 10,20,30,40 ; исходная таблица

dest db 4 dup (?) ; место под результирующую таблицу

dseg ends

cseg segment ; сегмент кода

assume cs: cseg, ds: dseq, ss: stack1 ; связь сегментов с

; регистрами

our_prog: ; точка входа программы

mov ax,dseg ; инициализация регистра DS

mov ds,ax

; присвоить элементам таблицы dest нулевые начальные значения,


mov dest,0 ; обнуление первого байта

mov dest+1,0 ; обнуление второго байта

mov dest+2,0 ; и т.п.

mov dest+3,0


; копирование таблицы source в таблицу dest в обратном порядке


mov al,source

mov dest+3,al

mov al,source+1

mov dest+2,al

mov al,source+2

mov dest+1,al

mov al,source+3

mov dest,al


mov ah,4ch ; выход в DOS

int 21h


cseg ends ; конец сегмента кода

end our_prog ; конец программы

Работа с помощью отладчика Turbo Debugger (TD.EXE)


Программа TD.EXE использует оконный интерфейс с пользователем аналогичный средам C, Pascal, в отличие от отладчика DEBUG.EXE, работающего в командном режиме. Однако находясь в среде Turbo Debugger невозможно вводить программы ни в машинных кодах, ни на языке Ассемблера, как в DEBUG.EXE, ни записывать .COM-программы, созданные внутри отладчика. Можно только работать с уже готовой программой, заранее оттранслированной и скомпонованной. Причем, для того, чтобы работать с отладчиком, необходимо при трансляции и компоновке использовать специальные параметры, которые добавляют в исполняемый файл отладочную информацию:


TASM <имя исходной программы> /zi

TLINK <имя объектной программы> /v


Посмотреть справку по опциям компилятора TASM и компоновщика TLINK можно запустив их без параметров.

Основные функции Turbo Debugger:


  • трассировка программы (один шаг - выполнение одной команды);

  • обратная трассировка (от конца к началу);

  • пошаговое выполнение (все команды выполняются аналогично трассировке, а процедуры и функции - одним шагом);

  • просмотр (переменных, точек останова, регистров и т.п.);

  • слежение (просмотр переменных по ходу выполнения программы);

  • замена (текущего значения переменной заданным значением).


На экране одновременно могут присутствовать одно или несколько окон, одно из которых является активным (очерчено двойной рамкой). Каждое окно имеет номер, который виден на рамке вверху справа. Для активизации нужно нажать Alt и номер окна. Активное окно можно передвинуть в пределах экрана с помощью клавиш Ctrl-F5 и клавиш управления курсором.

В верхней части экрана - глобальное меню. Доступ к нему осуществляется с помощью клавиши F10. Пункты этого меню доступны всегда:


= FILE VIEW RUN BREAKPOINT DATA OPTIONS WINDOW HELP


Ниже описаны основные наиболее часто используемые функции глобального меню.


FILE - загружает новую программу. Это можно сделать и в командной строке при загрузке TD.EXE:

TD <имя программы>


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


VIEW - просмотр:

  • breakpoint - точек останова (их нужно предварительно задавать с помощью пункта меню BREAKPOINT);

  • log - журнала событий (специального текстового файла, куда можно записывать содержимое различных окон в ходе работы с TD);

  • watches - значений отслеживаемых переменных;

  • file - дискового файла в HEX-коде;

  • cpu - машинных команд, стека, регистров;

  • dump - дамп оперативной памяти;

  • registers - регистров;

  • numeric processor - сопроцессора и др.


RUN - запуск программы:

  • от начала до конца;

  • goto cursor - до текущей позиции курсора;

  • trace into - одной команды;

  • step over - одной команды (подпрограммы рассматриваются как одна команда);

  • execute to - до указанного адреса;

  • animate - непрерывный пошаговый режим;

  • backtrace - в обратном направлении.


BREAKPOINT - точка останова:

  • toggle - переключает точку останова;

  • delete all - удаляет все точки останова.


DATA - данные:

  • inspect - проверка элемента данных;

  • add watch - заносит переменную в окно слежения.


OPTIONS - опции:

  • display options - устанавливает опции экрана;

  • macros - организует клавишные макросы, т.е. переобозначает клавиши на время работы программы;

  • save options - сохраняет на диске конфигурацию;

  • restore options - восстанавливает конфигурацию.



WINDOW - для работы с окнами (перемещение их по экрану, удаление и т.п.).

HELP - помощь.

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

С помощью локального меню окна DUMP (содержимое оперативной памяти) можно передвигаться по сегментам. Для этого выбираем пункт локального меню GOTO, и чтобы попасть, например, в начало сегмента данных задаем адрес с помощью 2х компонент: DS:0.

В окне MODULE (модуль) пункт локального меню WATCH заносит переменную, на которой установлен курсор, в окно слежения. В окне слежения (WATCH) с помощью локального меню можно удалить все отслеживаемые переменные, внести имена других.

^

Задания к лабораторной работе





  1. Ввести программу-пример пересылки данных, внеся необходимые исправления в сегмент кода и данных программы так, чтобы количество пересылаемых байтов было равно следующему значению: (остаток от деления номера студента в группе на 4)+ 2.

  2. С помощью компилятора TASM произведите трансляцию и компоновку программы с получением листинга и сохранением отладочной информации для работы с TD. Выполните программу в отладчике TD в пошаговом режиме. При отладке отслеживайте значения регистров, оперативной памяти (исходной и выходной таблицы, стека) с помощью окон "Registers", "Dump", "Watch". Используйте локальные меню.

  3. Внесите в протокол:

  • новый вариант программы с необходимыми комментариями;

  • описание содержания столбцов листинга;

  • значения сегментных регистров до выполнения программы и после ее выполнения и интерпретацию этих значений; Почему и насколько байт изменилось значение регистра DS после начала выполнения программы?

  • значение регистра SP и интерпретацию этого значения;

  • описание результатов работы программы (переменных) и абсолютные адреса переменных SORCE и DEST.

  1. Переделайте EXE программу в COM программу и сравните размеры выполнимых файлов. Почему они отличаются?

Схожі:

Краткие теоретические сведения iconКраткие теоретические сведения
Макроопределения (макрокоманды) представляют собой последовательность операторов на языке ассемблера, которая будет заменять повсюду...
Краткие теоретические сведения iconКраткие теоретические сведения
В этой модели сегмент кода отделен от сегмента данных и стека, данные и сегмент стека объединены в одну группу, т е регистры ds и...
Краткие теоретические сведения iconКраткие теоретические сведения
Процедурам могут быть переданы некоторые аргументы, что позволяет, имея одну копию кода в памяти, изменять ее для каждого конкретного...
Краткие теоретические сведения iconКраткие теоретические сведения
Гарвардского университета "Марк I". После долгих поисков техники обнаружили источник своих бед небольшую моль, попавшую между контактами...
Краткие теоретические сведения iconСубд access теоретические сведения
База данных (БД) это хранилище данных о некоторой предметной области, организованное в виде специальной структуры
Краткие теоретические сведения iconМасаж завдання для індивідуальної роботи студентів заочної форми навчання І. Написати реферат однією з тем
Написати реферат однією з тем Краткие сведения о возникновении и развитии массажа
Краткие теоретические сведения iconДокументи
1. /4 курс/Mенеджмент.doc
2. /4 курс/_стор_я...

Краткие теоретические сведения iconДокументи
1. /4 курс/Mенеджмент.doc
2. /4 курс/_стор_я...

Краткие теоретические сведения iconДокументи
1. /4 курс/_стор_я _нженернох д_яльност_.doc
2. /4...

Краткие теоретические сведения iconУдк 669. 187: 621. 36. 001. 57 Теоретические аспекты разработки идентификационных моделей как законов регулирования координат электротехнического комплекса сталеплавления Труфанов И. Д., Бондаренко А. А., Чумаков К. И., Арсеньева С. И
...
Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©zavantag.com 2000-2013
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи