Создание проекта консольного или оконного Windows-приложения не отличается от рассмотренного для языков программирования Си и C++.
После того, как в Visual Studio появилось окно проекта (в левой части появившегося окна отображается Обозреватель решений), для добавления нового файла программы в проект выбираем по правой кнопке мыши на папке Файлы исходного кода меню Добавить->Создать элемент.
В появившемся окне выбираем Файл C++ (.cpp), задаем имя файла и вручную добавляем к нему расширение asm. Нажимаем кнопку Добавить.
В появившемся окне набираем текст программы. В качестве примера можно использовать следующий текст:
.MODEL FLAT, STDCALL
.STACK 4096
.DATA
MB_OK EQU 0
STR1 DB "Моя первая программа",0
STR2 DB "Привет всем!",0
HW DD ?
EXTERN MessageBoxA@16:NEAR
.CODE
START:
PUSH MB_OK
PUSH OFFSET STR1
PUSH OFFSET STR2
PUSH HW
CALL MessageBoxA@16
RET
END START
Далее необходимо сообщить среде разработки, что данный файл является программой на языке ассемблера, и для корректного включения его в проект требуется использовать Microsoft Macro Assembler. Для этого выбираем для проекта (по правой клавише мыши) опцию Настройки построения.
В появившемся окне ставим галочку для masm (Microsoft Macro Assembler) и нажимаем OK.
Теперь нужно проверить, что для файла на языке ассемблера установился соответствующий инструмент сборки. По правой кнопке мыши для файла с расширением .asm выбираем опцию Свойства.
В появившемся окне для выбранного файла отмечаем инструмент сборки Microsoft Macro Assembler.
Для построения проекта выбираем меню Отладка->Построить решение.
В случае успешного построения в нижней части окна отображается Построение: успешно 1.
Для запуска приложения выбираем меню Отладка->Начать отладку.
Результат выполнения программы:
Изменить тип приложения с консольного на оконное
Чтобы убрать консоль (поменять тип приложения с консольного на оконное, или наоборот) необходимо обратиться к меню Свойства проекта, вызванного по правой кнопке мыши.
В появившемся окне выбрать раздел Компоновщик->Система, и в разделе Подсистема поменять тип с Консоль на Windows (или наоборот).
Повторная сборка и запуск программы на выполнения выдадут следующий результат (консоли нет):
Подсветка синтаксиса языка ассемблера
Для того, чтобы включить подсветку синтаксиса языка ассемблера в Microsoft Visual Studio Express 2010 необходимо загрузить файл usertype и распаковать его в папку
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE
Для подключения подсветки синтаксиса выбираем меню Сервис->Параметры
В появившемся окне выбрать Текстовый редактор->Расширение файла и вручную добавляем расширение asm. Нажимаем кнопку Добавить, затем - OK.
После перезапуска Microsoft Visual Studio Express 2010 подсветка синтаксиса языка ассемблера будет активна.
У меня Visual studio 2010 стоит на виртуальной машине Vmware 16 проект не компилируется в первой стоке .686P считает ошибкой "Требуется объявление" ну заодно символ @ считает неверной лексемой но это наверное из-за первой
Виртуальные машины — моё слабое место
Елена, большое Вам спасибо за этот очень полезный и прекрасно организованный материал. У меня та же проблема, что и пользователя Шурик. В точности такое сообщение. Тестирую в Visual studio 2013, Windows 7, не на виртуальной машине. Посмотрел, внутри USERTYPE.DAT действительно нет лексем "@" и ".686P". Но если заменить на, скажем, ".686"(лексема есть в файле) то тоже не работает. Попытался вручную вписать лексемы "@" и ".686P" в файл USERTYPE.DAT, но это не помогло. Если не подключать плагин подсветки синтаксиса, то все прекрасно работает. Поскажите, пожалуйста, в какую сторону посмотреть.
Данный плагин проверялся в VS 2010. С тех пор много воды утекло.
И я уже очень давно не использовала ассемблер.
Насколько я знаю, сейчас есть современные средства подсветки синтаксиса типа AsmDude. Но сама не устанавливала.
Спасибо, Елена!
Очень Круто! Благодарю!
Класс!То,что надо!Елена, вопрос по размеру программы-можно ее как-то уменьшить?Дело в том,что на си такая весит два-три килобайта
Сложный вопрос.
Можно скомпилировать Release-версию вместо Debug.
Но у меня на ассемблере Release-версия этой программы занимает 4кБ, а Debug-версия — 10кБ.
Компилятор — Visual Studio 2017.
В Си — другие цифры: Release — 9кБ, Debug — 37кБ.
Елена!
А как в вижуале вывести на экран десятичное число?
В турбо асме это делалось через прерывания дос, а как в масме через вижуал?
Или проще передавать в модуль на яву (например с++), откуда выводить стандартными функциями?
Может есть способ как-то попроще, типа того как Вы выводите здесь строки?
Спасибо.
Когда требовалось — переводила в строковое представление, а затем выводила стандартными функциями.
Стандартная функция типа этой?
MessageBoxA@16
А как число в строку перевести на масме?
В конспекте есть примеры.
Советуете скачать конспект?
Там свежее инфа по асму, чем на сайте?
Или выборочно?
На сайте просто не все выложено.
Боже, как здорово! Я долго искал именно как в Вижуал Студии на асме прогать. Спасибо огроооомное, друг!
Статья супер!) а у Вас нету самоучителя хорошего по синтаксису ассемблера? или расшифровка что делает каждая строка кода?
Спасибо за отзыв, Сергей!
Есть целый конспект по программированию на ассемблере.
Скачивайте!
Сейчас, к сожалению, указанный курс снят, а конспекты остались.
Большое спасибо! Пригодилось.
Полезная статья! Кстати, проверил и на 2005 тоже работает!
Да, в Visual Studio 2013 тоже работает. Только там меню Настройки построения… называется Зависимости сборки -> Настройки сборки.
и добавлять в другое место: …. 12.0\Common7\IDE
Благодарю за статью)
Огромное СПАСИБО )))