Создание проекта на языке ассемблера в Microsoft Visual Studio Express 2010

Создание проекта на языке ассемблера в Microsoft Visual Studio Express 2010

Создание проекта консольного или оконного Windows-приложения не отличается от рассмотренного для языков программирования Си и C++.

После того, как в Visual Studio появилось окно проекта (в левой части появившегося окна отображается Обозреватель решений), для добавления нового файла программы в проект выбираем по правой кнопке мыши на папке Файлы исходного кода меню Добавить->Создать элемент.
Microsoft Bisual StudioВ появившемся окне выбираем Файл C++ (.cpp), задаем имя файла и вручную добавляем к нему расширение asm. Нажимаем кнопку Добавить.
Проект на языке ассемблера в Visual Studio

В появившемся окне набираем текст программы. В качестве примера можно использовать следующий текст:

.686P
.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.
Microsoft Macro AssemblerТеперь нужно проверить, что для файла на языке ассемблера установился соответствующий инструмент сборки. По правой кнопке мыши для файла с расширением .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.

Добавление расширения файла asmРасширение файла asmПосле перезапуска Microsoft  Visual Studio Express 2010 подсветка синтаксиса языка ассемблера будет активна.

Назад

23 комментария к “Создание проекта на языке ассемблера в Microsoft Visual Studio Express 2010”

  1. Шурик

    У меня Visual studio 2010 стоит на виртуальной машине Vmware 16 проект не компилируется в первой стоке .686P считает ошибкой "Требуется объявление" ну заодно символ @ считает неверной лексемой но это наверное из-за первой

      1. Василий

        Елена, большое Вам спасибо за этот очень полезный и прекрасно организованный материал. У меня та же проблема, что и пользователя Шурик. В точности такое сообщение. Тестирую в Visual studio 2013, Windows 7, не на виртуальной машине. Посмотрел, внутри USERTYPE.DAT действительно нет лексем "@" и ".686P". Но если заменить на, скажем, ".686"(лексема есть в файле) то тоже не работает. Попытался вручную вписать лексемы "@" и ".686P" в файл USERTYPE.DAT, но это не помогло. Если не подключать плагин подсветки синтаксиса, то все прекрасно работает. Поскажите, пожалуйста, в какую сторону посмотреть.

        1. Елена Вставская

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

  2. Станислав

    Класс!То,что надо!Елена, вопрос по размеру программы-можно  ее как-то уменьшить?Дело в том,что на си такая  весит  два-три килобайта

    1. Елена Вставская

      Сложный вопрос.
      Можно скомпилировать Release-версию вместо Debug.
      Но у меня на ассемблере Release-версия этой программы занимает 4кБ, а Debug-версия — 10кБ.
      Компилятор — Visual Studio 2017.
      В Си — другие цифры: Release — 9кБ, Debug — 37кБ.

  3. Елена!

    А как в вижуале вывести на экран десятичное число?

    В турбо асме это делалось через прерывания дос, а как в масме через вижуал?

    Или проще передавать в модуль на яву (например с++), откуда выводить стандартными функциями?

    Может есть способ как-то попроще, типа того как Вы выводите здесь строки?

    Спасибо.

    1. Елена Вставская

      Когда требовалось — переводила в строковое представление, а затем выводила стандартными функциями.

      1. Стандартная функция типа этой?

        MessageBoxA@16

         

        А как число в строку перевести на масме?

          1. Советуете скачать конспект?

            Там свежее инфа по асму, чем на сайте?

            Или выборочно?

          2. Елена Вставская

            На сайте просто не все выложено.

  4. Сергей

    Боже, как здорово! Я долго искал именно как в Вижуал Студии на асме прогать. Спасибо огроооомное, друг!

  5. Сергей

    Статья супер!) а у Вас нету самоучителя хорошего по синтаксису ассемблера? или расшифровка что делает каждая строка кода?

    1. Спасибо за отзыв, Сергей!

      Есть целый конспект по программированию на ассемблере.

      Скачивайте!

      Сейчас, к сожалению, указанный курс снят, а конспекты остались.

       

    1. Да, в Visual Studio 2013 тоже работает. Только там меню Настройки построения… называется Зависимости сборки -> Настройки сборки.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх