(Отримання машинного коду з ассемблерного лістингу)
Загальний принцип ассемблирования програм.
Крок 1. УстановкаMASM6.10 - 6.13
Для перекладу ассемблерного файлу в машинний код, необхідно скористатися спеціальною програмою-ассемблером. Найбільш популярним зараз можна назвати потужний і вільно поширюваний MicrosoftMacroAssemblerверсій 6.10 - 6.13, який дозволяє створювати машинний код як для операційної сістемиMS-DOS, так і дляWindows. Якщо у вас вже встановлено необхідне програмне забезпечення, то просто переходите до другого кроку.
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".
8. У наступному вікні вас запитують, чи користуєтеся ви мишею Microsoft. Якщо так, то, натиснувши на "YES", установник інсталює драйвер цієї миші.
9. Тепер дайте відповідь на питання, чи варто встановити ML.EXE. Не вдаючись в подробиці, зазначу: не забудьте помістити її цю програму. Вона потрібна нам для роботи.
10. Наступне вікно - установка документації, яка включає в себе інформацію про можливості MASM і підтримуваних ним інструкціях Ассемблера. Якщо ви сильні в англійській, то бажано її встановити і уважно з нею ознайомитися.
11. Установка прикладів програм. MASM містить приклади вихідних кодів програм для Windows. Як ознайомлення можна їх встановити.
12. Тепер необхідно вибрати диск і шляхи, куди буде встановлений MASM.
13. Після того, як Ви вказали всі шляхи, з'явиться вікно, в якому будуть перераховані всі встановлені Вами компоненти. Якщо Ви все вказали правильно, то виберіть "NO CHANGES" - "Не змінювати".
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, проте він дуже компактний і зручний для написання невеликих програм і резидентів під операційну сістемуMicrosoftDOS. У більшості випадків, якщо програма написана на чистому Асемблері под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)
Якщо Ви використовуєте 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):
У командному рядку необхідно вказати наступне:
Якщо prog.asm не містить помилок, то в результаті створюється файл PROG.OBJ, який потрібно скомпонувати за допомогою компоновщика (лінковщік) TLINK.EXE:
> TLINK.EXE PROG.OBJ / t
TLINK.EXE створить файл PROG.COM, який і потрібно запустити на виконання. Параметр "/ t" вказує TLINK.EXE, що необхідно створити файл типу COM.
У додатку № 02рассматріваются типові помилки при асемблюванні програм.
«Асемблер? Це просто! Вчимося програмувати »