Microsoft Macro Assembler (MASM) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Microsoft Macro Assembler (MASM)



MASM — ассемблер для процессоров семейства x86. Первоначально был произведён компанией Microsoft для написания программ в операционной системе MS-DOS и был в течение некоторого времени самым популярным ассемблером, доступным для неё. Это поддерживало широкое разнообразие макросредств и структурированность программных идиом, включая конструкции высокого уровня для повторов, вызовов процедур и чередований (поэтому MASM — ассемблер высокого уровня). Позднее была добавлена возможность написания программ для Windows. MASM — один из немногих инструментов разработки Microsoft, для которых не было отдельных 16- и 32-битных версий.

В начале 1990-х годов альтернативные ассемблеры, вроде Borland TASM и свободного ассемблера NASM, начали отбирать часть доли рынка MASM. Однако два события в конце 1990-х позволили MASM сохранить большую часть своей доли: сначала Microsoft прекратила продавать MASM как коммерческий продукт. Во-вторых, благодаря пакету MASM32 оказалось, что программирование на MASM возможно и в среде Microsoft Windows. В 2000 году MASM 6.15 был выпущен как часть пакета разработки Visual C++ и все версии Visual C++ после 6.0 включали в себя версию MASM, равную версии Visual C++. Позже в Visual C++ 2005 появилась 64-битная версия MASM. Вместе с большим сообществом программистов MASM эти события помогли остановить снижение популярности MASM по сравнению с другими ассемблерами. Сегодня MASM продолжает использоваться на платформе Win32, несмотря на конкуренцию с новыми продуктами, такими как NASM, FASM, TASM, HLASM.

Есть много развивающихся проектов для разработки программного обеспечения, которые поддерживают MASM, включая интегрированные среды разработки (ИСР), например RadASM.http://ru.wikipedia.org/wiki/%D0%9E%D1%82%D0%BB%D0%B0%D0%B4%D1%87%D0%B8%D0%BA

Версии MASM. Хотя MASM больше не является коммерческим продуктом, Microsoft продолжает поддерживать исходный код, используемый и в других продуктах Microsoft. С тех пор как Microsoft прекратила продавать MASM отдельно, было выпущено несколько обновлений к производственной линии MASM 6.x (последнее обновление — версия 6.15, которая была включена в Visual C++ 6.0), а после этого — MASM 7.0 в составе Visual C++.NET 2002, MASM 7.1 в составе Visual C++.NET 2003, MASM 8.0 в составе Visual C++ 2005 и MASM 9.0 в составе Visual C++ 2008, поддерживающие платформу x64.

Flat assembler (FASM)

FASM - свободно распространяемый многопроходной ассемблер, написанный Томашем Грыштаром (польск. Tomasz Grysztar). FASM написан на самом себе, обладает небольшими размерами и очень высокой скоростью компиляции, имеет богатый и ёмкий макро-синтаксис, позволяющий автоматизировать множество рутинных задач. Поддерживаются как объектные форматы, так и форматы исполняемых файлов. Это позволяет в большинстве случаев обойтись без компоновщика. В остальных случаях нужно использовать сторонние компоновщики, поскольку таковой вместе с FASM не распространяется.

Компиляция программы в FASM состоит из 2 стадий: препроцессирование и ассемблирование. На стадии препроцессора раскрываются все макросы, символические константы, обрабатываются директивы препроцессора. В отличие от стадии ассемблирования, препроцессирование выполняется только 1 раз. Смешивание стадий ассемблирования и препроцессирования — распространённая ошибка начинающих.

На стадии ассемблирования определяются адреса меток, обрабатываются условные директивы, раскрываются циклы и генерируется собственно программа. FASM — многопроходной ассемблер, что позволяет ему делать некоторую оптимизацию, например, генерирование короткого перехода на метку вместо длинного. Во время прохода компилятор не всегда может вычислить выражение в условных директивах. В этом случае он делает какой-нибудь выбор и пытается скомпилировать дальше. Благодаря тому, что адреса меток, вычисленные на N-ном проходе, используются на N+1-проходе, этот процесс обычно сходится.

Используется Intel-синтаксис записи инструкций. Единственное существенное отличие от формата, принятого в других ассемблерах (MASM, TASM в режиме совместимости с MASM) — значение ячейки памяти всегда записывается в квадратных скобках - [label_name], а просто label_name означает адрес (то есть порядковый номер) ячейки. Это позволяет обходиться без ключевого слова offset. Также в FASM при переопределении размера операнда вместо byte ptr пишется просто byte, вместо word ptr — word и т. д. Не позволяется использовать несколько квадратных скобок в одном операнде, таким образом вместо [bx][si] необходимо писать [bx+si]. Эти изменения синтаксиса привели к более унифицированному и лёгкому для чтения коду.

Использование FASM поддерживают многие специализированные ИСР, такие как RadASM, WinAsm Studio, Fresh (IDE) (специально спроектированный под FASM) и т. д.

NASM (Netwide Assembler)

NASM — свободный (LGPL и лицензия BSD) ассемблер для архитектуры Intel x86. Используется для написания 16-, 32- и 64-битных программ.

NASM был создан Саймоном Тэтхемом совместно с Юлианом Холлом и в настоящее время развивается небольшой командой разработчиков на SourceForge.net. Первоначально он был выпущен согласно его собственной лицензии, но позже эта лицензия была заменена на GNU LGPL после множества проблем, вызванных выбором лицензии. Начиная с версии 2.07 лицензия заменена на «упрощённую BSD» (BSD из 2 пунктов).

NASM может работать на платформах, отличных от x86, таких как SPARC и PowerPC, однако код он генерирует только для x86 и x86-64.

NASM успешно конкурирует со стандартным в Linux- и многих других UNIX-системах ассемблером gas. Считается, что качество документации у NASM выше. Кроме того, ассемблер gas по умолчанию[5] использует AT&T-синтаксис, ориентированный на процессоры не от Intel, в то время как NASM использует вариант традиционного для x86-ассемблера Intel-синтаксиса; Intel-синтаксис используется всеми ассемблерами для Windows-систем, например MASM, TASM, FASM.

NASM компилирует программы под различные операционные системы в пределах x86-совместимых процессоров. Находясь в одной операционной системе, можно беспрепятственно откомпилировать исполняемый файл для другой.

Компиляция программ в NASM состоит из двух этапов. Первый — ассемблирование, второй — компоновка. На этапе ассемблирования создаётся объектный код. В нём содержится машинный код программы и данные, в соответствии с исходным кодом, но идентификаторы (переменные, символы) пока не привязаны к адресам памяти. На этапе компоновки из одного или нескольких объектных модулей создаётся исполняемый файл (программа). Операция компоновки связывает идентификаторы, определённые в основной программе, с идентификаторами, определёнными в остальных модулях, после чего всем идентификаторам даются окончательные адреса памяти или обеспечивается их динамическое выделение.

Для компоновки объектных файлов в исполняемые в Windows можно использовать свободный бесплатно распространяемый компоновщик alink, а в Linux — компоновщик ld, который есть в любой версии этой операционной системы.

В NASM используется Intel-синтаксис записи инструкций.

Turbo Assembler (TASM)

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

TASM до сих пор используется для обучения программированию на ассемблере под архитектуру x86. Многие находят его очень удобным и продолжают его использовать, расширяя набором дополнительных макросов.

Пакет TASM поставляется вместе с компоновщиком Turbo Linker и порождает код, который можно отлаживать с помощью Turbo Debugger.

По умолчанию TASM работает в режиме совместимости с другим распространённым ассемблером — MASMi, то есть TASM умеет транслировать исходники, разработанные под MASM. Кроме того, TASM имеет режим IDEAL, улучшающий синтаксис языка и расширяющий его функциональные возможности.

GoAsm

GoAsm — ассемблер для процессоров семейства x86, созданный Джереми Гордоном (англ. Jeremy Gordon) для написания программ для операционных систем семейства Windows, способен создавать 32- и 64-битных версий, а также программы с поддержкой Unicode. GoAsm является проприетарным ПО и распространяется в бинарном формате.

GoAsm создавался с целью создать компилятор с простым и ясным синтаксисом, производящий как можно более компактный код, скромными потребностями для обработки скриптов и возможностью добавления расширений. Особенности:

GoAsm не создаёт 16-разрядный код и способен работать только в «плоском» режиме (без сегментов), благодаря этому синтаксис очень прост.

В качестве формата выходных данных используется COFF (Portable Executable format), и для создания исполняемых файлов необходимо использовать дополнительный компоновщик (например — GoLink или ALINK) и компилятор ресурсов (GoRC).

GoAsm способен создавать файлы в формате Unicode (UTF-16 или UTF-8).

Несмотря на то что используется Intel-синтаксис, синтаксис GoAsm несовместим ни с одним из существующих компиляторов. GoAsm использует препроцессор сходный по синтаксису с препроцессором языка программирования C. В GoAsm необходимо использовать квадратные скобки для чтения и записи памяти. Для того чтобы получить смещение необходимо записать:

MOV EBX,ADDR wParam

MOV EBX,OFFSET wParam

А для того чтобы получить доступ к памяти:

MOV EBX,[wParam]

Тема 3.6 Среды разработки

RadASM

RadASM — бесплатная среда разработки программного обеспечения для ОС Windows и не только, изначально предназначенная для написания программ на языке ассемблера.

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

Создана программистом Ketil Olsen (KetilO).

Возможности:

Есть русифицированный интерфейс.

Подсветка синтаксиса. Это выделение синтаксических конструкций текста с использованием различных цветов, шрифтов и начертаний. Обычно применяется в текстовых редакторах для облегчения чтения исходного текста, улучшения визуального восприятия. Часто применяется при публикации исходных кодов в Интернете.

Хорошая интеграция справочной системы

Проекты (собственный.rap формат)

Редактор ресурсов

Поддержка команд Make. Это утилита, автоматизирующая процесс преобразования файлов из одной формы в другую. Чаще всего это компиляция исходного кода в объектные файлы и последующая компоновка в исполняемые файлы или библиотеки.

Окно вывода.

Поддержка отладки программ. Имеется отладчик (дебаггер, англ. debugger), это компьютерная программа, предназначенная для поиска ошибок в других программах, ядрах операционных систем, SQL-запросах и других видах кода. Отладчик позволяет выполнять пошаговую трассировку, отслеживать, устанавливать или изменять значения переменных в процессе выполнения кода, устанавливать и удалять контрольные точки или условия остановки и т.д.

Полная настройка ИСР.

Есть окно вывода.

Макросы, (от англ. macros, множественное число от macro) — программный объект, который во время вычисления заменяется на новый объект, создаваемый определением макроса на основе его аргументов, затем выражается обычным образом.

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

Поддержка сниппетов. Сниппет (англ. snippet — фрагмент, отрывок) — программный термин, обозначающий небольшой фрагмент исходного кода или текста, пригодного для повторного использования. Сниппеты не являются заменой процедур, функций или других подобных понятий структурного программирования. Они обычно используются для более лёгкой читаемости кода функций, которые без их использования выглядят слишком перегруженными деталями, или для устранения повторения одного и того же общего участка кода.

Поддержка текстовых ссылок.

Поддержка плагинов. Плагин (от англ. plug-in) — независимо компилируемый программный модуль, динамически подключаемый к основной программе, предназначенный для расширения и/или использования её возможностей. Также может переводиться как «модуль». Плагины обычно выполняются в виде разделяемых библиотек.

Есть примеры использования.

Есть возможность настроить под другие языки программирования.

Поддерживаемые ассемблеры:

MASM

FASM

NASM

TASM

GoAsm

Скриншот ИСР:

WinAsm Studio

WinAsm Studio — бесплатная ИСР для Windows и DOS, изначально предназначенная для написания программ на языке ассемблера.

Создана программистом Антонисом Киприану.

Возможности

Подсветка синтаксиса.

Автодополнение кода.

Менеджер проектов.

Полная настройка ИСР.

Есть окно вывода.

Поддержка плагинов.

Редактор ресурсов.

Есть примеры использования.

[Поддерживаемые ассемблеры. По умолчанию, среда разработки ориентирована на работу с MASM, но также возможно и подключение других ассемблеров, к примеру FASM.

Надстройка для подключения ассемблера FASM позволяет выполнять последовательность команд (до 5), что позволяет организовать поддержку практически любого ассемблера.

Также данная надстройка позволяет выполнять пакетные файлы, самокомпилирующиеся пакетные файлы и вызывать утилиты MAKE, что снимает ограничения на использование других компиляторов. Консольные сообщения при этом могут перенаправляться в окно вывода для удобства последующего анализа ошибок.

Скриншот ИСР:

Fresh

Fresh —ИСР на визуальном языке ассемблера для Microsoft Windows со встроенным FASM.

Поддерживает сборку программ для тех же платформ, что и FASM: DOS, Linux, FreeBSD.

В мае 2005 года разработка Fresh была приостановлена[2] и возобновлена лишь через 5 лет в ноябре 2010 года, когда была выпущена версия Fresh 2.0.

Разработчики

Джон Фаунд — основоположник проекта, написавший значительную часть кода последних версий;

Фредрик Классон (scientica);

Томми Лиллехаген;

Виктор Ло (roticv);

Юнус Сина Гюльшен (VeSCeRa);

Матьяш Тымек (decard).


Литература

1. Юров В.И. Assembler. Практикум. 2-е изд. – СПб. – Питер, 2006. – 399с.

2. Трамперт В. AVR-RISC микроконтроллеры. Пер. с нем. – К.: “МК-Пресс”, 2006. – 464с.

3. Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2007. – 240с.

4. Солонина А.И. и др. Алгоритмы и процессоры цифровой обработки сигналов.– СПб.: БХВ-Петербург, 2001, 464 с.

5. Корнеев В.В., Киселев А.В. Современные микропроцессоры. СпБ.:БХВ-Петербург, 2003, 448с.

6. Магда Ю. Ассемблер для процессоров Intel Pentium. – СПб. – Питер, 2006. – 410с.

7. Калашников О.А. Ассемблер? Это просто! Учимся программировать. – Спб.: БХВ=Петербург, 2006. – 384с.

8. Иванова В.Г., Тяжев А.И. Цифровая обработка сигналов и сигнальные процессоры. Самара: ООО Офорт, 2008, 262 с.

Программное обеспечение для выполнения лабораторных работ:

ИСР AVR Studio.

ИСР CCS для C2x.

Инструментарий C6xTools.

 



Поделиться:


Последнее изменение этой страницы: 2021-02-07; просмотров: 287; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.220.64.128 (0.055 с.)