- MASM под Windows: быстрый старт
- Установка MASM
- Простейшая программа
- Трансляция и запуск программы
- Как это устроено
- Командный файл для упрощения запуска
- MASM for x64 (ml64.exe)
- Add an assembler-language file to a Visual Studio C++ project
- To add an assembler-language file to an existing Visual Studio C++ project
- ml64-Specific Directives
- MASM в Windows 7 (64x)
- MASM для x64 (ml64.exe) MASM for x64 (ml64.exe)
- Добавление файла ассемблерного языка в проект Visual Studio C++ Add an assembler-language file to a Visual Studio C++ project
- Добавление файла ассемблерного языка в существующий проект Visual Studio C++ To add an assembler-language file to an existing Visual Studio C++ project
- Директивы, относящиеся к ml64 ml64-Specific Directives
MASM под Windows: быстрый старт
Олег Французов
2017
В этом документе кратко описан процесс установки учебной среды на основе ассемблера MASM под ОС Windows, а также порядок работы с ней.
Установка MASM
Скачайте архив c MASM с сайта arch32.cs.msu.su.
Распакуйте архив в каталог C:\masm32 (необходимо использовать именно такой путь). Убедитесь, что в каталоге C:\masm32 оказались каталоги bin , lib , include .
Создайте где-либо в удобном месте рабочий каталог для ваших программ, например, C:\asm или D:\study\sem2 . Рабочий стол Windows или папка «Мои документы» не являются подходящими местами для рабочего каталога — проследите, чтобы в полном пути к каталогу не было русских букв или пробелов. Далее таким каталогом будет считаться C:\work .
Скачайте файл prompt.bat и положите его в ваш рабочий каталог.
Простейшая программа
Для следующего шага вам потребуется текстовый редактор, пригодный для работы с программным кодом. Заметим, что Microsoft Word или встроенный в Windows редактор WordPad являются текстовыми процессорами и для работы с программным кодом непригодны. Редактор Notepad (Блокнот) подходит для работы с текстовыми файлами (plain text), но неудобен в качестве программистского редактора — в нем отсутствует подсветка синтаксиса и другие стандартные для таких редакторов функции.
Вы можете воспользоваться вашим любимым текстовым редактором или, если вы затрудняетесь с выбором, скачать простой программистский текстовый редактор Notepad2.
Примечание: Если вы решили скачать Notepad2, при первом запуске установите ширину табуляции (Tabulator width) в значение 8 при помощи меню Settings > Tab Settings.
Создайте в вашем рабочем каталоге файл hello.asm следующего содержания:
Примечание: В Notepad2 при сохранении введите имя файла hello.asm , и подсветка синтаксиса включится автоматически.
Эта программа выводит пять раз строчку “Hello World” на экран. Для вывода текста используется макрос outstrln , который определен в файле console.inc .
Трансляция и запуск программы
Дважды щелкните по файлу prompt.bat , который вы скачали на шаге установки. Откроется окно командной строки. Убедитесь, что все сделано правильно, набрав команду dir и нажав Enter . Вы должны увидеть, что в текущем каталоге (вашем рабочем каталоге) находятся файлы hello.asm и prompt.bat :
Примечание для тех, кто никогда прежде не работал с командной строкой. Взаимодействие с ней устроено следующим образом: командная строка выводит приглашение (в примере выше это C:\work> ), далее пользователь вводит команду (выше — dir ) и нажимает клавишу Enter , после чего на экране появляется вывод команды, то есть результат ее работы.
Для запуска программы требуется ее оттранслировать. Первый шаг — запуск ассемблера MASM, который построит по исходному тексту програмы объектный файл:
Аргумент /c инструктирует ассемблер выполнить только трансляцию в объектный файл, без компоновки (которую мы выполним чуть позже). Аргумент /coff указывает формат объектного файла — COFF (Common Object File Format).
В рабочем каталоге появится файл hello.obj . Запустите компоновщик:
Аргумент /subsystem:console говорит компоновщику, что нужно построить консольное Windows-приложение.
В рабочем каталоге появится файл hello.exe . Это исполняемый файл, который уже можно запустить:
Как это устроено
Командный файл prompt.bat запускает окно командной строки и задает переменные окружения так, чтобы программы ml и link были доступны без указания пути к ним, а пути к include- и lib-файлам MASM также были известны.
Пути заданы жестко, поэтому и требовалось распаковать архив в строго определенный каталог.
Командный файл для упрощения запуска
Когда вам надоест каждый раз набирать три команды для трансляции и запуска программ, создайте такой командный файл (назвать его можно, например, mkr.bat — то есть make/run):
Использовать его можно будет следующим образом:
Несколько комментариев по устройству этого командного файла:
Команда @echo off отключает дублирование каждой исполняемой команды в окне командной строки.
Аргумент /nologo при вызове ассемблера и компоновщика убирает строчку “Copyright (C) Microsoft”, захламляющую экран.
%1 меняется на аргумент, который передан командному файлу, то есть имя программы на ассемблере (выше — hello.asm ).
n1 меняется на тот же аргумент, но без расширения (выше — hello ).
Связка && выполняет очередную команду, только если предыдущая завершилась успешно. В случае ошибок трансляции ваша программа запущена не будет.
Файл mkr.bat можно или копировать в каждый каталог, где вы планируете размещать исходные тексты программ на ассемблере, или поместить его в каталог C:\masm32\bin , и тогда выполнять его будет можно из любого каталога, при условии, что вы запустили командную строку при помощи prompt.bat .
То, что получилось в итоге — это простейшая система программирования, состоящая из транслятора (ассемблера MASM), текстового редактора (Notepad2 или иного, если вы его предпочли) и примитивной системы сборки на единственном командном файле.
Несмотря на простоту этой системы, она основывается на тех же общих принципах, что и более сложные системы программирования. Подробнее с этим вы сможете познакомиться на втором курсе.
MASM for x64 (ml64.exe)
Visual Studio includes both 32-bit and 64-bit hosted versions of Microsoft Assembler (MASM) to target x64 code. Named ml64.exe, this is the assembler that accepts x64 assembler language. The MASM command-line tools are installed when you choose a C++ workload during Visual Studio installation. The MASM tools are not available as a separate download. For instructions on how to download and install a copy of Visual Studio, see Install Visual Studio. If you do not want to install the complete Visual Studio IDE, but only want the command-line tools, download the Build Tools for Visual Studio.
To use MASM to build code for x64 targets on the command line, you must use a developer command prompt for x64 targets, which sets the required path and other environment variables. For information on how to start a developer command prompt, see Build C/C++ code on the command line.
For information on ml64.exe command line options, see ML and ML64 Command-Line Reference.
Inline assembler or use of the ASM keyword is not supported for x64 or ARM targets. To port your x86 code that uses inline assembler to x64 or ARM, you can convert your code to C++, use compiler intrinsics, or create assembler-language source files. The Microsoft C++ compiler supports intrinsics to allow you to use special-function instructions, for example, privileged, bit scan/test, interlocked, and so on, in as close to a cross-platform manner as possible. For information on available intrinsics, see Compiler Intrinsics.
Add an assembler-language file to a Visual Studio C++ project
The Visual Studio project system supports assembler-language files built by using MASM in your C++ projects. You can create x64 assembler-language source files and build them into object files by using MASM, which supports x64 fully. You can then link these object files to your C++ code built for x64 targets. This is one way to overcome the lack of an x64 inline assembler.
To add an assembler-language file to an existing Visual Studio C++ project
Select the project in Solution Explorer. On the menu bar, choose Project, Build Customizations.
In the Visual C++ Build Customization Files dialog box, check the checkbox next to masm(.targets,.props). Choose OK to save your selection and close the dialog box.
On the menu bar, choose Project, Add New Item.
In the Add New Item dialog box, select C++ file (.cpp) in the center pane. In the Name edit control, enter a new file name that has a .asm extension instead of .cpp. Choose Add to add the file to your project and close the dialog box.
Create your assembler-language code in the .asm file you added. When you build your solution, the MASM assembler is invoked to assemble the .asm file into an object file that is then linked into your project. To make symbol access easier, declare your assembler functions as extern «C» in your C++ source code, rather than using the C++ name decoration conventions in your assembler-language source files.
ml64-Specific Directives
You can use the following ml64-specific directives in your assembler-language source code that targets x64:
MASM в Windows 7 (64x)
MASM на 64x процессоре
Подскажите новичку. Нужно сделать прогу на ассемблере, а у меня стоит 64x процессор. Как написать.
Masm 32 для windows 7 64 бит
здравствуйте ,вопрос такой,воспользовашись ссылкой этого раздела установил Masm 32 ,также скачал.
Запуск кода MASM под Windows 7 x64
Понимаю, что эту тему поднимали уже сто раз, но я только начал изучать Ассемблер и вопросов у меня.
MASM для WIndows 8
ДАйте пж ссылку на MASM для Windows 8
. 11.04.13 19:11
.. 11.04.13 19:11
ERRMSG TXT 10991 19.09.95 14:04
H2INC ERR 21880 19.09.95 14:04
H2INC EXE 249344 19.09.95 14:04
PATCH EXE 76981 19.09.95 14:04
PATCH RTD 1617 19.09.95 14:04
PATCH RTP 297931 19.09.95 14:04
PENTIUM TXT 37901 19.09.95 14:04
README TXT 33269 19.09.95 14:04
SUPPORT TXT 8008 19.09.95 14:04
копируешь H2INC.ERR и H2INC.EXE в папку \MASM611\BIN, перезаписывая уже существующие файлы, затем
копируешь остальные файлы (7штук) и в папку \MASM611, перезаписывая уже существующие файлы, затем
запускаешь PATCH.EXE в папке \MASM611 и ждёшь пока пропатчится, это не займёт много времени.
Всё. Установка MASM 6.11d завершена. Патчить до 6.14 не стоит, может не заработать под DOS (ему windows необходим).
MASM для x64 (ml64.exe) MASM for x64 (ml64.exe)
Visual Studio включает в себя как 32-разрядную, так и 64-разрядную версию Microsoft Assembler (MASM) для целевого кода x64. Visual Studio includes both 32-bit and 64-bit hosted versions of Microsoft Assembler (MASM) to target x64 code. Именованный ml64.exe — это ассемблер, который принимает язык ассемблера x64. Named ml64.exe, this is the assembler that accepts x64 assembler language. Программы командной строки MASM устанавливаются при выборе рабочей нагрузки C++ во время установки Visual Studio. The MASM command-line tools are installed when you choose a C++ workload during Visual Studio installation. Средства MASM недоступны для загрузки отдельно. The MASM tools are not available as a separate download. Инструкции по скачиванию и установке копии Visual Studio см. в статье Установка Visual Studio. For instructions on how to download and install a copy of Visual Studio, see Install Visual Studio. Если вы не хотите устанавливать полную интегрированную среду разработки Visual Studio, но вам нужны только программы командной строки, скачайте средства сборки для Visual Studio. If you do not want to install the complete Visual Studio IDE, but only want the command-line tools, download the Build Tools for Visual Studio.
Чтобы использовать MASM для построения кода для платформ x64 в командной строке, необходимо использовать командную строку разработчика для целевых платформ x64, которые задают требуемый путь и другие переменные среды. To use MASM to build code for x64 targets on the command line, you must use a developer command prompt for x64 targets, which sets the required path and other environment variables. Сведения о запуске командной строки разработчика см. в разделе Сборка кода C/C++ в командной строке. For information on how to start a developer command prompt, see Build C/C++ code on the command line.
Дополнительные сведения о ml64.exe параметрах командной строки см. в разделе Справочник по языку ML и ML64 Command-Line. For information on ml64.exe command line options, see ML and ML64 Command-Line Reference.
Встроенный ассемблер или использование ключевого слова ASM не поддерживается для целевых объектов x64 и ARM. Inline assembler or use of the ASM keyword is not supported for x64 or ARM targets. Чтобы перенести код x86, использующий встроенный ассемблер для x64 или ARM, можно преобразовать код в C++, использовать встроенные функции компилятора или создать файлы исходного кода на языке ассемблера. To port your x86 code that uses inline assembler to x64 or ARM, you can convert your code to C++, use compiler intrinsics, or create assembler-language source files. Компилятор Microsoft C++ поддерживает встроенные функции, позволяющие использовать специальные инструкции, например привилегированные, битовые сканирования и тестирования, взаимоблокировки и т. д., в качестве максимально близкого к кросс-платформенному способу. The Microsoft C++ compiler supports intrinsics to allow you to use special-function instructions, for example, privileged, bit scan/test, interlocked, and so on, in as close to a cross-platform manner as possible. Сведения о доступных встроенных функциях см. в разделе встроенные функции компилятора. For information on available intrinsics, see Compiler Intrinsics.
Добавление файла ассемблерного языка в проект Visual Studio C++ Add an assembler-language file to a Visual Studio C++ project
Система проектов Visual Studio поддерживает файлы на языке ассемблера, созданные с помощью MASM в проектах C++. The Visual Studio project system supports assembler-language files built by using MASM in your C++ projects. Вы можете создавать файлы исходного кода на языке ассемблера x64 и создавать их в объектных файлах с помощью MASM, который поддерживает 64-разрядную версию. You can create x64 assembler-language source files and build them into object files by using MASM, which supports x64 fully. Затем эти файлы объектов можно связать с кодом C++, созданным для целевых платформ x64. You can then link these object files to your C++ code built for x64 targets. Это один из способов преодоления отсутствия встроенного ассемблера x64. This is one way to overcome the lack of an x64 inline assembler.
Добавление файла ассемблерного языка в существующий проект Visual Studio C++ To add an assembler-language file to an existing Visual Studio C++ project
Выберите проект в обозревателе решений. Select the project in Solution Explorer. В строке меню выберите проект, настройки сборки. On the menu bar, choose Project, Build Customizations.
В диалоговом окне Visual C++ файлы настройки сборки установите флажок для MASM (. targets,. props). In the Visual C++ Build Customization Files dialog box, check the checkbox next to masm(.targets,.props). Нажмите кнопку ОК , чтобы сохранить выбранные элементы и закрыть диалоговое окно. Choose OK to save your selection and close the dialog box.
В строке меню выберите проект, Добавить новый элемент. On the menu bar, choose Project, Add New Item.
В центральной области диалогового окна Добавление нового элемента выберите файл C++ (. cpp) . In the Add New Item dialog box, select C++ file (.cpp) in the center pane. В поле имя элемента управления изменить введите новое имя файла с расширением ASM вместо. cpp. In the Name edit control, enter a new file name that has a .asm extension instead of .cpp. Нажмите кнопку Добавить , чтобы добавить файл в проект и закрыть диалоговое окно. Choose Add to add the file to your project and close the dialog box.
Создайте код на языке ассемблера в добавленном ASM-файле. Create your assembler-language code in the .asm file you added. При сборке решения вызывается ассемблер MASM Assembler для сборки ASM-файла в объектный файл, который затем связывается с проектом. When you build your solution, the MASM assembler is invoked to assemble the .asm file into an object file that is then linked into your project. Чтобы упростить доступ к символам, объявите функции ассемблера как extern «C» в исходном коде C++ вместо использования соглашений об оформлении имен c++ в исходных файлах на языке ассемблера. To make symbol access easier, declare your assembler functions as extern «C» in your C++ source code, rather than using the C++ name decoration conventions in your assembler-language source files.
Директивы, относящиеся к ml64 ml64-Specific Directives
В исходном коде на языке ассемблера, предназначенном для x64, можно использовать следующие директивы ml64: You can use the following ml64-specific directives in your assembler-language source code that targets x64: