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

СП - ASM / Лабораторная работа №1 Borland ассемблер

.doc
Скачиваний:
21
Добавлен:
03.03.2016
Размер:
57.34 Кб
Скачать

ЛАБОРАТОРНАЯ РАБОТА №1

ИЗУЧЕНИЕ СРЕДСТВ РАЗРАБОТКИ И ОТЛАДКИ СИСТЕМНЫХ ПРОГРАММ ДЛЯ ПЛАТФОРМЫ MS-DOS

Цель работы: освоить процесс подготовки программы к выполнению, среды разработки приложений Borland C++ 3.X и процесс отладки программ с использованием интерактивного отладчика Turbo Debugger (TD); изучить структуру com- и exe-программ для MS-DOS.

Порядок выполнения работы

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

  1. особенности архитектуры программ для MS-DOS;

  2. технологию создания com- и exe-программ для MS-DOS с использованием пакета Turbo Assembler (TASM), смысл и назначение её этапов;

  3. возможности среды разработки приложений Borland C++ 3.X и технологию создания com- и exe-программ для MS-DOS с её использованием, смысл и назначение отдельных этапов процесса подготовки программы;

  4. возможности интерактивного отладчика Turbo Debugger (TD) и технологию отладки программ с его использованием.

I Подготовка программ к выполнению с использованием пакета TASM

  1. Установить пакет TASM в каталог С:\tools\TASM.

  2. При помощи текстового редактора (который не добавляет в выходной файл служебную информацию!) подготовить исходный текст com- (рис. 1.1) и exe- (рис. 1.2) программ.

; Пример простейшей сом-программы

;

.model tiny

.code

org 100h

start: mov ah,9

mov dx, offset msg_txt

int 21h

ret

msg_txt db "Пример простейшей сом-программы", 0Dh,0Ah,'$'

end start

Рисунок 1.1 – Пример простейшей сом-программы

; Пример простейшей exe-программы

.model small

;--------------------------------------------

stacksg segment para stack 'stack'

dw 10 dup('s','t','a','c','k')

stacksg ends

;--------------------------------------------

datasg segment para 'data'

msg_txt db "Пример простейшей exe-программы", 0Dh,0Ah,'$'

datasg ends

;--------------------------------------------

codesg segment para 'code'

assume cs:codesg,ds:datasg,ss:stacksg,es:nothing

begin proc far

mov ax,datasg

mov ds,ax

mov dx, offset msg_txt

mov ah,9

int 21h

mov ah,4Ch

mov al,00h

int 21h

begin endp

codesg ends

end begin

;--------------------------------------------

Рисунок 1.2 – Пример простейшей ехе-программы

  1. Проанализировать различия в исходных текстах com- и exe-программ.

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

<диск>:\<путь>\tasm /z /zi /n <имя файла>.asm

<диск>:\<путь>\tlink /t /x <имя файла>.obj, <имя файла>.com

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

<диск>:\<путь>\tasm /z /zi /n <имя файла>.asm

<диск>:\<путь>\tlink /v /x <имя файла>.obj

Для „автоматизации” процесса ассемблирования и компоновки рекомендуется исходные тексты файлов оформлять в виде пакетных командных файлов (bat-файлов), например:

;@echo off

;goto assemble

; Пример простейшей сом-программы

.model tiny

.code

org 100h

start: mov ah,9

mov dx, offset msg_txt

int 21h

ret

msg_txt db "Пример простейшей сом-программы", 0Dh,0Ah,'$'

end start

:assemble

<диск>:\<путь>\tasm /z /zi /n <имя файла>.asm

<диск>:\<путь>\tlink /t /x <имя файла>.obj, <имя файла>.com

del <имя файла>.obj

echo.

pause

  1. Сравнить размеры исполняемых файлов com- и exe-программ. Объяснить различия.

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

  3. Пронаблюдать изменения состояния регистров процессора в ходе выполнения программ. Проанализировать различия в ходе выполнения com- и exe-программ.

  4. Получить дампы памяти обоих программ. Определить в них положение сегментов кода, данных и стека, а также префикса программного сегмента (PSP) и блока окружения. Проанализировать порядок размещения сегментов и их границы.

  5. Получить дампы префикса программного сегмента (PSP) и блока окружения. Проанализировать их содержимое.

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

  7. Средствами отладчика TD во время пошагового выполнения программы изменить выводимый на экран текст сообщения.

II Подготовка программ к выполнению с использованием среды Borland C++ 3.X

  1. Установить среду разработки в каталог С:\tools\BС3x.

  2. Настроить параметры среды: каталоги исходных файлов, выходных файлов, библиотек, модель памяти и т.д.

  3. Подготовить исходный текст программы:

#include <dos.h>

void main(void) {

char *msg_txt="Sample of CPP program$";

_DX=FP_OFF(msg_txt);

_AH=9;

geninterrupt(0x21);

}

  1. Получить исполняемый код сом- и ехе-программ. Исполняемый код сом-программы получить с использованием утилиты exe2bin.

  2. Сравнить размеры исполняемых файлов com- и exe-программ. Объяснить различия. Сравнить размеры исполняемых файлов программ, подготовленных с использованием TASM и Borland C++, сделать выводы.

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

  4. Пронаблюдать изменения состояния регистров процессора в ходе выполнения программ. Проанализировать различия в ходе выполнения com- и exe-программ а также различия исполняемого кода для программ, подготовленных с использованием TASM и Borland C++, сделать выводы.

  5. Получить дампы памяти обоих программ. Определить в них положение сегментов кода, данных и стека, а также префикса программного сегмента (PSP) и блока окружения. Проанализировать порядок размещения сегментов и их границы. Сравнить результаты с полученными ранее для программ, подготовленных с использованием TASM.

  6. Получить дампы префикса программного сегмента (PSP) и блока окружения. Проанализировать их содержимое. Сравнить результаты с полученными ранее для программ, подготовленных с использованием TASM.

  7. В пошаговом режиме средствами отладки определить адреса и значения переменных, объявленных в программах; убедится в корректности присваиваемых им значений. Сравнить результаты с полученными ранее для программ, подготовленных с использованием TASM.

  8. Проанализировать содержимое стека при выполнении программы.

  9. Средствами отладчика TD во время пошагового выполнения программы изменить выводимый на экран текст сообщения.

Содержание отчета

  1. Титульный лист.

  2. Текст сом- и ехе-программ, подготовленных с использованием TASM и Borland C++.

  3. Дампы памяти сом- и ехе-программ и результаты отладки программы в пошаговом режиме (адреса переменных) для программ подготовленных с использованием TASM и Borland C++.

  4. Структуру размещения программы в памяти (для программ подготовленных с использованием TASM и Borland C++).

  5. Содержимое регистров процессора перед началом выполнения сом- и ехе-программы. Адрес точки входа в программу.

  6. Дампы префикса программного сегмента (PSP) и блока окружения с анализом их содержимого.

  7. Выводы (преимущества и недостатки использования сом- и ехе-программ, языков программирования низкого/высокого уровня для их написания, области эффективного применения и т.п.).

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

  1. Чем отличаются программы сом и ехе?

  2. Процесс создания исполняемого (exe) файла с применением TASM.

  3. Процесс создания исполняемого (exe) файла с применением Borland C++.

  4. Процесс создания исполняемого (com) файла с применением TASM.

  5. Процесс создания исполняемого (com) файла с применением Borland C++.

  6. В каком диапазоне могут находится адреса переменных при выполнении программы под управлением MS-DOS?

  7. В каком порядке размещаются сегменты программы? Каким образом можно изменить их порядок?

  8. Чем ограничены размеры сегментов программы? Количество возможных сегментов?

  9. и т.д. (все про программную модель МП86, архитектуру программ, основы МС-ДОС)

Литература

  1. Абель П. Язык ассемблера для IBM PC и программирования: Пер. с англ. – М.: Высш. шк., 1992. – 447 с.

  2. Данкан Р. Профессиональная работа в MS-DOS: Пер. с англ. – М.: Мир, 1993. – 509 с.

  3. Зубков С.В. Assembler для DOS, Windows и UNIX. – М.: ДМК Пресс, 2000. – 608 с.