Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Assembler 01.doc
Скачиваний:
19
Добавлен:
09.11.2019
Размер:
727.04 Кб
Скачать

Программы в com-файлах

МЕТОДИЧЕСКИЕ УКАЗАНИЯ:

1. Для выполнения лабораторной работы вы должны войти в каталог группы из панели NORTON. Каждый студент должен иметь в каталоге группы свой личный каталог. Все программы должны создаваться и записываться в личном каталоге студента.

2. Для получения COM-файлов необходимо написание программы в текстовом редакторе в несколько другой форме. Сегмент стека в COM-файле не определяется, COM-программа генерирует стек автоматически, а все данные определяются не в сегменте данных, а в сегменте кодов.

3. После написания программы в текстовом редакторе с помощью программы tasm.exe необходимо получить OBJ-файл. Далее с помощью программы tlink.exe получают требуемый COM-файл.

4. В COM-программе сегмент стека и сегмент данных не определены. Поэтому в COM-программах резервируется 256-байтовый блок памяти (100Н). Так как адресация начинается со смещения 100Н от начала PSP (префикс программного сегмента), то в программе после директивы ASSUME должна быть команда ORG 100H.

5. Объем COM-файла ограничен 64 Кбайт.

6. Файл в COM-формате меньше, чем соответствующий EXE-файл.

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ:

Войти в каталог TASM и удалить все созданные вами файлы в предыдущих работах за исключением файла exasm2.asm. Для этого необходимо выделить файлы для удаления клавишей Ins и нажать F8, после чего появится приглашение для подтверждения операции удаления. После нажатия Enter будут удалены все помеченные вами файлы.

1. Создание exe-файла.

1.1. Для программы exasm2.asm получить OBJ-файл. Для этого в командной строке DOS ввести команду:

tasm exasm2.asm

1.2. Для программы exasm2.asm получить LST-файл. Для этого в командной строке DOS ввести команду с опцией l (генерация листинга):

tasm exasm2.asm /l

Просмотреть полученный листинг с помощью текстового редактора LEXICON и записать листинг в отчет.

1.3. Для программы exasm2.asm получить перекрестные ссылки в файле LST. Для этого необходимо ввести команду DOS с опцией с (генерация перекрестных ссылок):

tasm exasm2.asm /l/c

Просмотреть полученный листинг с помощью текстового редактора LEXICON и записать перекрестные ссылки в листинг.

1.4. Для программы exasm2.asm получить листинг без таблицы имен. Для этого необходимо ввести команду DOS c опцией n (подавление таблицы имен):

tasm exasm2.asm /l/n

Просмотреть полученный листинг с помощью текстового редактора LEXICON.

1.5. Для OBJ-файла получить EXE-файл. Для этого в командной строке DOS ввести команду:

tlink exasm2.obj

Выполните ввод команды DOS (Enter). В вашем каталоге появится необходимый EXE-файл, а также MAP-файл. Просмотрите MAP-файл, нажав клавишу F3 и запишите текст файла в отчет.

2. Получение com-файла.

2.1. Для получения COM-файла необходимо создать в текстовом редакторе NORTON программу в другом формате. Для этого нажмите комбинацию клавиш Shift F4 и введите имя программы xcom1.asm. Далее запишите текст программы в следующей форме:

.286

TITLE XCOM1 (COM) для пересылки и сложения

CODESG SEGMENT PARA 'Code'

ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG

ORG 100H ;Начало в конце PSP

BEGIN: JMP MAIN ;Обход через данные

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

FLDA DW 250 ;Определение данных

FLDB DW 125

FLDC DW ?

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

MAIN PROC NEAR

MOV AX,FLDA ;Переслать 0250 в АХ

ADD AX,FLDB ;Прибавить 0125 к АХ

MOV FLDC,AX ;Записать сумму в FLDC

RET ;Вернуться в DOS

MAIN ENDP

CODESG ENDS

END BEGIN

Оператор ASSUME указывает ассемблеру на необходимость установить относительные адреса с начала сегмента кодов. Регистр CS также содержит этот адрес, являющийся к тому же адресом префикса программного сегмента (PSP). Директива ORG служит для резервирования 100Н байт от начального адреса под PSP.

ORG 100H устанавливает относительный адрес для начала выполнения программы. Программный загрузчик устанавливает этот адрес в командном указателе.

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

Команда JMP служит для обхода данных, определенных в программе. Запишите программу на диск и выйдите из редактора нажав комбинацию клавиш Shift F10.

2.2. Создайте OBJ-файл и LST-файл для программы xcom1.asm аналогично пункту 1.3. Просмотрите LST-файл с помощью текстового редактора LEXICON и запишите листинг в отчет.

2.3. Создайте COM-файл и MAP-файл. Для этого в командной строке DOS введите команду аналогично пункту 1.5. с опцией t (создание COM-файла):

tlink xcom1.obj /t

Без опции t управляющая программа tlink создаст EXE-файл.

Попытка выполнить EXE-модуль программы, написанной для COM-формата, успеха не имеет.

Нажав клавишу F3 просмотрите MAP-файл и его текст запишите в отчет.

СОДЕРЖАНИЕ ОТЧЕТА:

1. Листинги программ.

2. Тексты MAP-файлов.

КОНТРОЛЬНЫЕ ВОПРОСЫ:

1. Каков максимальный размер COM-файла?

2. Какие сегменты можно определить в программе, которая будет преобразована в COM-файл?

3. Выполните трассировку программы xcom1.com с помощью отладчика DEBUG.

ОТВЕТЫ:

1. 64 К

2. Сегмент данных, сегмент кодов.

Л а б о р а т о р н а я р а б о т а N 5

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]