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

Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Комсомольский-на-Амуре государственный технический университет»

Кафедра «Промышленная электроника»

Создание исполняемого файла программы

на Ассемблере

Методические указания к лабораторной работе по курсу

«Отладочные средства микропроцессорных систем» для студентов направления 210100 «Электроника и наноэлектроника»

Комсомольск-на-Амуре 2013

УДК 621.385

Создание исполняемого файла программы на ассемблере: Методические указания к лабораторной работе по курсу "Отладочные средства микропроцессорных систем" для студентов направления 210100 «Электроника и наноэлектроника» / Сост. С.М. Копытов. - Комсомольск-на-Амуpе: Комсомольский-на-Амуpе гос. техн. ун-т, 2013. - 16 с.

Описана работа с компилятором TASM по созданию исполняемых программ в EXE-формате.

Предлагаемые методические указания предназначены для студентов направления 210100.

Печатается по постановлению редакционно-издательского совета Комсомольского-на-Амуре государственного технического университета.

Согласовано с отделом стандартизации.

Рецензент В.А. Егоров

Цель работы: ознакомиться с процедурой создания исполняемой программы в EXE-формате на алгоритмическом языке TASM.

1 Основные сведения

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

Turbo Assembler (TASM) — программный пакет компании Borland, предназначенный для разработки программ на языке ассемблера для микропроцессоров с архитектурой x86. Кроме того, TASM может работать совместно с трансляторами с языков высокого уровня фирмы Borland, такими как Turbo C и Turbo Pascal.

1.1 Структура программы на Ассемблере

Программа на ассемблере содержит набор операторов, располагаемых в текстовом файле в определенном порядке. Операторы языка ассемблера разделяют на мнемоники команд микропроцессора и директивы. Мнемоники команд микропроцессора транслируются в машинные коды команд, а директивы служат для управления процессом трансляции.

Рассмотрим различия между двумя видами исполняемых программ – типа СОМ и типа EXE.

1.1.1 Программа типа сом

Рассмотрим исходный текст простой программы hello-l.asm.

.model tiny

.code

org 100h

start: mov ah, 9

mov dx, offset mess

int 21h

ret

mess db 'Hello World!', 0Dh, 0Ah, '$'

end start

Первая строка определяет модель памяти TINY, в которой сегменты кода, данных и стека объединены. Эта модель предназначена для создания файлов типа СОМ, размер которых не может превышать 64 килобайта.

Директива .CODE начинает сегмент кода, который в нашем случае также должен содержать и данные. Директива ORG 100h устанавливает значение программного счетчика в 100h, так как при загрузке СОМ-файла в память DOS занимает первые 256 байт (100h) блоком данных PSP (префикс программного сегмента) и располагает код программы только после этого блока. Все программы, которые компилируются в файлы типа СОМ, должны начинаться с этой директивы.

Метка START располагается перед первой командой в программе и будет использоваться в директиве END, чтобы указать, с какой команды начинается программа.

Команда MOV АН, 9 помещает число 9 в регистр АН. Это — номер функции DOS «вывод строки». Команда MOV DX, OFFSET MESS помещает в регистр DX смещение метки MESS относительно начала сегмента данных, который в нашем случае совпадает с сегментом кода. Если записать MOV DX, MESS, то в регистр DX будут помещены коды букв «He».

Команда INT 21h вызывает системную функцию DOS. Команда INT — основное средство взаимодействия программ с операционной системой. В нашем примере вызывается функция DOS номер 9 — вывести строку на экран. Эта функция выводит строку от начала, адрес которого задается в регистрах DS:DX, до первого встреченного символа $. При загрузке СОМ-файла регистр DS автоматически загружается сегментным адресом программы, а регистр DX был загружен предыдущей командой.

Команда RET используется обычно для возвращения из процедуры. DOS вызывает СОМ-программы так, что команда RET корректно завершает программу. DOS при вызове СОМ-файла помещает в стек сегментный адрес программы и ноль, так что RET передает управление на нулевой адрес текущего сегмента, то есть на первый байт префикса программного сегмента (PSP). PSP предваряет любую программу при загрузке ее в память и имеет размер 25610=10016 байт.Там находится код команды INT 20h, которая и используется для возвращения управления в DOS. Можно сразу заканчивать программу командой INT 20h, хотя это длиннее на 1 байт.

Следующая строка программы HELLO-1.ASM определяет строку данных, содержащую текст «Hello World!», управляющий символ ASCII «возврат каретки» с кодом 0Dh, управляющий символ ASCII «перевод строки» с кодом 0Ah и символ «$», завершающий строку. Эти два управляющих символа переводят курсор на первую позицию следующей строки точно так же, как в строках на языке С действует последовательность «\n». Апострофы приказывают ассемблеру заменить символы на их ASCII-коды.

И наконец, директива END завершает программу, одновременно указывая, с какой метки должно начинаться выполнение программы.

Обратите внимание, что числа в программах могут быть записаны в различных системах счисления. После десятичных чисел букву не ставят, после двоичных используют «b», а после шестнадцативичных «h».

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