На що спирається програмування на асемблері

- освоїти техніку створення програм в SDK MASM32;

- вивчити використання шаблонів ассемблерних програм;

- експериментально вивчити роботу макрогенератора;

- вивчити техніку створення і застосування макросів.

- навчитися спостерігати за результатами роботи макрогенератора, вбудованого в ml.exe.

Короткі відомості з теорії

На що спирається програмування на асемблері

Програмувати на асемблері - значить писати програми практично на рівні машинних команд. Асемблери - це такі мови програмування, в яких кожній машинній команді процесора зіставляється один оператор. (Примітка. У асемблери також включаються будь-які додаткові кошти для полегшення програмування, але головна їх особливість саме ця - одна процесорна команда може зображуватися одним оператором). Для перетворення вихідного тексту в виконуваний exe-модуль застосовуються компілятор (перекладач тексту в машинний код) і компонувальник (він пов'язує разом окремі функціональні секції машинного коду і створює ехе-модуль). Мова ассемблерного програмування, що включає можливість опису і використання макропідстановок (макросів), традиційно називають «макроассемблер». Серед макроассемблера самим пропрацював і зручним заслужено вважається Microsoft Macroassembler, скорочено - MASM (МАСМА). Його 32-розрядна різновид називається MASM32.

Корпорація Microsoft включає в пакети Visual C ++ і Visual Studio компілятор макроассемблера ML.EXE і компонувальник LINK.EXE, які є необхідними компонентами середовища розробки програмних додатків (IDE). Ці якісні програмні компоненти можна використовувати і самі по собі, поза згаданих середовищ програмування. Корпорація Microsoft не розглядає їх як окремі товарні продукти на ринку програмного забезпечення та не перешкоджає їх вільному безкоштовному використанню ким завгодно.

Пакет МАСМА містить безліч ресурсів, які доповнюють ML.EXE і LINK.EXE до працездатного набору підтримки розробників ассемблерних програм (Software Developer's Kit, SDK).

І, нарешті, існує безліч фірм, ініціативних груп та окремих програмістів, які створюють і навіть нерідко супроводжують всякі додаткові програмні засоби для програмування на всіляких асемблерах - і МАСМА, і nasm і fasm і всяких інших. Зрештою, фірма Intel відкрито публікує відомості про архітектуру і системі команд своїх процесорів, і на цій базі навіть одній людині під силу написати «свій асемблер», прикладів чого ми знаходимо в Інтернеті безліч.

- кошти роботи з реєстром;

Настільки великий перелік одних тільки класів програм говорить про те, що при розробці системних програм на асемблері програмісти зустрічаються з величезною кількістю особливих, нестандартних, специфічних ситуацій, для подолання яких і створюються ці інструменти.

Склад пакету МАСМА

В курсі програмування студенти знайомляться з інтегрованими середовищами розробки програмних додатків (Integrated Development Environment, IDE). Прикладами їх можуть бути QT Creator, Delphi, Kylix, Visual Studio. Всі ці середовища дозволяють створювати додатки, користуючись мовами програмування високого рівня - С, С ++, Object Pascal.

MASM32 - це не середовище розробки. Це набір ресурсів, призначений для низькорівневого програмування (тобто на рівні машинних команд процесора). Такі продукти англійською називаються «набір розробника програм» (Software Developer's Kit).

MASM32 складається, по-перше, з програм службового призначення. Найголовніші з них - це компілятор ML.EXE і компонувальник LINK.EXE. Без цих двох програм асемблерну програму виготовити взагалі неможливо. Крім того, для виготовлення працездатних під Windows програм потрібен ще ряд ресурсів - бібліотек і включення файл:

Вони все зазвичай підключаються до розроблюваної програмі одним рядком-директивою.

Як показує практика, програмування на асемблері при встановленому на комп'ютері SDK MASM32 цілком успішно ведеться із застосуванням наступного додаткового софта:

· Файлового менеджера Total Commander;

Велику роль при програмуванні на асемблері грає системна консоль Windows - CMD.EXE. Хоча на асемблері можна писати і додатки з GUI, але переважна частина ассемблерних програм - все-таки консольні. Їм просто не потрібен графічний інтерфейс, за ним втрачається суть виконуваних у програмі дій.

Для зручного виклику програм і пакетів, які входять в МАСМА, доведеться зробити деякі перенастроювання в операційній системі.

Перше, що потрібно буде зробити - це дописати в системну змінну path шляху доступу до декількох папок SDK MASM32: bin, lib, macros. Мета цієї дії - зробити можливим запуск програм МАСМ32 з будь-якої папки, а не тільки тієї, в якій вони фізично розміщені. Справа в тому, що якщо командний рядок або пакетний файл роблять спробу доступу до якогось файлу, то він (шуканий файл) спочатку шукається в поточному активної папці. Якщо він там не знаходиться, то ОС звертається до системної строкової змінної path. Цей рядок складається зі списку шлях до папки, розділених символом «;». Звідти витягуються по черзі ці шляхи і система шукає шуканий файл в одній папці з чергового шляху. Якщо десь шуканий файл знаходиться - пошук завершено успішно. Якщо система перебрала всі шляхи в path і файл НЕ виявлено, то фіксується ситуація «файл не знайдено» з висновком відповідного повідомлення.

Звідси, до речі, слід, що повідомлення «файл не знайдено» не означає, що такого файлу на комп'ютері немає зовсім. Це тільки означає, що його немає в цій папці і папках з path.

Якщо ми хочемо, щоб, наприклад, компілятор ML.EXE міг бути викликаний з вашої робочої папки, потрібно, щоб шлях d: \ masm32 \ bin потрапив в рядок path, тому що компілятор знаходиться саме в ній.

Друге, що треба буде зробити - це призначити Notepad ++ оброблювачем не тільки txt-файлів, але і файлів типу asm (вихідні файли програм на асемблері).

Фізично пакет МАСМА розгортається в папку MASM32 кореневої папки зазначеного користувачем диска, традиційно це D: \ MASM32. Слід сказати, що як встановлене додаток МАСМА в реєстрі не реєструється. Тобто пакет працездатний відразу після установки всіх його файлів.

Малюнок 4.1 -Корневая папка пакета МАСМА

Папки мають призначення: bin - основні виконувані файли пакета (* .bat, * .exe і * .dll); help - chm-файли електронної допомоги по основних компонентах пакета; include і lib - включаються inc-файли і файли бібліотек * .lib. І те, і інше забезпечує інтерфейс створюваних ассемблерних програм з ОС Windows; macros - набір заготовок і шаблонів макросів для широкого кола практичних задач .; tutorial - велика кількість готових прикладів asm-програм на найрізноманітніші теми. Придатні як для вивчення програмування на МАСМА, так і в якості заготовок для власних розробок.

Схожі статті