Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
___МЕТОДИЧКИ_2013 / __2_TASM_Копытов.doc
Скачиваний:
27
Добавлен:
15.03.2016
Размер:
153.6 Кб
Скачать

1) Редактирование

Исходный файл Ассемблера hello-2.ASM

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

Объектный файл hello-2.OBJ

3) Компоновка

Выполняемый файл hello-2.EXE

4) Выполнение

Если нужны изменения

Рисунок 1 - Редактирование, ассемблирование, компоновка

и выполнение программы.

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

TASM [опции] исходный_файл [,объектный_файл] [,листинг] [,перекрестные_ссылки].

В квадратных скобках показаны необязательные параметры командной строки. Их можно использовать для того, чтобы изменить поведение Ассемблера. С помощью параметров можно задавать имена получаемых в процессе ассемблирования файлов, а также опции, управляющие ассемблированием. Наиболее часто используемые опции:

/L - указывает на необходимость создания файла листинга;  

/Z - при возникновении ошибок наряду с сообщением о них выводить соответствующие строки текста;

/ZI - включить в объектный файл информацию для отладки.

После ассемблирования программы hello-2 на экране увидим:

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

3) Применить компоновщик (редактор связей) TLINK.EXE для создания исполняемого модуля программы, в частности, для компоновки объектного файла с процедурами из библиотек. Расширение файла .OBJ указывать не обязательно. Набрать и выполнить в командной строке:

TLINK hello-2.

Результатом работы компоновщика будет файл hello-2.EXE.

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

Наиболее часто используемые опции редактора связей следующие:

/V - включить отладочную информацию в выполняемый файл;

/3 - поддержка 32-битного кода;

/T - создать файл типа .com (по умолчанию .exe).

4) Запустить файл hello-2.EXE на исполнение, убедиться в его работоспособности. Если требуются изменения, вернуться к первому этапу.

Рассмотрим формат файла листинга hello-2.LST, полученного на втором этапе.

1 0000 .Model small

2 0000 .STACK 100h

3 0000 .DATA

4 0000 48 65 6C 6C 6F 20 57+ mess db "Hello World!", 0Dh, 0Ah, '$'

5 6F 72 6C 64 21 0D 0A+

6 24

7 000F .CODE

8 0000 main proc

9 0000 B8 0000s mov ax, @DATA

10 0003 8E D8 mov ds,ax

11 0005 BA 0000r mov dx, offset mess

12 0008 B4 09 mov ah, 9

13 000A CD 21 int 21h

14 000C B4 4C mov ah, 4Ch

15 000E B0 00 mov al, 00h

16 0010 CD 21 int 21h

17 0012 main endp

18 end main

Обратите внимание на следующие моменты. Команды программы имеют различную длину и располагаются в памяти вплотную друг к другу. Так, первая команда mov AX, @DATA, начинающаяся с адреса 0000 сегмента кода, занимает 3 байта. Соответственно, вторая команда начинается с адреса 0003. Вторая команда имеет длину 2 байта, поэтому третья команда начинается с адреса 0005 и т.д.

Операторы программы с директивами “MODEL, STACK, DATA, CODE, end” не транслируются в какие-либо машинные коды и не находят отражения в памяти. Они нужны лишь для передачи транслятору служебной информации. Транслятор не мог полностью определить код команды mov AX, @DATA. В этой команде в регистр AX засылается адрес сегмента DATA. Однако этот адрес станет известен лишь в процессе загрузки выполнимого файла программы в память.

Данные, введенные нами в программу, также оттранслировались: вместо символов текста в загрузочный файл попадут коды ASCII этих символов.

Из листинга трансляции легко определить размер отдельных составляющих программы и всей программы в целом. В нашем случае длина сегмента данных равна всего 0Fh = 15 байт.

Соседние файлы в папке ___МЕТОДИЧКИ_2013