- •Лабораторная работа № 4
- •Цель работы
- •Краткие сведения из теории На что опирается программирование на ассемблере
- •Состав пакета масм
- •Последовательность создания исполняемого ехе-модуля на масм
- •Режимы компоновки
- •Макроопределение и макрорасширение
- •Параметризация макросов
- •Уникальность меток при макрорасширениях
- •Макроконстанты
- •Макропеременные и макровычисления
- •Увидеть работу макрогенератора
- •Расширенный листинг
- •3. Порядок выполнения работы:
- •3.1 Создание консольной программы
- •3.2 Создание программы с графическим интерфейсом
- •3.3 Использование шаблона простой программы
- •3.5 Макроопределение и макрорасширение
- •3.6 Повторение строк repeat
- •3.7 Цикл for
- •3.8 Анализ расширенного листинга программы
- •4. Содержание отчёта
- •5. Вопросы к защите
- •Самостоятельная работа по лабораторной работе № 4 «Технология создания ассемблерных программ»
- •1. Установка масм32
- •2. Настройка переменной path
- •7. Превращение участка кода в макрос
- •8. Просмотр работы макрогенератора
- •9. Параметризация макроса
- •10. Локализация внутренних меток в макросах
- •11. Макроимена и макропеременные
- •12. Превратить исходный текст в макрос
- •13. Ручное макрорасширение
- •14. Наблюдение результата работы макрогенератора
Лабораторная работа № 4
Технология создания ассемблерных программ.
Цель работы
- освоить технику создания программ в 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. Наиболее успешной следует считать деятельность группы Стива Хатчисона (Австралия), которые бесплатно распространяют и поддерживают пакет МАСМ, доступный в Сети по адресу http://www.МАСМ.com/masmdl.htm для скачивания как минимум с семи зеркальных серверов.
Пакет МАСМ содержит множество ресурсов, которые дополняют ML.EXE и LINK.EXE до работоспособного набора поддержки разработчиков ассемблерных программ (Software Developer’s Kit, SDK).
И, наконец, существует множество фирм, инициативных групп и отдельных программистов, которые создают и даже нередко сопровождают всякие дополнительные программные средства для программирования на всевозможных ассемблерах – и МАСМ, и nasm и fasm и всяких иных. В конце концов, фирма Intel открыто публикует сведения об архитектуре и системе команд своих процессоров, и на этой базе даже одному человеку под силу написать «свой ассемблер», примеров чему мы находим в Интернете множество.
Говоря здесь о «дополнительных программных средствах», мы имеем в виду (по версии сайта http://www.wasm.ru/) такой (неполный) список классов программ:
образовательные программы;
SDK и IDE;
редакторы ресурсов;
дизассемблеры;
отладчики;
модификаторы;
инсталляторы;
распаковщики;
упаковщики;
средства криптографии;
средства работы с реестром;
редакторы байт-кода…
Столь обширный перечень одних только классов программ говорит о том, что при разработке системных программ на ассемблере программисты встречаются с огромным множеством особых, нестандартных, специфических ситуаций, для преодоления которых и создаются эти инструменты.
