Скачиваний:
81
Добавлен:
01.05.2014
Размер:
47.62 Кб
Скачать

ПРИЛОЖЕНИЕ № 01

(Редакция 1.05 от 15 ноября 2001 года)

Ассемблирование программ

(получение машинного кода из ассемблерного листинга)

Общий принцип ассемблирования программ.

Шаг 1. Установка MASM 6.10 – 6.13

Для перевода ассемблерного файла в машинный код, необходимо воспользоваться специальной программой-ассемблером. Наиболее популярным сейчас можно назвать мощный и свободно распространяемый Microsoft Macro Assembler версий 6.10 – 6.13, который позволяет создавать машинный код как для операционной системы MS-DOS, так и для Windows. Если у вас уже установлено необходимое программное обеспечение, то просто переходите ко второму шагу.

1. Загрузите с сайта http://asm.kalashnikoff.ru/prog SFX-архив самой программы Masm.exe (прибл. 6 мегабайт).

2. Распакуйте полученный архив. Для этого запустите загруженный файл Masm.exe в ОС Windows и укажите каталог, в который необходимо сохранить дистрибутив.

3. Запустите файл setup.exe из каталога Disk1.

4. Выберите команду "Install the Microsoft Macro Assembler" – "Установить Microsoft Macro Assembler".

5. Укажите операционную систему, в которой будет работать MASM (как правило – это опция "DOS/Windows & NT").

6. В следующем окне ("Устанавливать файлы для MS Windows?") укажите "YES".

7. Далее вас спросят, необходимо ли устанавливать PWB (текстовый редактор, предназначенный для создания и редактирования файлов). Я рекомендовал бы лучше использовать DOS Navigator или Aditor. Укажите "YES" для установки, "NO" – для пропуска.

8. В следующем окне вас спрашивают, пользуетесь ли вы мышью Microsoft. Если так, то, нажав на "YES", установщик инсталлирует драйвер этой мыши.

9. Теперь ответьте на вопрос, стоит ли установить ML.EXE. Не вдаваясь в подробности, отмечу: обязательно установите эту программу. Она нужна нам для работы.

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

11. Установка примеров программ. MASM содержит примеры исходных кодов программ для Windows. В качестве ознакомления можно их установить.

12. Теперь необходимо выбрать диск и пути, куда будет установлен MASM.

13. После того, как Вы указали все пути, появится окно, в котором будут перечислены все устанавливаемые Вами компоненты. Если Вы все указали правильно, то выберите "NO CHANGES" – "Не менять".

14. После того, как программа скопировала необходимые файлы, появится несколько окон с информацией о том, какие файлы были изменены в процессе установки. Просто нажимайте Enter до тех пор, пока не появится окно "Main menu" – "Основное меню".

15. Выберите в "Main menu" опцию "Exit SETUP" – "Выход из установки".

16. Заходите в каталог, в который был установлен MASM (по умолчанию – C:\MASM611).

17. В подкаталоге BIN находятся основные программы. В нем вы можете создавать asm-файлы и ассемблировать их так, как описывается ниже.

Шаг 2. Ассемблирование

Программа-ассемблер (MASM, TASM, WASM, NASM и пр.) создает объектный файл с расширением OBJ. Данный файл является переходным между ассемблерным файлом (.ASM) и программой (.COM / .EXE).

В случае, если ассемблерный листинг слишком большой, то программу разбивают на несколько частей. В большинстве случаев обходятся директивой include (так образом мы будем ассемблировать нашу оболочку).

Однако, если файлы, присоединяемые указанной выше директивой большие и в основном неизменяемые (т.е. готовые процедуры, не требующие редактирования), то постоянное ассемблирование этих процедур может занять много времени. В таком случае, каждая отдельно взятая часть программы (ассемблерный код) ассемблируется по отдельности, при этом создается один или несколько объектных файлов (.OBJ), которые не требуют постоянного ассемблирования, только компоновки (линковки) (см. Шаг 3).

Шаг 3. Компоновка

Если в процессе ассемблирования не было выявлено ошибок в ассемблерном листинге, то программа-ассемблер создает объектный файл (.OBJ).

Затем необходимо воспользоваться линковщиком (компоновщиком), которые входят в комплект программы-ассемблера. Данная процедура выполняется гораздо быстрее ассемблирования.

Именно компоновщик создает готовый к запуску файл (программу) с расширением COM или EXE из объектного файла (.OBJ). Оба типа имеют отличия в структуре ассемблерной программы. Первый тип (COM) не может превышать 64Кб и используется только в MS-DOS, однако он очень компактный и удобный для написания небольших программ и резидентов под операционную систему Microsoft DOS. В большинстве случаев, если программа написана на чистом Ассемблере под MS-DOS, нет необходимости создавать EXE-файлы. В настоящей книге в первой части рассматриваются именно программы типа COM.

Для создания стандартных программ типа EXE под MS-DOS нет необходимости указывать какие-либо параметры линковщику при компоновке, чего не скажешь о создании программ типа COM. Дело в том, что компоновщик не может автоматически определить какой тип подвергается компоновке.

Линковщик также проверяет, нет ли каких-либо ошибок в объектном файле, но не грамматических, а логических. Например, отсутствие необходимой объектной библиотеки, указанной в самом файле либо в командной строке (программа-ассемблер этого не делает).

Если ошибок не было обнаружено, компоновщик создает машинный код (программу типа COM или EXE), которую можно запускать на выполнение.

__________________

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

Однако, для MASM версий 6.00 – 6.13 достаточно запустить файл ml.exe, указав в командной строке параметр "/AT" в процессе ассемблирования. В таком случае MASM (если не было ошибок в ассемблерном листинге) автоматически запустит компоновщик (LINK.EXE), который создаст файл типа COM.

Ассемблирование и компоновка программ

пакетами Microsoft (MASM) и Borland (TASM)

Допустим, вы создали в текстовом редакторе файл с именем PROG.ASM.

Тогда:

  • Если Вы используете Macro Assembler версии 5.00 – 5.10 (MASM 5.00 – 5.10):

В командной строке необходимо указать следующее:

> MASM.EXE PROG.ASM

В результате создается файл PROG.OBJ, который нужно слинковать при помощи компоновщика (линковщика) LINK.EXE, который входит в комплект данного пакета:

> LINK.EXE PROG.OBJ /t

Компоновщик создаст PROG.COM, который и необходимо запускать. Это и будет машинный код ассемблерной программы. Параметр "/t" указывает LINK.EXE, что необходимо создать файл типа COM.

  • Если Вы используете Macro Assembler версии 6.11 – 6.13 (MASM 6.11 – 6.13):

В командной строке необходимо указать следующее:

> ML.EXE PROG.ASM /AT

В результате создается два файла: PROG.OBJ и PROG.COM. PROG.OBJ, как правило, нам больше не понадобится, и его можно удалить, а PROG.COM запускаете на выполнение. Это и будет машинный код ассемблерной программы. Параметр "/AT" указывает программе-ассемблеру (MASM), что после ассемблирования, в случае, если ошибок не будет обнаружено, следует запустить компоновщик (LINK.EXE) и передать ему параметры для создания файла типа COM.

Обратите внимание, что параметр "/AT" должен быть указан ЗАГЛАНЫМИ символами!

  • Если Вы используете Turbo Assembler (TASM):

В командной строке необходимо указать следующее:

> TASM.EXE PROG.ASM

Если prog.asm не содержит ошибок, то в результате создается файл PROG.OBJ, который нужно скомпоновать при помощи компоновщика (линковщика) TLINK.EXE:

> TLINK.EXE PROG.OBJ /t

TLINK.EXE создаст файл PROG.COM, который и нужно запустить на выполнение. Параметр "/t" указывает TLINK.EXE, что необходимо создать файл типа COM.

В Приложении № 02 рассматриваются типичные ошибки при ассемблировании программ.

«Ассемблер? Это просто! Учимся программировать»

(С) Авторское право принадлежит Калашникову Олегу Александровичу (Assembler@Kalashnikoff.ru).