Занятие N 1
(лабораторная работа 1)

Вычислительная техника и микропроцессоры

--------------------------

Тема: Исследование основных этапов создания программ на языке ассемблера для 16-разрядного МП

содержание:
Сегмент памяти стека
Экран отладчика AFD (или AFDPRO)
Основные команды отладчика
Последовательность действий при отладке программы
Задание на работу
Отчет должен содержать
Оформление блок-схемы,Pascal-программы и программы на ассемблере
Краткие сведения об отладчике для 32-разрядных МП (INSIGHT.COM)


 


Цели работы: 1.Научиться создавать и редактировать ассемблерные программы с помощью текстового редактора NE.COM

2.Научиться ассемлировать и компоновать программы с помощью ассемблера TASM.EXE и компоновщика TLINK.EXE

3.Научиться пользоваться отладчиками ассемблерных программ AFD.EXE (AFDPRO.EXE) и INSIGHT.COM.

Основные вопросы для отработки на занятии

-------------------------------------------

1.1 Поиск на диске файла NE.COM и его загрузка в память

1.2 Основные действия по созданию и редактированию программы:

- ввод имени файла
- набор текста и его коррекция с помощью клавиатуры
- запоминание файла на диске
- получение справки(подсказки)

1.3 Коррекция файла с помощью встроенного в MS DOS редактора

2.1 Алгоритм прохождения и решения задачи на ПЭВМ (стр.38)

- этап редактирования(использование NE.COM)
- этап ассемблирования(использование TASM.EXE)
- этап коррекции (при наличии синтаксических ошибок)
с использованием редактора NE или встроенного в MS DOS редактора.
- этап компоновки(использование TLINK.EXE)
- этап отладки(использование AFD.EXE или AFDPRO.EXE)

2.2 Ассемблирование исходного текста программы

C:\>TASM.EXE/L имя.ASM

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

2.3 Анализ листинга программы

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

.STARTUP

.EXIT

2.4 Анализ MAP-файла,который содержит таблицу имен, размеры сегментов

2.5 Компоновка объектного модуля для получения исполняемого файла имя.EXE (или имя.COM)

C:\>TLINK.EXE имя.OBJ (получение EXE-файла)
или C:\>TLINK.EXE/T имя.OBJ (получение COM-файла)

3.1 Запуск отладчика AFD.EXE (или AFDPRO.EXE)

1-й вариант C:\>AFD.EXE
2-й вариант C:\>AFD.EXE имя.EXE (или AFD.EXE имя.COM)

3.2 Основные команды отладчика

- загрузка исполняемого файла L имя.EXE (L имя.COM)
- установка требуемого адреса в окне программыD {адрес}
- установка требуемого адреса в окнах 1 или 2 M1 {адрес} или M2 {адрес}
- выполнение программы(всей или фрагмента) в автоматическом режиме G {нач.адрес}{,кон.адрес}
- выход из отладчика в DOS

QUIT

3.3 Ограничения при использовании отладчика

3.4 Анализ реального распределения памяти для конкретной программы

- начальные адреса сегментов
- адрес вершины стека
- адреса переменных и массивов
- взаимное расположение сегментов в памяти

 

Дополнение 1. Сегмент памяти стека.

-------------

Примерный анализ распределения памяти сегмента данных,который совмещен с сегментом стека(модели памяти SMALL,LARGE)

 

Дополнение 2. Экран отладчика AFD (или AFDPRO).

_________________________________________________

1.Структура экрана.

Окно 1 - содержимое выбранного сегмента памяти (в одной строке располагается 8 байт).

Окно 2 - содержимое выбранного сегмента памяти (в одной строке располагается 16 байт).

Окно 3 - для отображения адресов команд,команд в 16-ых кодак и команд на языке ассемблера(дизассемблированных ко манд).В первой строке окна может отображаться диагностическая информация и сообщения отладчика.

Окно 4 - для вывода приглашения отдадчика (CMD>),для ввода команд и для вывода подсказок по структуре вводимых команд.

Окно 5 - для индикации и коррекции внутренних регистров процессора,регистра признаков,а также для индикации со-

держимого четырех последних(относительно вершины)слов стека.

Окно 6 - для отображения в специальных кодах содержимого окна 2.

2.Перемещение курсора:

по окнам - с помощью клавиш F7 (вверх) F9 (влево)

F8 (вниз) F10(вправо),

в пределах окна - с помощью клавиш скролинга,
в пределах окна с коррекцией - с помощью информационных клавиш
и клавиш DEL,Home,END,Back Space,пробел.

3.Справку о командах отладчика можно получить,нажав клавишу F4 а далее используя клавиши PgDn (листание вперед) и PgUp (листание назад).Повторное нажатие клавиши F4 закрывает это окно.

 

Дополнение 3.Основные команды отладчика.

--------------------------

 

Дополнение 4. Последовательность действий при отладке программы

---------------------------------------------------------------

Имя исходной программы: tal1.asm

Ассемблирование: tasm.exe/l tal1.asm

или tasm/l tal1 (по умолчанию)

После ассемблирования генерируются файлы:

tal1.lst, tal1.map, tal1.obj

При наличии ошибок генерируется только

tal1.lst

Компоновка:

a).программ с моделью памяти "tiny" tlink.exe/t tal1.obj

или tlink/t tal1 (по умолчанию) результирующий исполняемый файл - tal1.com

б).программ с моделью памяти "small" и "large" tlink.exe tal1.obj или tlink tal1 (по умолчанию)

результирующий исполняемый файл - tal1.exe

в).при неправильном оформлении программы исполняемые файлы не генерируются.

Запуск отладчика: afdpro.exe или afd.exe

Загрузка исполняемого файла: L tal1.com

Установка в окнах 1,2 необходимых адресов:

m1 fff0 (для наблюдения за стеком,так как SP=FFFE)
m2 100 (для наблюдения за изменениями данных)

Исполнение программы в пошаговом режиме:нажатие клавиш F1(F2)
Установка начального адреса загруженной ранее программы:

D 100

Изменение данных(в окне 2): P 111,8 (в ячейку 0111 заносим 8)
P 112,d (в ячейку 0112 заносим 13)
Выход из отладчика: QUIT

 

 

Задание на работу.

---------------------

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

x = N + k
u = N * k
c = z + N +(-1)_5N_0*k ( c = z + N + k )
w = c_52_0 ( w = c*c )
x_52_0 x*x
r = ----- ( r = ----- )
cnst cnst

Числа u,w кроме запоминания в памяти занести в стек.Имя асемблерной программы выбрать самостоятельно.

2.Проассемблировать программу,просмотреть листинг и зафиксировать синтаксические ошибки при их наличии в таблице:

Табл.1
+-----------------------------------------------------------------------------+
¦ N ¦ Допущенная ошибка ¦ Сообщение ассемблера об ошибке ¦
+---+-------------------------+---------------------------------------------¦
¦ 1
¦ 2
¦ 3
¦ 4
+----------------------------------------------------------------------------+

После устранения ошибок проассемблировать программу и просмотреть файлы
.lst - листинг программы;
.obj - программу в объектных кодах;
.map - таблицу c информацией о сегментах.

3.Получить исполняемый файл (.exe или .com) c помощью компоновщика TLINK.Исполняемый файл не генерируется при неправильном оформлении ассемблерной программы,о чем выводится соответствующее сообщение.

4.Запустить отладчик AFD (или AFDPRO),загрузить исполняемый файл в отладчик и выполнить программу в пошаговом режиме.

При обнаружении смысловых(семантических)ошибок зафиксировать и их в табл.1.

5.Получить результаты вычислений при таких исходных данных вариант 1 N,k,c,cnst=16

вариант 2 -N,k,c,cnst=20
вариант 3 -N,-k,c,cnst=-24

и занести их в табл.2.

 

 

Отчет должен содержать:

------------------------

1.Ответ на вопросы

- представление чисел в памяти;
- распределение памяти для ассемблерной программы (адреса сегментов,адреса переменных и массивов, пространство памяти под стек,вершина стека).

2.Условие задачи,исходные числа.

3.Блок-схему,PASCAL-программу и программу на ассемблере (их изобразить так,чтобы все конструкции программ соответствовали друг другу).

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

5.Таблицу с ошибками(табл.1)

6.Распределение памяти

7.Таблицу с исходными данными и результатами(табл.2)

8.Выводы по работе.

 

Примеры оформления некоторых элементов отчета


 

 

Оформление блок-схемы,Pascal-программы и программы на ассемблере


 

 

Краткие сведения об отладчике для 32-разрядных МП (INSIGHT.COM)

---------------------------------------------------------------

1.Загрузка отладчика:

a)простая загрузка - запуск программы INSIGHT.COM
b)загрузка с отлаживаемой программой - выполнить
команду INSIGHT.COM ИМЯ.COM
или INSIGHT.COM ИМЯ.EXE
(пример: insight.com lab1.com )

Экран отладчика для режимов 16-разрядного и 32-разрядного приведен на соответствующих рисунках в конце описания.

2.Загрузка в отладчик отлаживаемой программы:

4.Переход в другие окна:

в окно сегмента данных - Shift+D
в окно регистров - Shift+R
в окно регистра флагов - Shift+F
в окно стека - Shift+S
Возврат в окно программы - Esc
Установка необходимого адреса в окне D осуществляется клавишами ВВЕРХ - ВНИЗ

5.Включение/выключение 32-разрядного режима МП Ctrl+R

6.Выполнение загруженной программы в автоматическом режиме Ctrl+F9

7.Выполнение программы в пошаговом режиме

с пропуском процедур - F7
c заходом в процедуры - F8

8.Установка начального адреса программы:

выполнить действия F10-File-Enter-New-Enter
или F10-File-Enter-N

9.Выход из отладчика - Alt+X

Экран отладчика для 16-разрядного и 32-разрядного режимов приведены ниже на соответствующих рисунках.

 

Экран отладчика для 16-разрядного режима

Переход к нужному адресу в отладчике INSIGHT.

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

- из окна данных, а третью - как из окна кода, так и из окна данных.

Если нужно в окне кода отобразить тот адрес, на который ссылается команда передачи управления, то нужно или выбрать пункт Code position|Follow локального меню окна кода, или нажать Ctrl+F.

Непосредственно задать адрес можно в диалоге Goto, вызываемом пунктом Code position|Address_ (Ctrl+G). Для возврата к текущей

инструкции - Code position|Origin (Ctrl+O или Ctrl+Enter).

Все переходы в окне кода запоминаются в специальном стеке, поэтому можно вернуться к предыдущей позиции при помощи пункта Code

position|Previous (Ctrl+P). Этот стек использует область памяти

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

При активном окне данных можно позиционировать окно кода на адрес, который определяет ячейка памяти, где находится курсор. В этом случае или два подряд идущих байта трактуются как новое смещение для дизассемблера (near-указатель), новый сегмент для дизассемблера (far-указатель со смещением 0) или четыре байта - как смещение и сегмент нового адреса (far-указатель). Для таких переходов нужно вызвать подменю Dump follow из локального меню окна данных, или непосредственно нажатием Ctrl+F. В этом подменю пункт Near code позволяет задать новое смещение для окна кода, Far code - новое смещение и сегмент, Code segment - новый сегмент и смещение 0. Непосредственно новый адрес для показа памяти в окне данных можно задать, вызвав диалог Goto из меню Dump position|Address_ (Ctrl+D). Это меню есть в локальных меню обоих окон. Если инструкция, на которой расположен курсор окна кода, ссылается на ячейку памяти, то адрес этой ячейки может быть использован как начальный для отображения в окне данных - пункт Dump position|Reference (Alt+=). Дополнительные пункты подменю Dump position и соответствующие им комбинации клавиш позволяют в окне данных отобразить память, на которую ссылаются определенные пары регистров. Эти пункты и комбинации приведены в таблице.

Переход к нужному адресу в отладчике INSIGHT.

Для кода и для данных используются различные команды перехода к нужному адресу, причем одни команды вызываются из окна кода, другие - из окна данных, а третью - как из окна кода, так и из окна данных. Если нужно в окне кода отобразить тот адрес, на который ссылается команда передачи управления, то нужно или выбрать пункт Code position|Follow локального меню окна кода, или нажать Ctrl+F. Непосредственно задать адрес можно в диалоге Goto, вызываемом пунктом Code position|Address_ (Ctrl+G). Для возврата к текущей инструкции - Code position|Origin (Ctrl+O или Ctrl+Enter). Все переходы в окне кода запоминаются в специальном стеке, поэтому можно вернуться к предыдущей позиции при помощи пункта Code position|Previous (Ctrl+P). Этот стек использует область памяти отладчика, которая также используется и для других целей. Из-за этого может возникнуть ситуация, когда часть данных стека будет затерта. В этом случае отладчик покажет предупреждение и очистит стек.

При активном окне данных можно позиционировать окно кода на адрес,который определяет ячейка памяти, где находится курсор. В этомслучае или два подряд идущих байта трактуются как новое смещение для дизассемблера (near-указатель), новый сегмент для дизассемблера (far-указатель со смещением 0) или четыре байта - как смещение и сегмент нового адреса (far-указатель). Для таких переходов нужно вызвать подменю Dump follow из локального меню окна данных, или непосредственно нажатием Ctrl+F. В этом подменю пункт Near code позволяет задать новое смещение для окна кода, Far code - новое смещение и сегмент, Code segment - новый сегмент и смещение 0.

Непосредственно новый адрес для показа памяти в окне данных можно задать, вызвав диалог Goto из меню Dump position|Address_ (Ctrl+D). Это меню есть в локальных меню обоих окон. Если инструкция, на которой расположен курсор окна кода, ссылается на ячейку памяти, то адрес этой ячейки может быть использован как начальный для отображения в окне данных - пункт Dump position|Reference (Alt+=).

Дополнительные пункты подменю Dump position и соответствующие им комбинации клавиш позволяют в окне данных отобразить память, на которую ссылаются определенные пары регистров. Эти пункты и комбинации приведены в таблице.

 

Пункт меню ¦ Клавиши ¦ Назначение
------------------+---------------+--------------------------------------

Dump DS:SI ¦ Alt+D ¦ установить окно на DS:SI

Dump ES:DI ¦ Alt+E ¦ установить окно на ES:DI

Dump SS:BP ¦ Alt+S ¦ установить окно на SS:BP

Dump CS:IP ¦ Alt+C ¦ установить окно на CS:IP

Dump ES:BX ¦ Alt+B ¦ установить окно на ES:BX

Dump ES:SI ¦ Alt+I ¦ установить окно на ES:SI

Dump DS:DX ¦ Alt+F ¦ установить окно на DS:DX

Dump DS:DI ¦ Alt+J ¦ установить окно на DS:DI

Dump DX:AX ¦ Alt+A ¦ установить окно на DX:AX

Dump code ¦ Alt+L ¦ установить окно на адрес

¦ ¦ текущей позиции курсора
¦ ¦ окна кода

 

Аналогично позиционированию окна кода, окно данных можно устанавливать на адрес, который определяется значением в памяти, - для этого выбирается пункт меню Near data, Far data или Data segment из подменю Dump follow, которое можно также вызвать по Ctrl+F.

Дополнение к пункту

"Распределение памяти"


Word 97 *.doc

 




     главная | новости | институт | курсовые | комплексные | рефераты | преподы | фотоальбом | приколы | АТС | гостевая
 
    ©НОСКІЗ-ДУІТ 2002-2003

 

Hosted by uCoz